.github/workflows | ||
examples | ||
test | ||
action.yml | ||
Dockerfile | ||
entrypoint.sh | ||
LICENSE.txt | ||
README.md |
DNSControl Action
Deploy your DNS configuration using GitHub Actions using DNSControl.
Usage
These are the three relevant sub commands to use with this action.
check
Run the action with the 'check' argument in order to check and validate the dnscontrol.js
file. This action does not communicate with the DNS providers, hence does not require
any secrets to be set.
name: Check
on: pull_request
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: DNSControl check
uses: koenrh/dnscontrol-action@master
with:
args: check
preview
Run the action with the 'preview' argument to check what changes need to be made. It prints out what DNS records are expected to be created, modified or deleted. This action requires the secrets for the specified DNS providers.
name: Preview
on: pull_request
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: DNSControl preview
uses: koenrh/dnscontrol-action@master
env:
CLOUDFLARE_API_KEY: ${{ secrets.CLOUDFLARE_API_KEY }}
CLOUDFLARE_API_USER: ${{ secrets.CLOUDFLARE_API_USER }}
with:
args: preview
This is the action you probably want to run for each branch so that proposed changes
could be verified before an authorized person merges these changes into master
.
push
Run the action with the 'push' arugment to publish the changes to the specified DNS providers.
Running the action with the 'push' argument will publish the changes with the
specified DNS providers. The example workflow depicted below contains a filtering
pattern so that it only runs on the master
branch.
name: Push
on:
push:
branches:
- master
jobs:
push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: DNSControl push
uses: koenrh/dnscontrol-action@master
env:
CLOUDFLARE_API_KEY: ${{ secrets.CLOUDFLARE_API_KEY }}
CLOUDFLARE_API_USER: ${{ secrets.CLOUDFLARE_API_USER }}
with:
args: push
Secrets
Depending on the DNS providers that are used, this action requires secrets to be set.
Cloudflare
CLOUDFLARE_API_USER
CLOUDFLARE_API_KEY
CLOUDFLARE_ACCOUNT_ID
(optional)CLOUDFLARE_ACCOUNT_NAME
(optional)
DigitalOcean
DIGITALOCEAN_OAUTH_TOKEN
DNSimple
DNSIMPLE_ACCOUNT_ACCESS_TOKEN
Gandi
GANDI_API_KEY
Google CLOUD DNS
GOOGLE_CLOUD_PROJECT_ID
GOOGLE_CLOUD_PRIVATE_KEY_ID
GOOGLE_CLOUD_PRIVATE_KEY
GOOGLE_CLOUD_CLIENT_EMAIL
GOOGLE_CLOUD_CLIENT_ID
GOOGLE_CLOUD_CLIENT_X509_CERT_URL
Linode
LINODE_ACCESS_TOKEN
Name.com
NAME_COM_API_USER
NAME_COM_API_KEY
NAME_COM_API_URL
(optional)
Namecheap
NAMECHEAP_API_USER
NAMECHEAP_API_KEY
NAMECHEAP_BASE_URL
(optional)
NS1
NSONE_API_KEY
OVH
OVH_APP_KEY
OVH_APP_SECRET_KEY
OVH_CONSUMER_KEY
Amazon Route 53
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
(optional)
SoftLayer
SOFTLAYER_USERNAME
SOFTLAYER_API_KEY
Vultr
VULTR_TOKEN