From 534c78f7c4f3725467e5b707add1611270165e98 Mon Sep 17 00:00:00 2001 From: Tom Limoncelli Date: Sun, 7 May 2023 11:52:07 -0400 Subject: [PATCH] Convert StackExchange/dnscontrol to GitHub Actions (#2314) Co-authored-by: Tom Limoncelli Co-authored-by: Richard <20459042+SignalRichard@users.noreply.github.com> --- .github/workflows/build.yml | 206 ++++++++++++++++++------------------ 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26ce5d865..cc013b54f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,8 @@ jobs: run: | go install gotest.tools/gotestsum@latest gotestsum --junitfile ${TEST_RESULTS}/gotestsum-report.xml -- $PACKAGE_NAMES + - name: Enforce Go Formatted Code + run: "[ `go fmt ./... | wc -l` -eq 0 ]" - uses: actions/upload-artifact@v3.1.1 with: path: "/tmp/test-results" @@ -37,8 +39,6 @@ jobs: - name: build binaries if: github.ref_type != 'tag' run: goreleaser build --snapshot - - name: Enforce Go Formatted Code - run: "[ `go fmt ./... | wc -l` -eq 0 ]" integration-test-providers: needs: build runs-on: ubuntu-latest @@ -65,7 +65,7 @@ jobs: ENV_CONTEXT: ${{ toJson(env) }} VARS_CONTEXT: ${{ toJson(vars) }} SECRETS_CONTEXT: ${{ toJson(secrets) }} - integration-tests: + integrtests-diff1: if: github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' needs: integration-test-providers runs-on: ubuntu-latest @@ -77,69 +77,69 @@ jobs: # These providers will be tested if the env variable is set. # Set it to the domain name to use during the test. - AZURE_DNS_DOMAIN: ${{ env.AZURE_DNS_DOMAIN_DOMAIN }} - BIND_DOMAIN: ${{ env.BIND_DOMAIN_DOMAIN }} - CLOUDFLAREAPI_DOMAIN: ${{ env.CLOUDFLAREAPI_DOMAIN_DOMAIN }} - CLOUDNS_DOMAIN: ${{ env.CLOUDNS_DOMAIN_DOMAIN }} - CSCGLOBAL_DOMAIN: ${{ env.CSCGLOBAL_DOMAIN_DOMAIN }} - DIGITALOCEAN_DOMAIN: ${{ env.DIGITALOCEAN_DOMAIN_DOMAIN }} - GANDI_V5_DOMAIN: ${{ env.GANDI_V5_DOMAIN_DOMAIN }} - GCLOUD_DOMAIN: ${{ env.GCLOUD_DOMAIN_DOMAIN }} - HEDNS_DOMAIN: ${{ env.HEDNS_DOMAIN_DOMAIN }} - HEXONET_DOMAIN: ${{ env.HEXONET_DOMAIN_DOMAIN }} - NAMEDOTCOM_DOMAIN: ${{ env.NAMEDOTCOM_DOMAIN_DOMAIN }} - POWERDNS_DOMAIN: ${{ env.POWERDNS_DOMAIN_DOMAIN }} - ROUTE53_DOMAIN: ${{ env.ROUTE53_DOMAIN_DOMAIN }} - TRANSIP_DOMAIN: ${{ env.TRANSIP_DOMAIN_DOMAIN }} + AZURE_DNS_DOMAIN: ${{ vars.AZURE_DNS_DOMAIN }} + BIND_DOMAIN: ${{ vars.BIND_DOMAIN }} + CLOUDFLAREAPI_DOMAIN: ${{ vars.CLOUDFLAREAPI_DOMAIN }} + CLOUDNS_DOMAIN: ${{ vars.CLOUDNS_DOMAIN }} + CSCGLOBAL_DOMAIN: ${{ vars.CSCGLOBAL_DOMAIN }} + DIGITALOCEAN_DOMAIN: ${{ vars.DIGITALOCEAN_DOMAIN }} + GANDI_V5_DOMAIN: ${{ vars.GANDI_V5_DOMAIN }} + GCLOUD_DOMAIN: ${{ vars.GCLOUD_DOMAIN }} + HEDNS_DOMAIN: ${{ vars.HEDNS_DOMAIN }} + HEXONET_DOMAIN: ${{ vars.HEXONET_DOMAIN }} + NAMEDOTCOM_DOMAIN: ${{ vars.NAMEDOTCOM_DOMAIN }} + POWERDNS_DOMAIN: ${{ vars.POWERDNS_DOMAIN }} + ROUTE53_DOMAIN: ${{ vars.ROUTE53_DOMAIN }} + TRANSIP_DOMAIN: ${{ vars.TRANSIP_DOMAIN }} # The above providers have additional env variables they # need for credentials and such. - AZURE_DNS_CLIENT_ID: ${{ secrets.AZURE_DNS_CLIENT_ID_DOMAIN }} - AZURE_DNS_CLIENT_SECRET: ${{ secrets.AZURE_DNS_CLIENT_SECRET_DOMAIN }} - AZURE_DNS_RESOURCE_GROUP: ${{ secrets.AZURE_DNS_RESOURCE_GROUP_DOMAIN }} - AZURE_DNS_SUBSCRIPTION_ID: ${{ secrets.AZURE_DNS_SUBSCRIPTION_ID_DOMAIN }} - AZURE_DNS_TENANT_ID: ${{ secrets.AZURE_DNS_TENANT_ID_DOMAIN }} + AZURE_DNS_CLIENT_ID: ${{ secrets.AZURE_DNS_CLIENT_ID }} + AZURE_DNS_CLIENT_SECRET: ${{ secrets.AZURE_DNS_CLIENT_SECRET }} + AZURE_DNS_RESOURCE_GROUP: ${{ secrets.AZURE_DNS_RESOURCE_GROUP }} + AZURE_DNS_SUBSCRIPTION_ID: ${{ secrets.AZURE_DNS_SUBSCRIPTION_ID }} + AZURE_DNS_TENANT_ID: ${{ secrets.AZURE_DNS_TENANT_ID }} - CLOUDFLAREAPI_ACCOUNTID: ${{ secrets.CLOUDFLAREAPI_ACCOUNTID_DOMAIN }} - CLOUDFLAREAPI_TOKEN: ${{ secrets.CLOUDFLAREAPI_TOKEN_DOMAIN }} + CLOUDFLAREAPI_ACCOUNTID: ${{ secrets.CLOUDFLAREAPI_ACCOUNTID }} + CLOUDFLAREAPI_TOKEN: ${{ secrets.CLOUDFLAREAPI_TOKEN }} - CLOUDNS_AUTH_ID: ${{ secrets.CLOUDNS_AUTH_ID_DOMAIN }} - CLOUDNS_AUTH_PASSWORD: ${{ secrets.CLOUDNS_AUTH_PASSWORD_DOMAIN }} + CLOUDNS_AUTH_ID: ${{ secrets.CLOUDNS_AUTH_ID }} + CLOUDNS_AUTH_PASSWORD: ${{ secrets.CLOUDNS_AUTH_PASSWORD }} - CSCGLOBAL_APIKEY: ${{ secrets.CSCGLOBAL_APIKEY_DOMAIN }} - CSCGLOBAL_USERTOKEN: ${{ secrets.CSCGLOBAL_USERTOKEN_DOMAIN }} + CSCGLOBAL_APIKEY: ${{ secrets.CSCGLOBAL_APIKEY }} + CSCGLOBAL_USERTOKEN: ${{ secrets.CSCGLOBAL_USERTOKEN }} - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN_DOMAIN }} + DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GANDI_V5_APIKEY: ${{ secrets.GANDI_V5_APIKEY_DOMAIN }} + GANDI_V5_APIKEY: ${{ secrets.GANDI_V5_APIKEY }} - GCLOUD_EMAIL: ${{ secrets.GCLOUD_EMAIL_DOMAIN }} - GCLOUD_PRIVATEKEY: ${{ secrets.GCLOUD_PRIVATEKEY_DOMAIN }} - GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT_DOMAIN }} - GCLOUD_TYPE: ${{ secrets.GCLOUD_TYPE_DOMAIN }} + GCLOUD_EMAIL: ${{ secrets.GCLOUD_EMAIL }} + GCLOUD_PRIVATEKEY: ${{ secrets.GCLOUD_PRIVATEKEY }} + GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} + GCLOUD_TYPE: ${{ secrets.GCLOUD_TYPE }} - HEDNS_PASSWORD: ${{ secrets.HEDNS_PASSWORD_DOMAIN }} - HEDNS_TOTP_SECRET: ${{ secrets.HEDNS_TOTP_SECRET_DOMAIN }} - HEDNS_USERNAME: ${{ secrets.HEDNS_USERNAME_DOMAIN }} + HEDNS_PASSWORD: ${{ secrets.HEDNS_PASSWORD }} + HEDNS_TOTP_SECRET: ${{ secrets.HEDNS_TOTP_SECRET }} + HEDNS_USERNAME: ${{ secrets.HEDNS_USERNAME }} - HEXONET_ENTITY: ${{ secrets.HEXONET_ENTITY_DOMAIN }} - HEXONET_PW: ${{ secrets.HEXONET_PW_DOMAIN }} - HEXONET_UID: ${{ secrets.HEXONET_UID_DOMAIN }} + HEXONET_ENTITY: ${{ secrets.HEXONET_ENTITY }} + HEXONET_PW: ${{ secrets.HEXONET_PW }} + HEXONET_UID: ${{ secrets.HEXONET_UID }} - NAMEDOTCOM_KEY: ${{ secrets.NAMEDOTCOM_KEY_DOMAIN }} - NAMEDOTCOM_URL: ${{ secrets.NAMEDOTCOM_URL_DOMAIN }} - NAMEDOTCOM_USER: ${{ secrets.NAMEDOTCOM_USER_DOMAIN }} + NAMEDOTCOM_KEY: ${{ secrets.NAMEDOTCOM_KEY }} + NAMEDOTCOM_URL: ${{ secrets.NAMEDOTCOM_URL }} + NAMEDOTCOM_USER: ${{ secrets.NAMEDOTCOM_USER }} - POWERDNS_APIKEY: ${{ secrets.POWERDNS_APIKEY_DOMAIN }} - POWERDNS_APIURL: ${{ secrets.POWERDNS_APIURL_DOMAIN }} - POWERDNS_SERVERNAME: ${{ secrets.POWERDNS_SERVERNAME_DOMAIN }} + POWERDNS_APIKEY: ${{ secrets.POWERDNS_APIKEY }} + POWERDNS_APIURL: ${{ secrets.POWERDNS_APIURL }} + POWERDNS_SERVERNAME: ${{ secrets.POWERDNS_SERVERNAME }} - ROUTE53_KEY: ${{ secrets.ROUTE53_KEY_DOMAIN }} - ROUTE53_KEY_ID: ${{ secrets.ROUTE53_KEY_ID_DOMAIN }} + ROUTE53_KEY: ${{ secrets.ROUTE53_KEY }} + ROUTE53_KEY_ID: ${{ secrets.ROUTE53_KEY_ID }} - TRANSIP_ACCOUNT_NAME: ${{ secrets.TRANSIP_ACCOUNT_NAME_DOMAIN }} - TRANSIP_PRIVATE_KEY: ${{ secrets.TRANSIP_PRIVATE_KEY_DOMAIN }} + TRANSIP_ACCOUNT_NAME: ${{ secrets.TRANSIP_ACCOUNT_NAME }} + TRANSIP_PRIVATE_KEY: ${{ secrets.TRANSIP_PRIVATE_KEY }} concurrency: ${{ matrix.provider }} strategy: @@ -157,93 +157,93 @@ jobs: path: ${{ env.go-mod-path }} - name: Run integration tests for ${{ matrix.provider }} provider run: |- - go install gotest.tools/gotestsum@latest - if [ -n "$${{ matrix.provider }}_DOMAIN" ] ; then - gotestsum --junitfile ${TEST_RESULTS}/gotestsum-report.xml -- -timeout 30m -v -verbose -provider ${{ matrix.provider }} -cfworkers=false - else + if [ -z "$${{ matrix.provider }}_DOMAIN" ] ; then echo "Skip test for ${{ matrix.provider }} provider" + else + go install gotest.tools/gotestsum@latest + gotestsum --junitfile ${TEST_RESULTS}/gotestsum-report.xml -- -timeout 30m -v -verbose -provider ${{ matrix.provider }} -cfworkers=false fi working-directory: integrationTest - uses: actions/upload-artifact@v3.1.1 with: path: "/tmp/test-results" - integration-tests-diff2: + integrtests-diff2: if: github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' runs-on: ubuntu-latest container: image: golang:${{ vars.GOVER }} needs: - integration-test-providers - - integration-tests + - integrtests-diff1 env: TEST_RESULTS: "/tmp/test-results" GOTESTSUM_FORMAT: testname # These providers will be tested if the env variable is set. # Set it to the domain name to use during the test. - AZURE_DNS_DOMAIN: ${{ env.AZURE_DNS_DOMAIN_DOMAIN }} - BIND_DOMAIN: ${{ env.BIND_DOMAIN_DOMAIN }} - CLOUDFLAREAPI_DOMAIN: ${{ env.CLOUDFLAREAPI_DOMAIN_DOMAIN }} - CLOUDNS_DOMAIN: ${{ env.CLOUDNS_DOMAIN_DOMAIN }} - CSCGLOBAL_DOMAIN: ${{ env.CSCGLOBAL_DOMAIN_DOMAIN }} - DIGITALOCEAN_DOMAIN: ${{ env.DIGITALOCEAN_DOMAIN_DOMAIN }} - GANDI_V5_DOMAIN: ${{ env.GANDI_V5_DOMAIN_DOMAIN }} - GCLOUD_DOMAIN: ${{ env.GCLOUD_DOMAIN_DOMAIN }} - HEDNS_DOMAIN: ${{ env.HEDNS_DOMAIN_DOMAIN }} - HEXONET_DOMAIN: ${{ env.HEXONET_DOMAIN_DOMAIN }} - NAMEDOTCOM_DOMAIN: ${{ env.NAMEDOTCOM_DOMAIN_DOMAIN }} - POWERDNS_DOMAIN: ${{ env.POWERDNS_DOMAIN_DOMAIN }} - ROUTE53_DOMAIN: ${{ env.ROUTE53_DOMAIN_DOMAIN }} - TRANSIP_DOMAIN: ${{ env.TRANSIP_DOMAIN_DOMAIN }} + AZURE_DNS_DOMAIN: ${{ vars.AZURE_DNS_DOMAIN }} + BIND_DOMAIN: ${{ vars.BIND_DOMAIN }} + CLOUDFLAREAPI_DOMAIN: ${{ vars.CLOUDFLAREAPI_DOMAIN }} + CLOUDNS_DOMAIN: ${{ vars.CLOUDNS_DOMAIN }} + CSCGLOBAL_DOMAIN: ${{ vars.CSCGLOBAL_DOMAIN }} + DIGITALOCEAN_DOMAIN: ${{ vars.DIGITALOCEAN_DOMAIN }} + GANDI_V5_DOMAIN: ${{ vars.GANDI_V5_DOMAIN }} + GCLOUD_DOMAIN: ${{ vars.GCLOUD_DOMAIN }} + HEDNS_DOMAIN: ${{ vars.HEDNS_DOMAIN }} + HEXONET_DOMAIN: ${{ vars.HEXONET_DOMAIN }} + NAMEDOTCOM_DOMAIN: ${{ vars.NAMEDOTCOM_DOMAIN }} + POWERDNS_DOMAIN: ${{ vars.POWERDNS_DOMAIN }} + ROUTE53_DOMAIN: ${{ vars.ROUTE53_DOMAIN }} + TRANSIP_DOMAIN: ${{ vars.TRANSIP_DOMAIN }} # The above providers have additional env variables they # need for credentials and such. - AZURE_DNS_CLIENT_ID: ${{ secrets.AZURE_DNS_CLIENT_ID_DOMAIN }} - AZURE_DNS_CLIENT_SECRET: ${{ secrets.AZURE_DNS_CLIENT_SECRET_DOMAIN }} - AZURE_DNS_RESOURCE_GROUP: ${{ secrets.AZURE_DNS_RESOURCE_GROUP_DOMAIN }} - AZURE_DNS_SUBSCRIPTION_ID: ${{ secrets.AZURE_DNS_SUBSCRIPTION_ID_DOMAIN }} - AZURE_DNS_TENANT_ID: ${{ secrets.AZURE_DNS_TENANT_ID_DOMAIN }} + AZURE_DNS_CLIENT_ID: ${{ secrets.AZURE_DNS_CLIENT_ID }} + AZURE_DNS_CLIENT_SECRET: ${{ secrets.AZURE_DNS_CLIENT_SECRET }} + AZURE_DNS_RESOURCE_GROUP: ${{ secrets.AZURE_DNS_RESOURCE_GROUP }} + AZURE_DNS_SUBSCRIPTION_ID: ${{ secrets.AZURE_DNS_SUBSCRIPTION_ID }} + AZURE_DNS_TENANT_ID: ${{ secrets.AZURE_DNS_TENANT_ID }} - CLOUDFLAREAPI_ACCOUNTID: ${{ secrets.CLOUDFLAREAPI_ACCOUNTID_DOMAIN }} - CLOUDFLAREAPI_TOKEN: ${{ secrets.CLOUDFLAREAPI_TOKEN_DOMAIN }} + CLOUDFLAREAPI_ACCOUNTID: ${{ secrets.CLOUDFLAREAPI_ACCOUNTID }} + CLOUDFLAREAPI_TOKEN: ${{ secrets.CLOUDFLAREAPI_TOKEN }} - CLOUDNS_AUTH_ID: ${{ secrets.CLOUDNS_AUTH_ID_DOMAIN }} - CLOUDNS_AUTH_PASSWORD: ${{ secrets.CLOUDNS_AUTH_PASSWORD_DOMAIN }} + CLOUDNS_AUTH_ID: ${{ secrets.CLOUDNS_AUTH_ID }} + CLOUDNS_AUTH_PASSWORD: ${{ secrets.CLOUDNS_AUTH_PASSWORD }} - CSCGLOBAL_APIKEY: ${{ secrets.CSCGLOBAL_APIKEY_DOMAIN }} - CSCGLOBAL_USERTOKEN: ${{ secrets.CSCGLOBAL_USERTOKEN_DOMAIN }} + CSCGLOBAL_APIKEY: ${{ secrets.CSCGLOBAL_APIKEY }} + CSCGLOBAL_USERTOKEN: ${{ secrets.CSCGLOBAL_USERTOKEN }} - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN_DOMAIN }} + DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - GANDI_V5_APIKEY: ${{ secrets.GANDI_V5_APIKEY_DOMAIN }} + GANDI_V5_APIKEY: ${{ secrets.GANDI_V5_APIKEY }} - GCLOUD_EMAIL: ${{ secrets.GCLOUD_EMAIL_DOMAIN }} - GCLOUD_PRIVATEKEY: ${{ secrets.GCLOUD_PRIVATEKEY_DOMAIN }} - GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT_DOMAIN }} - GCLOUD_TYPE: ${{ secrets.GCLOUD_TYPE_DOMAIN }} + GCLOUD_EMAIL: ${{ secrets.GCLOUD_EMAIL }} + GCLOUD_PRIVATEKEY: ${{ secrets.GCLOUD_PRIVATEKEY }} + GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} + GCLOUD_TYPE: ${{ secrets.GCLOUD_TYPE }} - HEDNS_PASSWORD: ${{ secrets.HEDNS_PASSWORD_DOMAIN }} - HEDNS_TOTP_SECRET: ${{ secrets.HEDNS_TOTP_SECRET_DOMAIN }} - HEDNS_USERNAME: ${{ secrets.HEDNS_USERNAME_DOMAIN }} + HEDNS_PASSWORD: ${{ secrets.HEDNS_PASSWORD }} + HEDNS_TOTP_SECRET: ${{ secrets.HEDNS_TOTP_SECRET }} + HEDNS_USERNAME: ${{ secrets.HEDNS_USERNAME }} - HEXONET_ENTITY: ${{ secrets.HEXONET_ENTITY_DOMAIN }} - HEXONET_PW: ${{ secrets.HEXONET_PW_DOMAIN }} - HEXONET_UID: ${{ secrets.HEXONET_UID_DOMAIN }} + HEXONET_ENTITY: ${{ secrets.HEXONET_ENTITY }} + HEXONET_PW: ${{ secrets.HEXONET_PW }} + HEXONET_UID: ${{ secrets.HEXONET_UID }} - NAMEDOTCOM_KEY: ${{ secrets.NAMEDOTCOM_KEY_DOMAIN }} - NAMEDOTCOM_URL: ${{ secrets.NAMEDOTCOM_URL_DOMAIN }} - NAMEDOTCOM_USER: ${{ secrets.NAMEDOTCOM_USER_DOMAIN }} + NAMEDOTCOM_KEY: ${{ secrets.NAMEDOTCOM_KEY }} + NAMEDOTCOM_URL: ${{ secrets.NAMEDOTCOM_URL }} + NAMEDOTCOM_USER: ${{ secrets.NAMEDOTCOM_USER }} - POWERDNS_APIKEY: ${{ secrets.POWERDNS_APIKEY_DOMAIN }} - POWERDNS_APIURL: ${{ secrets.POWERDNS_APIURL_DOMAIN }} - POWERDNS_SERVERNAME: ${{ secrets.POWERDNS_SERVERNAME_DOMAIN }} + POWERDNS_APIKEY: ${{ secrets.POWERDNS_APIKEY }} + POWERDNS_APIURL: ${{ secrets.POWERDNS_APIURL }} + POWERDNS_SERVERNAME: ${{ secrets.POWERDNS_SERVERNAME }} - ROUTE53_KEY: ${{ secrets.ROUTE53_KEY_DOMAIN }} - ROUTE53_KEY_ID: ${{ secrets.ROUTE53_KEY_ID_DOMAIN }} + ROUTE53_KEY: ${{ secrets.ROUTE53_KEY }} + ROUTE53_KEY_ID: ${{ secrets.ROUTE53_KEY_ID }} - TRANSIP_ACCOUNT_NAME: ${{ secrets.TRANSIP_ACCOUNT_NAME_DOMAIN }} - TRANSIP_PRIVATE_KEY: ${{ secrets.TRANSIP_PRIVATE_KEY_DOMAIN }} + TRANSIP_ACCOUNT_NAME: ${{ secrets.TRANSIP_ACCOUNT_NAME }} + TRANSIP_PRIVATE_KEY: ${{ secrets.TRANSIP_PRIVATE_KEY }} concurrency: ${{ matrix.provider }} strategy: