Skip to content

Publish the container images through the org's shared pipeline #156

Publish the container images through the org's shared pipeline

Publish the container images through the org's shared pipeline #156

Workflow file for this run

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