-
Notifications
You must be signed in to change notification settings - Fork 1.1k
241 lines (206 loc) · 9.16 KB
/
Copy pathpkg_artifacts.yml
File metadata and controls
241 lines (206 loc) · 9.16 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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
name: Package Artifacts
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
jobs:
build:
name: Build Packages
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Parse .tool-versions
uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1
with:
filename: '.tool-versions'
uppercase: 'true'
prefix: 'tool_version_'
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0
with:
version: '${{ env.TOOL_VERSION_PNPM }}'
- name: Setup Node.js
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version: '${{ env.TOOL_VERSION_NODEJS }}'
cache: pnpm
- name: Configure pnpm
run: |
pnpm config set auto-install-peers true
pnpm config set exclude-links-from-lockfile true
- name: Sanitize branch name
env:
BRANCH: ${{ github.head_ref }}
run: |
echo "BRANCH_ID=$(echo "$BRANCH" | sed 's/[^0-9A-Za-z-]/-/g')" >> "$GITHUB_ENV"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build JS SDK
working-directory: packages/js-sdk
run: pnpm run build
- name: Build CLI
working-directory: packages/cli
run: pnpm run build
- name: Build Code Interpreter JS SDK
working-directory: packages/code-interpreter-js
run: pnpm run build
- name: Build Desktop JS SDK
working-directory: packages/desktop-js
run: pnpm run build
# Before the SDK is renamed below: `pnpm pack` resolves the CLI's `workspace:^`
# range to whatever version the workspace SDK has now, and a prerelease that
# was never published would leave `e2b` unresolvable.
- name: Pack CLI
working-directory: packages/cli
run: |
pnpm version prerelease --preid=${{ env.BRANCH_ID }} --no-git-tag-version
pnpm pack
- name: Upload CLI artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-cli
path: packages/cli/*.tgz
- name: Pack Code Interpreter JS SDK
working-directory: packages/code-interpreter-js
run: |
pnpm version prerelease --preid=${{ env.BRANCH_ID }} --no-git-tag-version
pnpm pack
- name: Upload Code Interpreter JS SDK artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-code-interpreter-js
path: packages/code-interpreter-js/*.tgz
- name: Pack Desktop JS SDK
working-directory: packages/desktop-js
run: |
pnpm version prerelease --preid=${{ env.BRANCH_ID }} --no-git-tag-version
pnpm pack
- name: Upload Desktop JS SDK artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-desktop-js
path: packages/desktop-js/*.tgz
# Independent of the CLI steps above: a CLI failure should still leave
# reviewers a usable SDK tarball, as it did before the CLI moved ahead of it.
- name: Pack JS SDK
if: ${{ !cancelled() }}
working-directory: packages/js-sdk
run: |
pnpm version prerelease --preid=${{ env.BRANCH_ID }} --no-git-tag-version
pnpm pack
- name: Upload JS SDK artifact
if: ${{ !cancelled() }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-js-sdk
path: packages/js-sdk/*.tgz
- name: Install uv
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
with:
version: '${{ env.TOOL_VERSION_UV }}'
python-version: '${{ env.TOOL_VERSION_PYTHON }}'
enable-cache: true
- name: Build Python SDK
working-directory: packages/python-sdk
run: |
BASE_VERSION=$(uv version --short)
uv version "${BASE_VERSION}+${BRANCH_ID}"
uv build
- name: Upload Python SDK artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-python-sdk
path: packages/python-sdk/dist/*
- name: Build Code Interpreter Python SDK
working-directory: packages/code-interpreter-python
run: |
BASE_VERSION=$(uv version --short)
uv version "${BASE_VERSION}+${BRANCH_ID}"
uv build
- name: Upload Code Interpreter Python SDK artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-code-interpreter-python
path: packages/code-interpreter-python/dist/*
- name: Build Desktop Python SDK
working-directory: packages/desktop-python
run: |
BASE_VERSION=$(uv version --short)
uv version "${BASE_VERSION}+${BRANCH_ID}"
uv build
- name: Upload Desktop Python SDK artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: e2b-desktop-python
path: packages/desktop-python/dist/*
- name: Comment on PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
shopt -s nullglob
artifact_basename() {
if [ "$#" -ne 1 ]; then
echo "Expected exactly one artifact, found $#" >&2
return 1
fi
basename "$1"
}
JS_VERSION=$(node -p "require('./packages/js-sdk/package.json').version")
CLI_VERSION=$(node -p "require('./packages/cli/package.json').version")
JS_TGZ=$(artifact_basename packages/js-sdk/*.tgz)
CLI_TGZ=$(artifact_basename packages/cli/*.tgz)
CODE_INTERPRETER_JS_VERSION=$(node -p "require('./packages/code-interpreter-js/package.json').version")
CODE_INTERPRETER_JS_TGZ=$(artifact_basename packages/code-interpreter-js/*.tgz)
DESKTOP_JS_VERSION=$(node -p "require('./packages/desktop-js/package.json').version")
DESKTOP_JS_TGZ=$(artifact_basename packages/desktop-js/*.tgz)
PY_VERSION=$(grep '^version' packages/python-sdk/pyproject.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
PY_WHL=$(artifact_basename packages/python-sdk/dist/*.whl)
CODE_INTERPRETER_PY_VERSION=$(grep '^version' packages/code-interpreter-python/pyproject.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
CODE_INTERPRETER_PY_WHL=$(artifact_basename packages/code-interpreter-python/dist/*.whl)
DESKTOP_PY_VERSION=$(grep '^version' packages/desktop-python/pyproject.toml | head -1 | sed 's/.*"\(.*\)"/\1/')
DESKTOP_PY_WHL=$(artifact_basename packages/desktop-python/dist/*.whl)
BODY="<!-- e2b-pkg-artifacts -->"$'\n'
BODY+="### Package Artifacts"$'\n\n'
BODY+="Built from ${GITHUB_SHA::7}. Download artifacts from [this workflow run](${RUN_URL})."$'\n\n'
BODY+="**JS SDK** (\`e2b@${JS_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="npm install ./${JS_TGZ}"$'\n'
BODY+='```'$'\n\n'
BODY+="**CLI** (\`@e2b/cli@${CLI_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="npm install ./${CLI_TGZ}"$'\n'
BODY+='```'$'\n\n'
BODY+="**Code Interpreter JS SDK** (\`@e2b/code-interpreter@${CODE_INTERPRETER_JS_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="npm install ./${CODE_INTERPRETER_JS_TGZ}"$'\n'
BODY+='```'$'\n\n'
BODY+="**Desktop JS SDK** (\`@e2b/desktop@${DESKTOP_JS_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="npm install ./${DESKTOP_JS_TGZ}"$'\n'
BODY+='```'$'\n\n'
BODY+="**Python SDK** (\`e2b==${PY_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="pip install ./${PY_WHL}"$'\n'
BODY+='```'$'\n\n'
BODY+="**Code Interpreter Python SDK** (\`e2b-code-interpreter==${CODE_INTERPRETER_PY_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="pip install ./${CODE_INTERPRETER_PY_WHL}"$'\n'
BODY+='```'$'\n\n'
BODY+="**Desktop Python SDK** (\`e2b-desktop==${DESKTOP_PY_VERSION}\`):"$'\n'
BODY+='```sh'$'\n'
BODY+="pip install ./${DESKTOP_PY_WHL}"$'\n'
BODY+='```'$'\n'
COMMENT_ID=$(gh api "repos/${{ github.repository }}/issues/${PR_NUMBER}/comments" \
--paginate \
--jq '.[] | select(.body | contains("<!-- e2b-pkg-artifacts -->")) | .id' \
| tail -1)
if [ -n "$COMMENT_ID" ]; then
gh api "repos/${{ github.repository }}/issues/comments/${COMMENT_ID}" \
-X PATCH -f body="$BODY"
else
gh pr comment "$PR_NUMBER" --body "$BODY"
fi