Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/solvaholic/octodns-sync
GitHub Action to test and deploy DNS settings with OctoDNS
https://github.com/solvaholic/octodns-sync
action github-actions
Last synced: 4 months ago
JSON representation
GitHub Action to test and deploy DNS settings with OctoDNS
- Host: GitHub
- URL: https://github.com/solvaholic/octodns-sync
- Owner: solvaholic
- License: mit
- Created: 2020-03-02T12:45:21.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2023-10-27T21:55:52.000Z (over 1 year ago)
- Last Synced: 2024-10-31T10:43:35.670Z (4 months ago)
- Topics: action, github-actions
- Language: Shell
- Homepage:
- Size: 199 KB
- Stars: 28
- Watchers: 4
- Forks: 15
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# octodns-sync
This action runs `octodns-sync` from [octodns/octodns](https://github.com/octodns/octodns) to deploy your DNS config to any cloud.
octodns allows you to manage your DNS records in a portable format and publish changes across different DNS providers. It is extensible and customizable.
When you manage your octodns DNS configuration in a GitHub repository, this [GitHub Action](https://help.github.com/actions/getting-started-with-github-actions/about-github-actions) allows you to test and publish your changes automatically using a [workflow](https://help.github.com/actions/configuring-and-managing-workflows) you define.
## Example workflow
```yaml
name: octodns-syncon:
# Deploy config whenever DNS changes are pushed to main.
push:
branches:
- main
paths:
- '*.yaml'jobs:
publish:
name: Publish DNS config from main
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.10'
- run: pip install -r requirements.txt
- uses: solvaholic/octodns-sync@main
with:
config_path: public.yaml
doit: '--doit'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.route53_aws_key_id }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.route53_aws_secret_access_key }}
```## Inputs
### Secrets
To authenticate with your DNS provider, this action uses
[encrypted secrets](https://help.github.com/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#about-encrypted-secrets)
you've configured on your repository. For example, if you use Amazon
Route53, [create these secrets](https://help.github.com/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets)
on the repository where you store your DNS configuration:```text
"route53-aws-key-id": "YOURIDGOESHERE"
"route53-aws-secret-access-key": "YOURKEYGOESHERE"
```Then include them as environment variables in your workflow. For example:
```yaml
env:
AWS_ACCESS_KEY_ID: ${{ secrets.route53-aws-key-id }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.route53-aws-secret-access-key }}
```### `config_path`
Path, relative to your repository root, of the config file you would like octodns to use.
Default `"public.yaml"`.
### `doit`
Really do it? Set "--doit" to do it; Any other string to not do it.
Default `""` (empty string).
### `force`
Run octodns-sync in force mode? Set "Yes" to do it.
Default `"No"`.
### `add_pr_comment`
Add plan as a comment, when triggered by a pull request? Set "Yes" to do it.
Default `"No"`.
If you would like to add the plan `octodns-sync` generates as a pull request comment, be sure to also read [_Add pull request comment_](#add-pull-request-comment) below.
### `pr_comment_token`
Provide a token to use, if you set `add_pr_comment` to "Yes".
Default `"Not set"`.
### `zones`
Space separated list of zones to sync, leave empty to sync all zones in the config file.
Default: `""` (empty string)
## Outputs
### plan
If you have configured `plan_outputs` for **octodns**, PlanHtml or PlanMarkdown output will be written to `$GITHUB_WORKSPACE/octodns-sync.plan`.
For convenience, this file is output by this action as the `plan` output so you may use it in subsequent steps.
### log
`octodns-sync` does not write its output to the workflow run log. Its output will be written to `$GITHUB_WORKSPACE/octodns-sync.log`.
For convenience, this file is output by this action as the `log` output so you may use it in subsequent steps.
### Add pull request comment
If you would like this action to add the `octodns-sync` plan to a pull request comment, configure `plan_outputs` in your **octodns** configuration, for example `public.yml`:
```yaml
manager:
plan_outputs:
html:
class: octodns.provider.plan.PlanHtml
```Then configure your workflow to run this action on the `pull_request` event, set `add_pr_comment` to "Yes", and provide an API token. For example:
```yaml
on:
pull_request:
jobs:
test:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.10'
- run: pip install -r requirements.txt
- uses: solvaholic/octodns-sync@main
with:
config_path: public.yaml
add_pr_comment: 'Yes'
pr_comment_token: '${{ github.token }}'
```Please note: This configuration will add a new comment to the pull request each time it's triggered. To find out how to change that, check out [issue #41](https://github.com/solvaholic/octodns-sync/issues/41) and **[docs/add_pr_comment.md](docs/add_pr_comment.md)**.