Reduce repetition in CI configuration #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| jobs: | |
| # Run unit tests and vet in parallel as separate jobs | |
| test-unit: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Go environment | |
| uses: ./.github/actions/setup-go | |
| - name: Run unit tests | |
| run: make test-unit | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: unit-test-results | |
| path: | | |
| cover.out | |
| bin/ | |
| retention-days: 7 | |
| vet: | |
| name: Go Vet | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Go environment | |
| uses: ./.github/actions/setup-go | |
| - name: Run vet | |
| run: make vet | |
| # Integration tests need special setup, keep separate | |
| test-integration: | |
| name: Integration | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: 'go.mod' | |
| check-latest: true | |
| cache: true | |
| - name: Install dependencies | |
| run: | | |
| # Download Go dependencies | |
| go mod download | |
| # Install Temporal CLI | |
| curl -sSf https://temporal.download/cli.sh | sh | |
| echo "$HOME/.temporalio/bin" >> "$GITHUB_PATH" | |
| # Install Go tools | |
| go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.16.2 | |
| go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest | |
| - name: Install kubectl | |
| uses: azure/setup-kubectl@v3 | |
| with: | |
| version: 'latest' | |
| - name: Install Helm | |
| uses: azure/setup-helm@v3 | |
| with: | |
| version: 'v3.14.3' | |
| - name: Integration tests | |
| run: make test-integration | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: integration-test-results | |
| path: | | |
| cover.out | |
| bin/ | |
| retention-days: 7 |