-
Notifications
You must be signed in to change notification settings - Fork 518
131 lines (116 loc) · 4.08 KB
/
Copy pathcli-go-ci.yml
File metadata and controls
131 lines (116 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
with:
version: 2026.9.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