AikidoSec-safe-chain/.github/workflows/create-artifact.yml
2025-12-12 15:10:34 +01:00

144 lines
3.8 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
- run: rustup toolchain install stable
- name: Cache Rust dependencies and build artifacts
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
with:
workspaces: "proxy -> target"
key: ${{ 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 }}