Deploy your DNS configuration using GitHub Actions using DNSControl.
Go to file
2020-02-15 16:58:25 +01:00
.github/workflows Fix bats and shellcheck steps 2019-10-12 17:41:07 +02:00
examples Update version tag in README and examples 2020-02-15 16:58:25 +01:00
test Add support for Cloudflare API token 2020-01-03 12:13:48 +01:00
action.yml Add support for Cloudflare API token 2020-01-03 12:13:48 +01:00
Dockerfile Upgrade DNSControl to v2.11 2020-02-15 16:33:59 +01:00
entrypoint.sh Remove unnecessary trailing commas 2020-02-15 16:55:06 +01:00
LICENSE.txt First commit. 2019-01-05 12:24:28 +01:00
README.md Update version tag in README and examples 2020-02-15 16:58:25 +01:00

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 dnsconfig.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@v2.11
        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@v2.11
        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@v2.11
        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.

Azure DNS

Documentation

  • AZURE_SUBSCRIPTION_ID
  • AZURE_RESOURCE_GROUP
  • AZURE_TENANT_ID
  • AZURE_CLIENT_ID
  • AZURE_CLIENT_SECRET

Cloudflare

Documentation

  • CLOUDFLARE_API_USER
  • CLOUDFLARE_API_KEY
  • CLOUDFLARE_ACCOUNT_ID (optional)
  • CLOUDFLARE_ACCOUNT_NAME (optional)

DigitalOcean

Documentation

  • DIGITALOCEAN_OAUTH_TOKEN

DNSimple

Documentation

  • DNSIMPLE_ACCOUNT_ACCESS_TOKEN

Gandi

Documentation

  • GANDI_API_KEY

Gandi V5

Documentation

  • GANDI_V5_API_KEY
  • GANDI_V5_SHARING_ID

Google CLOUD DNS

Documentation

  • 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

Documentation

  • LINODE_ACCESS_TOKEN

Name.com

Documentation

  • NAME_COM_API_USER
  • NAME_COM_API_KEY
  • NAME_COM_API_URL (optional)

Namecheap

Documentation

  • NAMECHEAP_API_USER
  • NAMECHEAP_API_KEY
  • NAMECHEAP_BASE_URL (optional)

NS1

Documentation

  • NSONE_API_KEY

OVH

Documentation

  • OVH_APP_KEY
  • OVH_APP_SECRET_KEY
  • OVH_CONSUMER_KEY

Amazon Route 53

Documentation

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN (optional)

SoftLayer

Documentation

  • SOFTLAYER_USERNAME
  • SOFTLAYER_API_KEY

Vultr

Documentation

  • VULTR_TOKEN