mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-09 21:55:57 +08:00
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
83 lines
2.5 KiB
YAML
83 lines
2.5 KiB
YAML
name: "PR: Run UNIT tests and Build artifacts for all platforms"
|
|
|
|
# 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_build.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:
|
|
|
|
# Run unit tests:
|
|
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
TEST_RESULTS: "/tmp/test-results"
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
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.3
|
|
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.6.2
|
|
with:
|
|
name: unit-tests
|
|
path: ${{ env.TEST_RESULTS }}
|
|
|
|
# build: Use GoReleaser to build binaries for all platforms.
|
|
|
|
# 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
|