diff --git a/.github/workflows/create-artifact.yml b/.github/workflows/create-artifact.yml new file mode 100644 index 0000000..f7984f1 --- /dev/null +++ b/.github/workflows/create-artifact.yml @@ -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 }}/* \ No newline at end of file diff --git a/.github/workflows/test-on-pr.yml b/.github/workflows/test-on-pr.yml index 644a928..f8087ef 100644 --- a/.github/workflows/test-on-pr.yml +++ b/.github/workflows/test-on-pr.yml @@ -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