name: CI on: push: branches: [main, master] pull_request: jobs: test: runs-on: ubuntu-latest env: GOPRIVATE: git.veillax.com steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod # Go fetches the other sharks modules straight from this server. This is harmless # for public repositories and is what makes private ones work. - name: Let Go fetch modules from this server run: git config --global url."https://x-access-token:${{ secrets.GITHUB_TOKEN }}@git.veillax.com/".insteadOf "https://git.veillax.com/" - name: Formatting run: | unformatted=$(gofmt -l .) if [ -n "$unformatted" ]; then echo "These files need gofmt:" echo "$unformatted" exit 1 fi - name: Vet run: go vet ./... - name: Test run: go test ./... # Catches platform-specific breakage before a release is tagged. - name: Every release platform compiles run: | for t in linux/amd64 windows/amd64; do for c in hhctl terraform-provider-hammerhead; do echo "building $c for $t" GOOS=${t%/*} GOARCH=${t#*/} CGO_ENABLED=0 go build -o /dev/null ./cmd/$c done done