Skip to content

CI

CI #2336

Workflow file for this run

name: CI
on:
pull_request:
paths:
- apps/cli-go/**
merge_group:
push:
branches:
- develop
paths:
- apps/cli-go/**
permissions:
contents: read
jobs:
test:
name: Test
runs-on: blacksmith-8vcpu-ubuntu-2404
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version-file: apps/cli-go/go.mod
cache: true
# Required by: internal/utils/credentials/keyring_test.go
- uses: t1m0thyj/unlock-keyring@cbcf205c879ebd86add70bab3a6abfcce59a5cae # v1.2.0
- run: |
pkgs=$(go list ./pkg/... | grep -Ev 'pkg/api' | paste -sd ',' -)
go tool gotestsum -- -race -v -count=1 ./... \
-coverpkg="./cmd/...,./internal/...,${pkgs}" -coverprofile=coverage.out
# internal/start (docker-compose/v2, buildx, moby/buildkit, k8s client-go,
# aws-sdk-go-v2, notary, secret-detector) was deleted outright as
# unreachable (CLI-1966) -- this guards against silently reintroducing
# that dependency tree via some other package, since nothing else checks
# the shipped binary's size on every change.
- name: Verify the heavy orchestration dependency tree stays out of the module
run: |
set -euo pipefail
go list -deps . > /tmp/deps.txt
! grep -Eq \
'docker/compose|docker/buildx|moby/buildkit|k8s\.io/client-go|aws-sdk-go-v2' \
/tmp/deps.txt
- name: Check existing coverage cache
id: coverage-cache
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: apps/cli-go/coverage.out
key: cli-go-coverage-${{ github.run_id }}-v1
lookup-only: true
- name: Save coverage cache
if: steps.coverage-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: apps/cli-go/coverage.out
key: cli-go-coverage-${{ github.run_id }}-v1
coverage:
name: Coverage
needs:
- test
runs-on: blacksmith-8vcpu-ubuntu-2404
steps:
- name: Restore coverage cache
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: apps/cli-go/coverage.out
key: cli-go-coverage-${{ github.run_id }}-v1
fail-on-cache-miss: true
- name: Move coverage report
run: cp apps/cli-go/coverage.out coverage.out
working-directory: .
- uses: coverallsapp/github-action@8d6379e14d29928660c4ba802d8e85393440b329 # v2.3.8
with:
file: coverage.out
format: golang
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: jdx/mise-action@3c2e0cf82a5b2e5249f0d3635a4d83d0ae861518 # v4
with:
version: 2026.7.0
install: true
install_args: >-
go
golangci-lint
- uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a # v9.3.0
with:
args: --timeout 5m --verbose
install-mode: none
only-new-issues: true
working-directory: apps/cli-go
codegen:
name: Codegen
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version-file: apps/cli-go/go.mod
cache: true
- run: go generate
- run: |
if ! git diff --ignore-space-at-eol --exit-code --quiet pkg; then
echo "Detected uncommitted changes after codegen. See status below:"
git diff
exit 1
fi
defaults:
run:
working-directory: apps/cli-go