Skip to content

Commit 4e38e5b

Browse files
committed
Add GitHub Actions workflow for go coverage job
It uses workflow artifacts to store current coverage on merged to main and uses this as a baseline for comparison when running on PRs. It's also configured to run at least once every 2 months to avoid the workflow artifact expiring.
1 parent 3ef21a9 commit 4e38e5b

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

.github/workflows/go-coverage.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Go coverage
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
pull_request:
8+
branches: ["main"]
9+
push:
10+
branches: ["main"]
11+
# run at least once every 2 months to prevent the coverage artifact from expiring
12+
schedule:
13+
- cron: '14 3 1 */2 *'
14+
workflow_dispatch:
15+
16+
concurrency:
17+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
18+
cancel-in-progress: true
19+
20+
defaults:
21+
run:
22+
shell: bash
23+
24+
jobs:
25+
go-coverage:
26+
name: Go coverage
27+
runs-on: ubuntu-24.04
28+
permissions:
29+
pull-requests: write
30+
31+
steps:
32+
- name: Harden runner
33+
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
34+
with:
35+
egress-policy: audit
36+
37+
- name: Checkout
38+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
39+
with:
40+
path: ${{ github.workspace }}/src/github.com/tektoncd/chains
41+
42+
- name: Set up Go
43+
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
44+
with:
45+
go-version-file: "${{ github.workspace }}/src/github.com/tektoncd/chains/go.mod"
46+
47+
- name: Generate coverage
48+
working-directory: ${{ github.workspace }}/src/github.com/tektoncd/chains
49+
run: |
50+
go test -cover -coverprofile=coverage.txt ./... || true
51+
echo "Generated coverage profile"
52+
53+
- name: Archive coverage results
54+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
55+
with:
56+
name: code-coverage
57+
path: ${{ github.workspace }}/src/github.com/tektoncd/chains/coverage.txt
58+
59+
- name: Comment on PR
60+
if: github.event_name == 'pull_request'
61+
uses: fgrosse/go-coverage-report@8c1d1a09864211d258937b1b1a5b849f7e4f2682 # v1.2.0
62+
continue-on-error: true # This may fail if artifact on main branch does not exist (first run or expired)
63+
with:
64+
coverage-artifact-name: "code-coverage"
65+
coverage-file-name: "coverage.txt"

0 commit comments

Comments
 (0)