Skip to content

Commit d93d600

Browse files
jongioCopilot
andcommitted
feat: dispatch-parity quality improvements
- Pin all GitHub Actions to full commit SHAs - Add CODEOWNERS file - Add Dependabot for go modules and github-actions - Add concurrency control to CI/PR workflows - Add CodeQL security scanning workflow - Add govulncheck vulnerability scanning workflow - Standardize golangci-lint config with 30+ linters - Add dispatch-level linters (errname, exhaustive, forcetypeassert, etc.) - Add gofumpt strict formatting checks - Add deadcode detection - Add cosign code signing to release workflow - Add SBOM generation (SPDX + CycloneDX) to release workflow - Add comprehensive README badges (CI, CodeQL, Go Report Card, etc.) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent c877ec7 commit d93d600

128 files changed

Lines changed: 1478 additions & 809 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Default code owners for all files
2+
* @jongio

.github/dependabot.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "gomod"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
commit-message:
8+
prefix: "deps"
9+
- package-ecosystem: "github-actions"
10+
directory: "/"
11+
schedule:
12+
interval: "weekly"
13+
commit-message:
14+
prefix: "ci"

.github/workflows/ci.yml

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ on:
88
- '.github/workflows/ci.yml'
99
workflow_dispatch:
1010

11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
1115
defaults:
1216
run:
1317
working-directory: cli
@@ -22,10 +26,10 @@ jobs:
2226

2327
steps:
2428
- name: Checkout code
25-
uses: actions/checkout@v4
29+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
2630

2731
- name: Set up Go (bootstrap)
28-
uses: actions/setup-go@v5
32+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
2933
with:
3034
go-version: 'stable'
3135
cache: false
@@ -43,12 +47,12 @@ jobs:
4347
go version
4448
4549
- name: Set up Node.js
46-
uses: actions/setup-node@v4
50+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
4751
with:
4852
node-version: '20'
4953

5054
- name: Install pnpm
51-
uses: pnpm/action-setup@v4
55+
uses: pnpm/action-setup@5b4374b04084dc1f9032b52464284b769ac5059e # v4
5256
with:
5357
version: 9
5458

@@ -84,10 +88,10 @@ jobs:
8488

8589
steps:
8690
- name: Checkout code
87-
uses: actions/checkout@v4
91+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
8892

8993
- name: Set up Go (bootstrap)
90-
uses: actions/setup-go@v5
94+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
9195
with:
9296
go-version: 'stable'
9397
cache: false
@@ -114,12 +118,12 @@ jobs:
114118
run: go version
115119

116120
- name: Set up Node.js
117-
uses: actions/setup-node@v4
121+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
118122
with:
119123
node-version: '20'
120124

121125
- name: Install pnpm
122-
uses: pnpm/action-setup@v4
126+
uses: pnpm/action-setup@5b4374b04084dc1f9032b52464284b769ac5059e # v4
123127
with:
124128
version: 9
125129

@@ -169,7 +173,7 @@ jobs:
169173
170174
- name: Upload coverage to Codecov
171175
if: github.repository == 'jongio/azd-app'
172-
uses: codecov/codecov-action@v4
176+
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
173177
with:
174178
file: coverage/coverage.out
175179
flags: unittests
@@ -197,10 +201,10 @@ jobs:
197201

198202
steps:
199203
- name: Checkout code
200-
uses: actions/checkout@v4
204+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
201205

202206
- name: Set up Go (bootstrap)
203-
uses: actions/setup-go@v5
207+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
204208
with:
205209
go-version: 'stable'
206210
cache: false
@@ -216,12 +220,12 @@ jobs:
216220
run: go version
217221

218222
- name: Set up Node.js
219-
uses: actions/setup-node@v4
223+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
220224
with:
221225
node-version: '20'
222226

223227
- name: Install pnpm
224-
uses: pnpm/action-setup@v4
228+
uses: pnpm/action-setup@5b4374b04084dc1f9032b52464284b769ac5059e # v4
225229
with:
226230
version: 9
227231

@@ -249,10 +253,10 @@ jobs:
249253

250254
steps:
251255
- name: Checkout code
252-
uses: actions/checkout@v4
256+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
253257

254258
- name: Set up Go (bootstrap)
255-
uses: actions/setup-go@v5
259+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
256260
with:
257261
go-version: 'stable'
258262
cache: false
@@ -268,12 +272,12 @@ jobs:
268272
run: go version
269273

270274
- name: Set up Node.js
271-
uses: actions/setup-node@v4
275+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
272276
with:
273277
node-version: '20'
274278

275279
- name: Install pnpm
276-
uses: pnpm/action-setup@v4
280+
uses: pnpm/action-setup@5b4374b04084dc1f9032b52464284b769ac5059e # v4
277281
with:
278282
version: 9
279283

@@ -292,7 +296,7 @@ jobs:
292296
GOOS=darwin GOARCH=arm64 go build -o bin/darwin-arm64/app ./src/cmd/app
293297
294298
- name: Upload artifacts
295-
uses: actions/upload-artifact@v4
299+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
296300
with:
297301
name: binaries
298302
path: cli/bin/
@@ -308,10 +312,10 @@ jobs:
308312

309313
steps:
310314
- name: Checkout code
311-
uses: actions/checkout@v4
315+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
312316

313317
- name: Set up Go (bootstrap)
314-
uses: actions/setup-go@v5
318+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
315319
with:
316320
go-version: 'stable'
317321
cache: false
@@ -338,17 +342,17 @@ jobs:
338342
run: go version
339343

340344
- name: Set up Node.js
341-
uses: actions/setup-node@v4
345+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
342346
with:
343347
node-version: '20'
344348

345349
- name: Install pnpm
346-
uses: pnpm/action-setup@v4
350+
uses: pnpm/action-setup@5b4374b04084dc1f9032b52464284b769ac5059e # v4
347351
with:
348352
version: 9
349353

350354
- name: Set up Python
351-
uses: actions/setup-python@v5
355+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
352356
with:
353357
python-version: '3.11'
354358

@@ -418,7 +422,7 @@ jobs:
418422

419423
- name: Upload test logs on failure
420424
if: failure()
421-
uses: actions/upload-artifact@v4
425+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
422426
with:
423427
name: integration-test-logs-${{ matrix.os }}
424428
path: |

.github/workflows/codeql.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
schedule:
9+
- cron: '0 0 * * 0' # Weekly on Sundays at midnight UTC
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
15+
permissions:
16+
contents: read
17+
security-events: write
18+
actions: read
19+
20+
jobs:
21+
analyze:
22+
name: Analyze
23+
runs-on: ubuntu-latest
24+
permissions:
25+
contents: read
26+
security-events: write
27+
actions: read
28+
29+
steps:
30+
- name: Checkout code
31+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
32+
33+
- name: Set up Go
34+
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6
35+
with:
36+
go-version: '1.26.0'
37+
cache: true
38+
39+
- name: Initialize CodeQL
40+
uses: github/codeql-action/init@dd677812177e0c29f9c970a6c58d8607ae1bfefd # v4
41+
with:
42+
languages: go
43+
44+
- name: Autobuild
45+
uses: github/codeql-action/autobuild@dd677812177e0c29f9c970a6c58d8607ae1bfefd # v4
46+
47+
- name: Perform CodeQL Analysis
48+
uses: github/codeql-action/analyze@dd677812177e0c29f9c970a6c58d8607ae1bfefd # v4
49+
continue-on-error: true
50+
with:
51+
upload: false
52+
53+
- name: Upload SARIF (if Code Scanning enabled)
54+
uses: github/codeql-action/upload-sarif@dd677812177e0c29f9c970a6c58d8607ae1bfefd # v4
55+
continue-on-error: true
56+
with:
57+
sarif_file: ../results

.github/workflows/govulncheck.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Go Vulnerability Check
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
schedule:
9+
- cron: '0 0 * * 0' # Weekly on Sundays at midnight UTC
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
15+
permissions:
16+
contents: read
17+
18+
jobs:
19+
govulncheck:
20+
name: Run govulncheck
21+
runs-on: ubuntu-latest
22+
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
26+
27+
- name: Set up Go
28+
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6
29+
with:
30+
go-version: '1.26.0'
31+
cache: true
32+
33+
- name: Install govulncheck
34+
run: go install golang.org/x/vuln/cmd/govulncheck@latest
35+
36+
- name: Run govulncheck
37+
run: govulncheck ./...

.github/workflows/pr-build.yml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ on:
2121
required: false
2222
type: number
2323

24+
concurrency:
25+
group: ${{ github.workflow }}-${{ github.ref }}
26+
cancel-in-progress: true
27+
2428
defaults:
2529
run:
2630
working-directory: cli
@@ -53,7 +57,7 @@ jobs:
5357
steps:
5458
- name: Check if build is allowed
5559
id: check
56-
uses: actions/github-script@v7
60+
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
5761
with:
5862
script: |
5963
let allowed = false;
@@ -163,7 +167,7 @@ jobs:
163167
steps:
164168
- name: Get PR details
165169
id: pr
166-
uses: actions/github-script@v7
170+
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
167171
with:
168172
script: |
169173
let prNumber = '${{ needs.check-permission.outputs.pr_number }}';
@@ -198,12 +202,12 @@ jobs:
198202
core.setOutput('title', pr.data.title);
199203
200204
- name: Checkout code
201-
uses: actions/checkout@v4
205+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
202206
with:
203207
ref: ${{ steps.pr.outputs.sha }}
204208

205209
- name: Set up Go (bootstrap)
206-
uses: actions/setup-go@v5
210+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
207211
with:
208212
go-version: 'stable'
209213
cache: false
@@ -219,12 +223,12 @@ jobs:
219223
run: go version
220224

221225
- name: Set up Node.js
222-
uses: actions/setup-node@v4
226+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
223227
with:
224228
node-version: '20'
225229

226230
- name: Install pnpm
227-
uses: pnpm/action-setup@v4
231+
uses: pnpm/action-setup@5b4374b04084dc1f9032b52464284b769ac5059e # v4
228232
with:
229233
version: 9
230234

@@ -252,7 +256,7 @@ jobs:
252256
azd extension install microsoft.azd.extensions --source azd
253257
254258
- name: Setup pnpm cache
255-
uses: actions/cache@v4
259+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
256260
with:
257261
path: ~/.pnpm-store
258262
key: ${{ runner.os }}-pnpm-${{ hashFiles('cli/dashboard/pnpm-lock.yaml') }}
@@ -387,7 +391,7 @@ jobs:
387391
EOF
388392
389393
- name: Comment on PR
390-
uses: actions/github-script@v7
394+
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
391395
with:
392396
script: |
393397
const fs = require('fs');

0 commit comments

Comments
 (0)