-
Notifications
You must be signed in to change notification settings - Fork 24
178 lines (152 loc) · 6.54 KB
/
release.yml
File metadata and controls
178 lines (152 loc) · 6.54 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
name: Release
on:
push:
branches:
- main
permissions:
id-token: write # Required for OIDC
contents: write
pull-requests: write
packages: write
concurrency: ${{ github.workflow }}-${{ github.ref }}
env:
CI: true
jobs:
release:
name: Release
runs-on: ubuntu-latest
environment:
name: 'release'
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
name: Install pnpm
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-wasip1
- name: Install Dependencies
# not frozen since we are using workspaces & package versions will change
run: pnpm install --no-frozen-lockfile
- name: Build packages
run: pnpm run build:release
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
publish: pnpm run release
commit: '[ci] release'
title: '[ci] release'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Trigger benchmark baseline update
if: steps.changesets.outputs.published == 'true'
uses: peter-evans/repository-dispatch@v3
with:
event-type: release-published
client-payload: '{"publishedPackages": ${{ steps.changesets.outputs.publishedPackages }}}'
# gt (primary CLI package, lives in packages/cli/)
- name: Check if gt was published
id: check-gt
if: steps.changesets.outputs.published == 'true'
run: |
published_packages='${{ steps.changesets.outputs.publishedPackages }}'
if echo "$published_packages" | grep -q '"name": *"gt"'; then
echo "should_release_bin=true" >> $GITHUB_OUTPUT
else
echo "should_release_bin=false" >> $GITHUB_OUTPUT
fi
- name: Extract gt version
id: gt-version
if: steps.check-gt.outputs.should_release_bin == 'true'
run: |
published_packages='${{ steps.changesets.outputs.publishedPackages }}'
version=$(echo "$published_packages" | grep -A1 '"name": *"gt"' | grep '"version"' | sed 's/.*"version": *"\([^"]*\)".*/\1/')
echo "version=$version" >> $GITHUB_OUTPUT
- name: Build gt binaries
if: steps.check-gt.outputs.should_release_bin == 'true'
run: pnpm --filter gt run build:bin:clean
- name: Upload gt binaries to R2
if: steps.check-gt.outputs.should_release_bin == 'true'
uses: ryand56/r2-upload-action@v1.4
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET_NAME }}
source-dir: packages/cli/binaries
destination-dir: cli/v${{ steps.gt-version.outputs.version }}
- name: Upload gt binaries to R2 (latest)
if: steps.check-gt.outputs.should_release_bin == 'true'
uses: ryand56/r2-upload-action@v1.4
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET_NAME }}
source-dir: packages/cli/binaries
destination-dir: cli/latest
- name: Release gt binary to npm
if: steps.check-gt.outputs.should_release_bin == 'true'
run: pnpm --filter gt run bin:prep && pnpm --filter gt publish --tag bin --no-git-checks && pnpm --filter gt run bin:restore && pnpm --filter gt run build:clean
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
# gtx-cli (backward-compat wrapper, lives in packages/gtx-cli/)
- name: Check if gtx-cli was published
id: check-gtx-cli
if: steps.changesets.outputs.published == 'true'
run: |
published_packages='${{ steps.changesets.outputs.publishedPackages }}'
if echo "$published_packages" | grep -q '"name": *"gtx-cli"'; then
echo "should_release_bin=true" >> $GITHUB_OUTPUT
else
echo "should_release_bin=false" >> $GITHUB_OUTPUT
fi
- name: Extract gtx-cli version
id: gtx-cli-version
if: steps.check-gtx-cli.outputs.should_release_bin == 'true'
run: |
published_packages='${{ steps.changesets.outputs.publishedPackages }}'
version=$(echo "$published_packages" | grep -A1 '"name": *"gtx-cli"' | grep '"version"' | sed 's/.*"version": *"\([^"]*\)".*/\1/')
echo "version=$version" >> $GITHUB_OUTPUT
- name: Build gtx-cli binaries
if: steps.check-gtx-cli.outputs.should_release_bin == 'true'
run: pnpm --filter gtx-cli run build:bin:clean
- name: Upload gtx-cli binaries to R2
if: steps.check-gtx-cli.outputs.should_release_bin == 'true'
uses: ryand56/r2-upload-action@v1.4
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET_NAME }}
source-dir: packages/gtx-cli/binaries
destination-dir: gtx-cli/v${{ steps.gtx-cli-version.outputs.version }}
- name: Upload gtx-cli binaries to R2 (latest)
if: steps.check-gtx-cli.outputs.should_release_bin == 'true'
uses: ryand56/r2-upload-action@v1.4
with:
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }}
r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }}
r2-bucket: ${{ secrets.R2_BUCKET_NAME }}
source-dir: packages/gtx-cli/binaries
destination-dir: gtx-cli/latest
- name: Release gtx-cli binary to npm
if: steps.check-gtx-cli.outputs.should_release_bin == 'true'
run: pnpm --filter gtx-cli run bin:prep && pnpm --filter gtx-cli publish --tag bin --no-git-checks && pnpm --filter gtx-cli run bin:restore && pnpm --filter gtx-cli run build:clean
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}