-
Notifications
You must be signed in to change notification settings - Fork 19
140 lines (117 loc) · 4.72 KB
/
pre_release.yaml
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
name: Create a pre-release
on:
# Push to master will deploy a beta version
push:
branches:
- master
tags-ignore:
- "**" # Ignore all tags to prevent duplicate builds when tags are pushed.
concurrency:
group: release
cancel-in-progress: false
jobs:
release_metadata:
if: "!startsWith(github.event.head_commit.message, 'docs') && !startsWith(github.event.head_commit.message, 'ci') && startsWith(github.repository, 'apify/')"
name: Prepare release metadata
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.release_metadata.outputs.version_number }}
changelog: ${{ steps.release_metadata.outputs.changelog }}
steps:
- uses: apify/workflows/git-cliff-release@main
name: Prepare release metadata
id: release_metadata
with:
release_type: prerelease
existing_changelog_path: CHANGELOG.md
wait_for_checks:
name: Wait for code checks to pass
runs-on: ubuntu-latest
steps:
- uses: lewagon/wait-on-check-action@v1.3.4
with:
ref: ${{ github.ref }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
check-regexp: (Build & Test .*|Test Python template support|Lint|Docs build)
wait-interval: 5
update_changelog:
needs: [release_metadata, wait_for_checks]
name: Update changelog
runs-on: ubuntu-latest
outputs:
changelog_commitish: ${{ steps.commit.outputs.commit_long_sha || github.sha }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
registry-url: https://registry.npmjs.org
- name: Enable corepack
run: |
corepack enable
corepack prepare yarn@stable --activate
git update-index --assume-unchanged .yarnrc.yml
- name: Activate cache for Node.js 22
uses: actions/setup-node@v4
with:
cache: yarn
# - name: Update package version in package.json
# run: yarn 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: Format
run: yarn && yarn format:fix
- name: Commit changes
id: commit
uses: EndBug/add-and-commit@v9
with:
author_name: Apify Release Bot
author_email: noreply@apify.com
message: "chore(release): Update changelog and package version [skip ci]"
publish_to_npm:
name: Publish to NPM
needs: [update_changelog]
runs-on: ubuntu-latest
# Required for --provenances to work
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.update_changelog.changelog_commitish }}
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
registry-url: https://registry.npmjs.org
- name: Enable corepack
run: |
corepack enable
corepack prepare yarn@stable --activate
- name: Activate cache for Node.js 22
uses: actions/setup-node@v4
with:
cache: yarn
- name: Install dependencies
run: yarn
# Check version consistency and increment pre-release version number for beta only.
- name: Bump pre-release version
run: yarn tsx ./.github/scripts/before-beta-release.ts
- name: Build module
run: yarn build
- name: Pack with yarn
run: yarn pack
- name: Publish to NPM
run: |
# `yarn npm publish` does not currently support --provenance: https://github.com/yarnpkg/berry/issues/5430
npm publish package.tgz --provenance --access public --tag beta
env:
NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}