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: 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: | npm i -g @aikidosec/safe-chain safe-chain setup-ci - name: Set the version in safe-chain package if: inputs.version != '' run: npm --no-git-tag-version version ${{ inputs.version }} --workspace=packages/safe-chain - name: Install dependencies run: npm ci --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/* create-proxy-binaries: name: Create proxy 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: x86_64-apple-darwin extension: "" - os: macos arch: arm64 runner: macos-latest target: aarch64-apple-darwin extension: "" - os: linux arch: x64 runner: ubuntu-latest target: x86_64-unknown-linux-gnu extension: "" - os: linux arch: arm64 runner: ubuntu-24.04-arm target: aarch64-unknown-linux-gnu extension: "" - os: win arch: x64 runner: windows-latest target: x86_64-pc-windows-msvc extension: ".exe" - os: win arch: arm64 runner: windows-11-arm target: aarch64-pc-windows-msvc extension: ".exe" steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Rust uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Build proxy working-directory: proxy run: cargo build --release --target ${{ matrix.target }} - name: Upload proxy artifact uses: actions/upload-artifact@v4 with: name: proxy-${{ matrix.os }}-${{ matrix.arch }} path: proxy/target/${{ matrix.target }}/release/proxy${{ matrix.extension }}