Skip to content

Commit f329567

Browse files
committed
ci: release workflow
1 parent 0602946 commit f329567

File tree

15 files changed

+831
-132
lines changed

15 files changed

+831
-132
lines changed
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: Prepare release PR
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version to publish'
8+
required: true
9+
default: patch
10+
type: string
11+
release-type:
12+
type: choice
13+
description: Packages
14+
options:
15+
- '@tutorialkit/* and create-tutorial'
16+
- tutorialkit CLI
17+
18+
jobs:
19+
prepare_release:
20+
name: Prepare release PR
21+
if: ${{ contains(inputs.release-type, 'create-tutorial') }}
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
with:
27+
fetch-depth: 0
28+
29+
- uses: ./.github/actions/setup-and-build
30+
31+
- name: Bump versions
32+
run: >
33+
pnpm --recursive
34+
--filter "@tutorialkit/*"
35+
--filter create-tutorial
36+
exec pnpm version --no-git-tag-version --allow-same-version ${{ inputs.version }}
37+
38+
- name: Generage changelog
39+
run: |
40+
pnpm run changelog
41+
git checkout ./packages/cli
42+
43+
- name: Create Pull Request
44+
uses: peter-evans/create-pull-request@v6
45+
with:
46+
# Note: `publish-release.yaml` checks explicitly for this commit message
47+
commit-message: 'chore: release @tutorialkit packages and create-tutorial, version: ${{ inputs.version }}'
48+
title: 'chore: release @tutorialkit packages and create-tutorial, version: ${{ inputs.version }}'
49+
body: 'Bump packages to version ${{ inputs.version }} and generate changelogs'
50+
#reviewers: SamVerschueren,d3lm,Nemikolh,AriPerkkio
51+
reviewers: AriPerkkio
52+
branch: chore/release-${{ inputs.version }}
53+
54+
prepare_release_CLI:
55+
name: Prepare release PR CLI
56+
if: ${{ contains(inputs.release-type, 'tutorialkit CLI') }}
57+
runs-on: ubuntu-latest
58+
steps:
59+
- name: Checkout
60+
uses: actions/checkout@v4
61+
with:
62+
fetch-depth: 0
63+
64+
- uses: ./.github/actions/setup-and-build
65+
66+
- name: Bump version
67+
run: >
68+
pnpm --recursive
69+
--filter tutorialkit
70+
exec npm version --no-git-tag-version --allow-same-version ${{ inputs.version }}
71+
72+
# Run integration tests for CLI before making the release PR.
73+
# We'll re-run these tests just in case before actual release publishing.
74+
- name: Pre Tests
75+
run: |
76+
cd packages/cli
77+
pnpm update-template
78+
cd ../../integration
79+
pnpm test
80+
81+
- name: Generage changelog
82+
run: |
83+
pnpm run changelog
84+
git add ./packages/cli ./packages/template
85+
git checkout ./packages
86+
git checkout CHANGELOG.md
87+
88+
- name: Create Pull Request
89+
uses: peter-evans/create-pull-request@v6
90+
with:
91+
# Note: `publish-release.yaml` checks explicitly for this commit message
92+
commit-message: 'chore: release tutorialkit CLI, version: ${{ inputs.version }}'
93+
title: 'chore: release tutorialkit CLI, version: ${{ inputs.version }}'
94+
body: 'Bump tutorialkit CLI to version ${{ inputs.version }} and generate changelog'
95+
#reviewers: SamVerschueren,d3lm,Nemikolh,AriPerkkio
96+
reviewers: AriPerkkio
97+
branch: chore/release-cli-${{ inputs.version }}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: Publish release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
workflow_dispatch: # Debug only
8+
9+
jobs:
10+
publish_release:
11+
name: Publish release
12+
runs-on: ubuntu-latest
13+
# Note: `prepare-release.yaml` sets this commit message
14+
if: ${{ contains(github.event.head_commit.message, 'release @tutorialkit packages') }}
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
with:
19+
fetch-depth: 0
20+
21+
- uses: ./.github/actions/setup-and-build
22+
23+
# Read "version" of "@tutorialkit/astro" to "steps.resolve-release-version.outputs.PACKAGE_VERSION"
24+
- name: Resolve release version
25+
id: resolve-release-version
26+
shell: bash
27+
run: >
28+
echo "$(
29+
node -e "
30+
const fs = require('fs');
31+
const pkg = fs.readFileSync('./packages/astro/package.json', 'utf8');
32+
const version = JSON.parse(pkg).version
33+
console.log('PACKAGE_VERSION=' + version);
34+
"
35+
)" >> $GITHUB_OUTPUT
36+
37+
- name: Create and push git tag
38+
run: |
39+
git config --global user.name 'github-actions'
40+
git config --global user.email '[email protected]'
41+
# TODO: Remove, this works OK
42+
# git tag ${{ steps.resolve-release-version.outputs.PACKAGE_VERSION }}
43+
# git push origin ${{ steps.resolve-release-version.outputs.PACKAGE_VERSION }}
44+
45+
# TODO: Remove --dry-run
46+
- name: Publish to npm
47+
run: >
48+
pnpm --recursive
49+
--filter "@tutorialkit/*"
50+
--filter create-tutorial
51+
exec pnpm publish --provenance --dry-run
52+
env:
53+
NODE_AUTH_TOKEN: fail-and-prevent-release
54+
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
55+
56+
publish_release_CLI:
57+
name: Publish release CLI
58+
runs-on: ubuntu-latest
59+
# Note: `prepare-release.yaml` sets this commit message
60+
if: ${{ contains(github.event.head_commit.message, 'release tutorialkit CLI') || (github.event_name == 'workflow_dispatch') }}
61+
steps:
62+
- name: Checkout
63+
uses: actions/checkout@v4
64+
with:
65+
fetch-depth: 0
66+
67+
- uses: ./.github/actions/setup-and-build
68+
69+
- name: Update template's versions
70+
working-directory: ./packages/cli
71+
run: pnpm update-template
72+
73+
- name: Integration Tests
74+
working-directory: ./integration
75+
run: pnpm test
76+
77+
# TODO: Remove --dry-run
78+
- name: Publish to npm
79+
run: pnpm --recursive --filter tutorialkit exec pnpm publish --provenance --dry-run
80+
env:
81+
NODE_AUTH_TOKEN: fail-and-prevent-release
82+
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dist-ssr
1818
*.sln
1919
*.sw?
2020
.pnpm-store
21-
/tutorialkit/template
21+
/packages/cli/template/**
2222
tsconfig.tsbuildinfo
2323
tsconfig.build.tsbuildinfo
2424
.tmp

integration/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Integration
2+
3+
TODO add comment

0 commit comments

Comments
 (0)