build-binaries.yml•2.53 kB
name: Binaries
on:
workflow_call:
workflow_dispatch:
concurrency:
group: binaries-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
HUSKY: 0
jobs:
binaries:
runs-on: ${{ matrix.runner || matrix.os }}
environment: release
permissions:
contents: write
strategy:
matrix:
include:
# Linux builds
- os: ubuntu-latest
platform: linux-x64
script: sea:binary:linux
artifact: 1mcp-linux-x64
- os: ubuntu-latest
platform: linux-arm64
script: sea:binary:linux:arm64
artifact: 1mcp-linux-arm64
runner: ubuntu-24.04-arm
# Windows builds
- os: windows-latest
platform: win32-x64
script: sea:binary:win
artifact: 1mcp-win32-x64.exe
# macOS builds
- os: macos-13
platform: darwin-x64
script: sea:binary:macos:x64
artifact: 1mcp-darwin-x64
- os: macos-latest
platform: darwin-arm64
script: sea:binary:macos
artifact: 1mcp-darwin-arm64
steps:
- uses: actions/checkout@v4
with:
ref: main
- name: Setup Node.js and pnpm
uses: ./.github/actions/setup-node-pnpm
- name: Build and create SEA binary
run: |
pnpm sea:build
pnpm ${{ matrix.script }}
- name: Test binary functionality (Unix)
if: ${{ !startsWith(matrix.platform, 'win32') }}
run: |
chmod +x scripts/test-binary-unix.sh
./scripts/test-binary-unix.sh ./1mcp ${{ matrix.platform }}
shell: bash
- name: Test binary functionality (Windows)
if: ${{ startsWith(matrix.platform, 'win32') }}
run: |
.\scripts\test-binary-windows.ps1 -BinaryPath ".\1mcp.exe" -Platform "${{ matrix.platform }}"
shell: powershell
- name: Rename binary for platform-specific archive
run: |
if [[ "${{ matrix.platform }}" == win32-* ]]; then
mv 1mcp.exe ${{ matrix.artifact }}
else
mv 1mcp ${{ matrix.artifact }}
fi
shell: bash
- name: Create compressed archive
run: pnpm archive
- name: Upload compressed archive artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: |
*.tar.gz
*.zip
retention-days: 1