Separate pipeline for binary creation

This commit is contained in:
Sander Declerck 2025-11-27 15:21:36 +01:00
parent afbf3d94c2
commit 543f10657c
No known key found for this signature in database
2 changed files with 86 additions and 19 deletions

86
.github/workflows/create-artifact.yml vendored Normal file
View file

@ -0,0 +1,86 @@
name: Create binaries
on: pull_request
jobs:
create-binaries:
name: Create binary for ${{ matrix.os }}-${{ matrix.arch }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- os: macos
arch: x64
runner: macos-15-intel
target: node22-macos-x64
extension: ''
- os: macos
arch: arm64
runner: macos-latest
target: node22-macos-arm64
extension: ''
- os: linux
arch: x64
runner: ubuntu-latest
target: node22-linux-x64
extension: ''
- os: linux
arch: arm64
runner: ubuntu-24.04-arm
target: node22-linux-arm64
extension: ''
- os: win
arch: x64
runner: windows-latest
target: node22-win-x64
extension: '.exe'
- os: win
arch: arm64
runner: windows-11-arm
target: node22-win-arm64
extension: '.exe'
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "lts/*"
- name: Setup safe-chain
run: |
npm i -g @aikidosec/safe-chain
safe-chain setup-ci
- name: Install dependencies
run: npm ci
- name: Create binary (Unix)
if: matrix.os != 'win'
run: |
npm i -g esbuild@0.27.0 @yao-pkg/pkg@6.10.1
mkdir -p "dist/${{ matrix.os }}-${{ matrix.arch }}"
esbuild "./packages/safe-chain/bin/safe-chain.js" --bundle --platform=node --target=node22 > "./dist/safe-chain.cjs"
pkg "./dist/safe-chain.cjs" --targets ${{ matrix.target }} --output "./dist/${{ matrix.os }}-${{ matrix.arch }}/safe-chain${{ matrix.extension }}"
shell: bash
- name: Create binary (Windows)
if: matrix.os == 'win'
run: |
npm i -g esbuild@0.27.0 @yao-pkg/pkg@6.10.1
New-Item -ItemType Directory -Force -Path "dist/${{ matrix.os }}-${{ matrix.arch }}"
esbuild "./packages/safe-chain/bin/safe-chain.js" --bundle --platform=node --target=node22 | Out-File -FilePath "./dist/safe-chain.cjs" -Encoding utf8
pkg "./dist/safe-chain.cjs" --targets ${{ matrix.target }} --output "./dist/${{ matrix.os }}-${{ matrix.arch }}/safe-chain${{ matrix.extension }}"
shell: powershell
- name: Upload binary artifact
uses: actions/upload-artifact@v4
with:
name: safe-chain-${{ matrix.os }}-${{ matrix.arch }}
path: dist/${{ matrix.os }}-${{ matrix.arch }}/*

View file

@ -43,25 +43,6 @@ jobs:
name: safe-chain-package
path: aikidosec-safe-chain-*.tgz
- name: Create binaries
run: |
npm i -g esbuild@0.27.0 @yao-pkg/pkg@6.10.1
mkdir "dist"
esbuild "./packages/safe-chain/bin/safe-chain.js" --bundle --platform=node --target=node22 > "./dist/safe-chain.cjs"
pkg "./dist/safe-chain.cjs" --targets node22-macos-x64 --output "./dist/macos-x64/safe-chain"
pkg "./dist/safe-chain.cjs" --targets node22-macos-arm64 --output "./dist/macos-arm64/safe-chain"
pkg "./dist/safe-chain.cjs" --targets node22-linux-x64 --output "./dist/linux-x64/safe-chain"
pkg "./dist/safe-chain.cjs" --targets node22-linux-arm64 --output "./dist/linux-arm64/safe-chain"
pkg "./dist/safe-chain.cjs" --targets node22-win-x64 --output "./dist/win-x64/safe-chain.exe"
pkg "./dist/safe-chain.cjs" --targets node22-win-arm64 --output "./dist/win-arm64/safe-chain.exe"
ls -la ./dist
- name: Upload safe-chain-binaries
uses: actions/upload-artifact@v4
with:
name: safe-chain-binaries
path: dist/*
e2e-tests:
name: Run E2E tests