Skip to content

Commit 29a25f7

Browse files
gtsiolisclaude
andcommitted
Add concurrency control and job timeouts in CI
- Cancel superseded CI runs on the same PR (keyed by PR number); push/tag/ release runs get unique groups via run_id so the release pipeline's workflow_call is never interrupted. - Add timeout-minutes to every CI job to replace the implicit 6h default. - Group Dependabot minor/patch updates per ecosystem (gomod, github-actions); major updates still open individual PRs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 8816622 commit 29a25f7

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

.github/dependabot.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ updates:
1010
labels:
1111
- "semver: patch"
1212
- "docs: skip"
13+
groups:
14+
go-dependencies:
15+
patterns:
16+
- "*"
17+
update-types:
18+
- "minor"
19+
- "patch"
1320

1421
- package-ecosystem: "github-actions"
1522
directory: "/"
@@ -21,3 +28,10 @@ updates:
2128
labels:
2229
- "semver: patch"
2330
- "docs: skip"
31+
groups:
32+
github-actions:
33+
patterns:
34+
- "*"
35+
update-types:
36+
- "minor"
37+
- "patch"

.github/workflows/ci.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,18 @@ permissions:
1515
pull-requests: write
1616
checks: write
1717

18+
# Cancel superseded runs on the same PR; never cancel push/tag/release runs
19+
# (each gets a unique group via run_id) so reusable workflow_call from the
20+
# release pipeline is never interrupted.
21+
concurrency:
22+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
23+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
24+
1825
jobs:
1926
lint:
2027
name: Lint
2128
runs-on: ubuntu-latest
29+
timeout-minutes: 10
2230
steps:
2331
- name: Checkout code
2432
uses: actions/checkout@v7
@@ -36,6 +44,7 @@ jobs:
3644
goreleaser-check:
3745
name: GoReleaser Check
3846
runs-on: ubuntu-latest
47+
timeout-minutes: 10
3948
steps:
4049
- name: Checkout code
4150
uses: actions/checkout@v7
@@ -50,6 +59,7 @@ jobs:
5059
test-unit:
5160
name: Unit Tests
5261
runs-on: ubuntu-latest
62+
timeout-minutes: 15
5363
steps:
5464
- name: Checkout code
5565
uses: actions/checkout@v7
@@ -83,6 +93,7 @@ jobs:
8393
test-integration:
8494
name: Integration Tests (${{ matrix.os }}${{ matrix.shard && format(' shard {0}/{1}', matrix.shard, matrix.shard_total) || '' }})
8595
runs-on: ${{ matrix.os }}
96+
timeout-minutes: 45
8697
strategy:
8798
fail-fast: false
8899
matrix:
@@ -186,6 +197,7 @@ jobs:
186197
runs-on: ubuntu-latest
187198
needs: test-integration
188199
if: always()
200+
timeout-minutes: 5
189201
steps:
190202
- name: Verify integration matrix succeeded
191203
run: |
@@ -203,6 +215,7 @@ jobs:
203215
- test-unit
204216
- test-integration
205217
runs-on: ubuntu-latest
218+
timeout-minutes: 30
206219
permissions:
207220
contents: write
208221
steps:

0 commit comments

Comments
 (0)