Skip to content

Commit 22ae103

Browse files
author
FS
committed
chore(ci): add automation workflows
Add CI, release, and self-test workflows with fixture configs.
1 parent 8601f3d commit 22ae103

5 files changed

Lines changed: 112 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: ci
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
ci:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
contents: read
12+
pull-requests: read
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: actions/setup-node@v4
16+
with:
17+
node-version: 20
18+
cache: npm
19+
- run: npm ci
20+
- run: npm run lint
21+
- run: npm run typecheck
22+
- run: npm run coverage
23+
- run: npm run build
24+
- uses: actions/upload-artifact@v4
25+
if: always()
26+
with:
27+
name: coverage-report
28+
path: coverage

.github/workflows/release.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
pull-requests: read
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-node@v4
17+
with:
18+
node-version: 20
19+
cache: npm
20+
- run: npm ci
21+
- run: npm run lint
22+
- run: npm run typecheck
23+
- run: npm run coverage
24+
- run: npm run validate
25+
- run: npm run build
26+
- run: test -f action.yml
27+
- uses: softprops/action-gh-release@v2
28+
with:
29+
generate_release_notes: true

.github/workflows/self-test.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: self-test
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
pass-case:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
contents: read
11+
pull-requests: read
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: ./
15+
with:
16+
github-token: ${{ github.token }}
17+
config-path: tests/fixtures/self-test/pass.yml
18+
19+
fail-case:
20+
runs-on: ubuntu-latest
21+
permissions:
22+
contents: read
23+
pull-requests: read
24+
steps:
25+
- uses: actions/checkout@v4
26+
- id: policy-gate
27+
continue-on-error: true
28+
uses: ./
29+
with:
30+
github-token: ${{ github.token }}
31+
config-path: tests/fixtures/self-test/fail.yml
32+
- if: steps.policy-gate.outcome != 'failure'
33+
run: |
34+
echo "Expected the failure fixture to fail."
35+
exit 1

tests/fixtures/self-test/fail.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
policies:
2+
- id: required-self-test-label
3+
severity: error
4+
require:
5+
has_label:
6+
- 'policy-gate-self-test-required-label'
7+
message: 'This fixture intentionally fails unless the special self-test label exists.'

tests/fixtures/self-test/pass.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
policies:
2+
- id: release-label-example
3+
severity: warn
4+
when:
5+
changed:
6+
- 'api/public/**'
7+
require:
8+
any:
9+
- has_label:
10+
- 'release-note-exempt'
11+
- changed:
12+
- 'CHANGELOG.md'
13+
message: 'Public API changes should include release-note evidence.'

0 commit comments

Comments
 (0)