Repository navigation
Publish the container images through the org's shared pipeline #156
Workflow file for this run
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| unit-tests: | |
| name: Unit tests | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Set up Go | |
| uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: go.mod | |
| - name: Cache Go modules | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.cache/go/pkg/mod | |
| ~/.cache/go/build | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - name: Check go.mod is tidy | |
| run: go mod tidy -diff | |
| - name: Run golangci-lint | |
| uses: golangci/golangci-lint-action@v9 | |
| with: | |
| version: v2.12 | |
| - name: Test | |
| run: go test -race -count=1 ./... | |
| - name: Build (smoke) | |
| run: go build -o /dev/null . | |
| integration-tests: | |
| # Required by .github/rulesets/Main.json. Nothing carries the `integration` | |
| # build tag yet, so this is a green no-op — the check has to exist for the | |
| # ruleset to be satisfiable at all. | |
| name: Integration tests | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Set up Go | |
| uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: go.mod | |
| - name: Cache Go modules | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.cache/go/pkg/mod | |
| ~/.cache/go/build | |
| key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
| restore-keys: | | |
| ${{ runner.os }}-go- | |
| - name: Test | |
| run: go test -race -count=1 -tags=integration ./... | |
| dockerfile-lint: | |
| name: Dockerfile lint | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Setup Task | |
| uses: go-task/setup-task@v2 | |
| with: | |
| version: 3.x | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Lint the Dockerfile | |
| run: task lint:docker | |
| image: | |
| name: Image (${{ matrix.target }}, ${{ matrix.runner.platform }}) | |
| runs-on: ${{ matrix.runner.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: [binary, debian] | |
| runner: | |
| - os: ubuntu-24.04 | |
| platform: linux/amd64 | |
| - os: ubuntu-24.04-arm | |
| platform: linux/arm64 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Set up Buildx | |
| uses: docker/setup-buildx-action@v4 | |
| - name: Build the runtime image | |
| id: build | |
| uses: specsnl/github-actions/build-image@2.4.2 | |
| with: | |
| platform: ${{ matrix.runner.platform }} | |
| image-name: ghcr.io/specsnl/labelsync | |
| dockerfile: Dockerfile | |
| target: ${{ matrix.target }} | |
| load: true | |
| raw-tag: ci-${{ matrix.target }} | |
| build-args: LABELSYNC_VERSION=ci-${{ github.sha }} | |
| - name: Set up bats | |
| id: bats | |
| uses: bats-core/bats-action@4.0.0 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Smoke test | |
| env: | |
| BATS_LIB_PATH: ${{ steps.bats.outputs.lib-path }} | |
| IMAGE: ${{ steps.build.outputs.image }} | |
| EXPECTED_VERSION: ci-${{ github.sha }} | |
| TARGET: ${{ matrix.target }} | |
| run: bats test/image.bats | |