-
Notifications
You must be signed in to change notification settings - Fork 63
195 lines (170 loc) · 7.47 KB
/
Copy pathrelease.yaml
File metadata and controls
195 lines (170 loc) · 7.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
name: Release @latest
on:
workflow_dispatch:
inputs:
release_type:
description: The version to bump (if you choose custom, please include it under custom version)
required: true
default: 'patch'
type: choice
options:
- 'auto'
- 'patch'
- 'minor'
- 'major'
- 'custom'
custom_version:
description: The custom version to bump to (only for "custom" type)
required: false
type: string
default: ''
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Test before releasing to ensure we don't release a broken version
build_and_test:
name: Build & Test
if: (!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, 'docs:'))
strategy:
fail-fast: true
matrix:
# We don't test on Windows as the tests are flaky
os: [ubuntu-22.04]
node-version: [20, 22, 24]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm and dependencies
uses: apify/actions/pnpm-install@v1.4.0
- name: Cache Playwright browsers
uses: actions/cache@v6
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
playwright-${{ runner.os }}-
- name: Install Playwright browsers
timeout-minutes: 10
run: pnpm exec playwright install --with-deps
- name: Build
run: pnpm ci:build
- name: Tests
run: pnpm test
release_metadata:
name: Prepare release metadata
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.release_metadata.outputs.version_number }}
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
changelog: ${{ steps.release_metadata.outputs.changelog }}
release_notes: ${{ steps.release_metadata.outputs.release_notes }}
steps:
- uses: apify/actions/git-cliff-release@v1.4.0
name: Prepare release metadata
id: release_metadata
with:
release_type: ${{ inputs.release_type }}
custom_version: ${{ inputs.custom_version }}
existing_changelog_path: CHANGELOG.md
update_changelog:
name: Update changelog
if: (!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, 'docs:'))
needs: [release_metadata, build_and_test]
runs-on: ubuntu-22.04
outputs:
changelog_commitish: ${{ steps.commit.outputs.commit_long_sha }}
version_number: ${{ needs.release_metadata.outputs.version_number }}
tag_name: ${{ needs.release_metadata.outputs.tag_name }}
release_notes: ${{ needs.release_metadata.outputs.release_notes }}
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
fetch-depth: 0
- name: Use Node.js 24
uses: actions/setup-node@v6
with:
node-version: 24
registry-url: 'https://registry.npmjs.org'
- name: Install pnpm and dependencies
uses: apify/actions/pnpm-install@v1.4.0
- name: Update package version in package.json
run: pnpm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }}
- name: Update CHANGELOG.md
uses: DamianReeves/write-file-action@master
with:
path: CHANGELOG.md
write-mode: overwrite
contents: ${{ needs.release_metadata.outputs.changelog }}
- name: Add changes to the release commit and push
id: commit
uses: apify/actions/signed-commit@v1.4.0
with:
message: 'chore(release): set package version to ${{ needs.release_metadata.outputs.version_number }} and update changelog [skip ci]'
pull: '--rebase --autostash'
github-token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
create_github_release:
name: Create github release
needs: [update_changelog]
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
steps:
- name: Create release
uses: softprops/action-gh-release@v3
with:
tag_name: ${{ needs.update_changelog.outputs.tag_name }}
name: ${{ needs.update_changelog.outputs.version_number }}
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
body: ${{ needs.update_changelog.outputs.release_notes }}
version_docs:
name: Version docs
if: ${{ inputs.release_type == 'minor' || inputs.release_type == 'major' }}
needs: [update_changelog]
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
# Always check out the default branch (not the SHA) so the commit
# action can push to a branch ref.
ref: ${{ github.event.repository.default_branch }}
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
- name: Use Node.js 24
uses: actions/setup-node@v6
with:
node-version: 24
- name: Install pnpm and dependencies
uses: apify/actions/pnpm-install@v1.4.0
- name: Run docusaurus versioning
run: |
MAJOR_MINOR=$(echo "${{ needs.update_changelog.outputs.version_number }}" | cut -d. -f1,2)
cd website
pnpm exec docusaurus docs:version "$MAJOR_MINOR"
pnpm exec docusaurus api:version "$MAJOR_MINOR"
- name: Commit versioned docs
uses: apify/actions/signed-commit@v1.4.0
with:
message: 'docs: version docs for ${{ needs.update_changelog.outputs.version_number }} [skip ci]'
pull: '--rebase --autostash'
github-token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
publish_to_npm:
name: Publish to npm
runs-on: ubuntu-22.04
needs: [update_changelog]
steps:
- name: Publish to npm
uses: apify/actions/execute-workflow@v1.4.0
with:
workflow: publish-to-npm.yaml
inputs: >
{
"ref": "${{ needs.update_changelog.outputs.changelog_commitish }}"
}