AikidoSec-safe-chain/.github/workflows/create-artifact.yml
2025-12-12 14:23:42 +01:00

141 lines
3.7 KiB
YAML

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: safe-chain-proxy-${{ matrix.os }}-${{ matrix.arch }}
path: proxy/target/${{ matrix.target }}/release/safe-chain-proxy${{ matrix.extension }}