name: Create binaries on: pull_request: workflow_call: inputs: version: description: "Version to set in package.json" required: false type: string jobs: create-binaries: name: Create binary for ${{ matrix.os }}-${{ matrix.arch }} runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: include: - os: macos arch: x64 runner: macos-15-intel target: node20-macos-x64 extension: "" - os: macos arch: arm64 runner: macos-latest target: node20-macos-arm64 extension: "" - os: linux arch: x64 runner: ubuntu-latest target: node20-linux-x64 extension: "" - os: linux arch: arm64 runner: ubuntu-24.04-arm target: node20-linux-arm64 extension: "" - os: linuxstatic arch: x64 runner: ubuntu-latest target: node20-linuxstatic-x64 extension: "" - os: linuxstatic arch: arm64 runner: ubuntu-24.04-arm target: node20-linuxstatic-arm64 extension: "" - os: win arch: x64 runner: windows-latest target: node20-win-x64 extension: ".exe" - os: win arch: arm64 runner: windows-11-arm target: node20-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: "20.x" - name: Setup safe-chain run: curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | sh -s -- --ci shell: bash - name: Install dependencies run: npm ci --ignore-scripts - name: Set the version in safe-chain package if: inputs.version != '' run: npm --no-git-tag-version version ${{ inputs.version }} --workspace=packages/safe-chain --ignore-scripts - name: Create binary run: | node build.js ${{ matrix.target }} - name: Upload binary artifact uses: actions/upload-artifact@v4 with: name: safe-chain-${{ matrix.os }}-${{ matrix.arch }} path: dist/*