From 0a322c4ae008db78af14fd927fd3c40d046fc07a Mon Sep 17 00:00:00 2001 From: Tom Limoncelli Date: Tue, 17 Dec 2024 09:06:33 -0500 Subject: [PATCH] split --- .github/workflows/pr_build.yml | 80 +++++++++++++++++++++++++++++ .github/workflows/pr_test.yml | 53 ------------------- .github/workflows/release_draft.yml | 1 + 3 files changed, 81 insertions(+), 53 deletions(-) create mode 100644 .github/workflows/pr_build.yml diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml new file mode 100644 index 0000000000..2c145fc890 --- /dev/null +++ b/.github/workflows/pr_build.yml @@ -0,0 +1,80 @@ +name: "PR: Run all tests" + +# When will this pipeline be activated? +# 1. On any pull-request, or if someone pushes to a branch called +# "tlim_testpr". +on: + pull_request: + workflow_dispatch: + # Want to trigger all the tests without making a PR? + # Run: git push origin main:tlim_testpr --force + # This will trigger a full PR test on the main branch. + # See https://github.com/StackExchange/dnscontrol/actions/workflows/pr_test.yml?query=branch%3Atlim_testpr + push: + branches: + - 'tlim_testpr' + +# Environment Variables +env: + # cache-key: Change to force cache reset `pwsh > Get-Date -UFormat %s` + cache-key: 1639697695 + # go-mod-path: Where go-mod writes temp files + go-mod-path: /go/pkg/mod + # BIND_DOMAIN: BIND is the one providers that we always test. By + # defining this here, we know it will always be set. + BIND_DOMAIN: example.com + +jobs: + +# build: Use GoReleasere to build binaries for all platforms. + build: + runs-on: ubuntu-latest + env: + TEST_RESULTS: "/tmp/test-results" + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: stable + - name: restore_cache + uses: actions/cache@v4.2.0 + with: + key: linux-go-${{ hashFiles('go.sum') }}-${{ env.cache-key }} + restore-keys: linux-go-${{ hashFiles('go.sum') }}-${{ env.cache-key }} + path: ${{ env.go-mod-path }} + - run: mkdir -p "$TEST_RESULTS" + - name: Run unit tests + 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@v4.4.3 + with: + name: unit-tests + path: ${{ env.TEST_RESULTS }} + +# Stringer is needed because .goreleaser includes "go generate ./..." + - name: Install stringer + run: | + go install golang.org/x/tools/cmd/stringer@latest + + - + id: build_binaries_tagged + name: Build binaries (if tagged) + if: github.ref_type == 'tag' + uses: goreleaser/goreleaser-action@v6 + with: + distribution: goreleaser + version: latest + args: build + - + id: build_binaries_not_tagged + name: Build binaries (not tagged) + if: github.ref_type != 'tag' + uses: goreleaser/goreleaser-action@v6 + with: + args: build --snapshot diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml index 1a69ca4f28..5e232231ab 100644 --- a/.github/workflows/pr_test.yml +++ b/.github/workflows/pr_test.yml @@ -26,59 +26,6 @@ env: jobs: -# build: Use GoReleasere to build binaries for all platforms. - build: - runs-on: ubuntu-latest - env: - TEST_RESULTS: "/tmp/test-results" - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: stable - - name: restore_cache - uses: actions/cache@v4.2.0 - with: - key: linux-go-${{ hashFiles('go.sum') }}-${{ env.cache-key }} - restore-keys: linux-go-${{ hashFiles('go.sum') }}-${{ env.cache-key }} - path: ${{ env.go-mod-path }} - - run: mkdir -p "$TEST_RESULTS" - - name: Run unit tests - 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@v4.4.3 - with: - name: unit-tests - path: ${{ env.TEST_RESULTS }} - -# Stringer is needed because .goreleaser includes "go generate ./..." - - name: Install stringer - run: | - go install golang.org/x/tools/cmd/stringer@latest - - - - id: build_binaries_tagged - name: Build binaries (if tagged) - if: github.ref_type == 'tag' - uses: goreleaser/goreleaser-action@v6 - with: - distribution: goreleaser - version: latest - args: build - - - id: build_binaries_not_tagged - name: Build binaries (not tagged) - if: github.ref_type != 'tag' - uses: goreleaser/goreleaser-action@v6 - with: - args: build --snapshot - # integration-test-providers: Determine which providers have a _DOMAIN variable set. # That variable enables testing for the provider. The results are # stored in a JSON blob stashed in # needs.integration-test-providers.outputs.integration_test_providers diff --git a/.github/workflows/release_draft.yml b/.github/workflows/release_draft.yml index 225015d885..168f607b44 100644 --- a/.github/workflows/release_draft.yml +++ b/.github/workflows/release_draft.yml @@ -49,6 +49,7 @@ jobs: run: | go install golang.org/x/tools/cmd/stringer@latest +# use GoReleaser to build for all platforms. - id: release name: Goreleaser release