@@ -194,6 +194,148 @@ blocks:
194194 - bash -c '../../ci/tests/run_perf_test.sh'
195195 - rm -rf ./node_modules
196196
197+ - name : " PR Artifacts: Linux amd64"
198+ run :
199+ when : " branch != 'master' AND tag !~ '^v[0-9]\\ .' AND change_in(['/package.json', '/lib', '/src'])"
200+ dependencies : [ ]
201+ task :
202+ agent :
203+ machine :
204+ type : s1-prod-ubuntu24-04-amd64-1
205+ env_vars :
206+ - name : ARCHITECTURE
207+ value : " x64"
208+ - name : PLATFORM
209+ value : " linux"
210+ - name : LIBC
211+ value : " glibc"
212+ prologue :
213+ commands :
214+ - ' [[ -z $DOCKERHUB_APIKEY ]] || docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY'
215+ jobs :
216+ - name : " Build PR Artifact"
217+ matrix :
218+ - env_var : NODE_VERSION_ABI
219+ values :
220+ - 20,115
221+ - 22,127
222+ commands :
223+ - export NODE_VERSION=$(echo $NODE_VERSION_ABI | cut -d, -f1)
224+ - export NODE_ABI=$(echo $NODE_VERSION_ABI | cut -d, -f2)
225+ - export PR_ID="pr-${SEMAPHORE_GIT_BRANCH}-${SEMAPHORE_GIT_SHA:0:7}"
226+ - .semaphore/docker_run_with_volumes.sh node:${NODE_VERSION}-bullseye /v/.semaphore/build-docker-debian.sh
227+ - export PKG_VERSION=$(node -p "require('./package.json').version")
228+ - export ARTIFACT_PATTERN="*-node-v${NODE_ABI}-${PLATFORM}-${LIBC}-${ARCHITECTURE}.tar.gz"
229+ - export BUILT_ARTIFACT=$(find build/stage/${PKG_VERSION} -name "${ARTIFACT_PATTERN}" -type f | head -1)
230+ - if [ -z "$BUILT_ARTIFACT" ]; then echo "Error : Artifact not found"; exit 1; fi
231+ - mkdir -p pr-artifacts/${PR_ID}
232+ - cp "$BUILT_ARTIFACT" "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
233+ - artifact push workflow "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)" --destination "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
234+ - echo "Published artifact : pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
235+
236+ - name : " PR Artifacts: Linux amd64 (musl)"
237+ run :
238+ when : " branch != 'master' AND tag !~ '^v[0-9]\\ .' AND change_in(['/package.json', '/lib', '/src'])"
239+ dependencies : [ ]
240+ task :
241+ agent :
242+ machine :
243+ type : s1-prod-ubuntu24-04-amd64-1
244+ env_vars :
245+ - name : ARCHITECTURE
246+ value : " x64"
247+ - name : PLATFORM
248+ value : " linux"
249+ - name : LIBC
250+ value : " musl"
251+ prologue :
252+ commands :
253+ - ' [[ -z $DOCKERHUB_APIKEY ]] || docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY'
254+ jobs :
255+ - name : " Build PR Artifact"
256+ matrix :
257+ - env_var : NODE_VERSION_ABI
258+ values :
259+ - 20,115
260+ - 22,127
261+ commands :
262+ - export NODE_VERSION=$(echo $NODE_VERSION_ABI | cut -d, -f1)
263+ - export NODE_ABI=$(echo $NODE_VERSION_ABI | cut -d, -f2)
264+ - export PR_ID="pr-${SEMAPHORE_GIT_BRANCH}-${SEMAPHORE_GIT_SHA:0:7}"
265+ - .semaphore/docker_run_with_volumes.sh node:${NODE_VERSION}-alpine /v/.semaphore/build-docker-alpine.sh
266+ - export PKG_VERSION=$(node -p "require('./package.json').version")
267+ - export ARTIFACT_PATTERN="*-node-v${NODE_ABI}-linux-${LIBC}-${ARCHITECTURE}.tar.gz"
268+ - export BUILT_ARTIFACT=$(find build/stage/${PKG_VERSION} -name "${ARTIFACT_PATTERN}" -type f | head -1)
269+ - if [ -z "$BUILT_ARTIFACT" ]; then echo "Error : Artifact not found"; exit 1; fi
270+ - mkdir -p pr-artifacts/${PR_ID}
271+ - cp "$BUILT_ARTIFACT" "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
272+ - artifact push workflow "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)" --destination "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
273+ - echo "Published artifact : pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
274+
275+ - name : " PR Artifacts: macOS arm64"
276+ run :
277+ when : " branch != 'master' AND tag !~ '^v[0-9]\\ .' AND change_in(['/package.json', '/lib', '/src'])"
278+ dependencies : []
279+ task :
280+ agent :
281+ machine :
282+ type : s1-macos-15-arm64-8
283+ env_vars :
284+ - name : ARCHITECTURE
285+ value : " arm64"
286+ - name : PLATFORM
287+ value : " darwin"
288+ - name : LIBC
289+ value : " unknown"
290+ jobs :
291+ - name : " Build PR Artifact"
292+ matrix :
293+ - env_var : NODE_VERSION_ABI
294+ values :
295+ - 20,115
296+ - 22,127
297+ commands :
298+ - export NODE_VERSION=$(echo $NODE_VERSION_ABI | cut -d, -f1)
299+ - export NODE_ABI=$(echo $NODE_VERSION_ABI | cut -d, -f2)
300+ - sem-version node $NODE_VERSION
301+ - export PR_ID="pr-${SEMAPHORE_GIT_BRANCH}-${SEMAPHORE_GIT_SHA:0:7}"
302+ - npm ci
303+ - npx node-pre-gyp package
304+ - export PKG_VERSION=$(node -p "require('./package.json').version")
305+ - export ARTIFACT_PATTERN="*-node-v${NODE_ABI}-${PLATFORM}-${LIBC}-${ARCHITECTURE}.tar.gz"
306+ - export BUILT_ARTIFACT=$(find build/stage/${PKG_VERSION} -name "${ARTIFACT_PATTERN}" -type f | head -1)
307+ - if [ -z "$BUILT_ARTIFACT" ]; then echo "Error : Artifact not found"; exit 1; fi
308+ - mkdir -p pr-artifacts/${PR_ID}
309+ - cp "$BUILT_ARTIFACT" "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
310+ - artifact push workflow "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)" --destination "pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
311+ - echo "Published artifact : pr-artifacts/${PR_ID}/$(basename $BUILT_ARTIFACT)"
312+
313+ - name : " PR Artifacts: Summary"
314+ dependencies :
315+ - " PR Artifacts: Linux amd64"
316+ - " PR Artifacts: Linux amd64 (musl)"
317+ - " PR Artifacts: macOS arm64"
318+ run :
319+ when : " branch != 'master' AND tag !~ '^v[0-9]\\ .' AND change_in(['/package.json', '/lib', '/src'])"
320+ task :
321+ agent :
322+ machine :
323+ type : s1-prod-ubuntu24-04-amd64-1
324+ jobs :
325+ - name : " List PR Artifacts"
326+ commands :
327+ - export PR_ID="pr-${SEMAPHORE_GIT_BRANCH}-${SEMAPHORE_GIT_SHA:0:7}"
328+ - artifact pull workflow pr-artifacts/${PR_ID}
329+ - echo "=== PR Artifacts Available for Download ==="
330+ - echo "PR ID : ${PR_ID}"
331+ - echo "Branch : ${SEMAPHORE_GIT_BRANCH}"
332+ - echo "Commit : ${SEMAPHORE_GIT_SHA}"
333+ - echo ""
334+ - echo "Available artifacts:"
335+ - find pr-artifacts/${PR_ID} -name "*.tar.gz" -type f | while read f; do echo " - $(basename $f)"; done || echo " No artifacts found (may still be building)"
336+ - echo ""
337+ - echo "Download artifacts from Semaphore CI workflow artifacts section"
338+
197339 - name : " Linux amd64: Release"
198340 dependencies : [ ]
199341 run :
0 commit comments