Skip to content

Commit 147c8cc

Browse files
committed
ci: add release-please + npm publish automation
- release-please reads conventional commits on main - Opens/updates a Release PR with version bump + CHANGELOG - On Release PR merge: creates tag, GitHub Release, triggers npm publish - Manifest seeded at current CLI version 0.1.4 Requires NPM_TOKEN secret.
1 parent 3251860 commit 147c8cc

3 files changed

Lines changed: 77 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
permissions:
8+
contents: write
9+
pull-requests: write
10+
id-token: write
11+
12+
jobs:
13+
# Step 1: release-please reads conventional commits on main and either
14+
# (a) opens/updates a "Release PR" bumping version + CHANGELOG, or
15+
# (b) on Release PR merge: creates tag + GitHub Release.
16+
release-please:
17+
runs-on: ubuntu-latest
18+
outputs:
19+
releases_created: ${{ steps.release.outputs.releases_created }}
20+
cli_released: ${{ steps.release.outputs['packages/cli--release_created'] }}
21+
cli_tag: ${{ steps.release.outputs['packages/cli--tag_name'] }}
22+
steps:
23+
- uses: googleapis/release-please-action@v4
24+
id: release
25+
with:
26+
config-file: .release-please-config.json
27+
manifest-file: .release-please-manifest.json
28+
29+
# Step 2: when a CLI release was just created, build & publish to npm.
30+
publish-cli:
31+
needs: release-please
32+
if: needs.release-please.outputs.cli_released == 'true'
33+
runs-on: ubuntu-latest
34+
steps:
35+
- uses: actions/checkout@v4
36+
37+
- uses: pnpm/action-setup@v4
38+
with:
39+
version: 9
40+
41+
- uses: actions/setup-node@v4
42+
with:
43+
node-version: 20
44+
registry-url: https://registry.npmjs.org
45+
cache: pnpm
46+
47+
- name: Install dependencies
48+
run: pnpm install --frozen-lockfile
49+
50+
- name: Typecheck
51+
run: cd packages/cli && npx tsc --noEmit
52+
53+
- name: Build CLI
54+
run: pnpm --filter f2u-cli build
55+
56+
- name: Publish to npm
57+
run: pnpm --filter f2u-cli publish --access public --no-git-checks
58+
env:
59+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.release-please-config.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3+
"bump-minor-pre-major": true,
4+
"bump-patch-for-minor-pre-major": false,
5+
"include-v-in-tag": true,
6+
"include-component-in-tag": true,
7+
"separate-pull-requests": false,
8+
"packages": {
9+
"packages/cli": {
10+
"release-type": "node",
11+
"package-name": "f2u-cli",
12+
"changelog-path": "CHANGELOG.md"
13+
}
14+
}
15+
}

.release-please-manifest.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"packages/cli": "0.1.4"
3+
}

0 commit comments

Comments
 (0)