Skip to content

Use buildjet runners for arm64 #4

Use buildjet runners for arm64

Use buildjet runners for arm64 #4

Workflow file for this run

name: Release
on: [push]
jobs:
build:
strategy:
matrix:
os: [ubuntu-20.04, macos-11, macos-m1, windows-2019]
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
cache: yarn
node-version: 20
- name: Install dependencies
run: yarn install --frozen-lockfile --ignore-scripts
- name: Prebuild
run: yarn build
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: prebuilds/**/*.node
build-alpine:
name: Build on Alpine Linux
runs-on: ubuntu-latest
container:
image: node:lts-alpine
steps:
- name: Install build deps
run: apk add --no-cache g++ git make python3
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: yarn install --frozen-lockfile --ignore-scripts
- name: Prebuild
run: yarn build
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: prebuilds/**/*.node
build-arm:
strategy:
matrix:
image: [lts-slim, lts-alpine]
name: Build on arm64
runs-on: buildjet-2vcpu-ubuntu-2204-arm
container:
image: node:${{ matrix.image }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Install build deps
if: matrix.image == 'slim'
run: apt update -yq && apt install -yq g++ make python3
- name: Install build deps
if: matrix.image == 'alpine'
run: apk add --no-cache g++ make python3
- name: Install dependencies
run: yarn install --frozen-lockfile --ignore-scripts
- name: Prebuild
run: yarn build
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: prebuilds/**/*.node
build-freebsd:
name: Build on FreeBSD
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Package artifacts
uses: vmactions/freebsd-vm@v1
with:
envs: "npm_config_build_from_source"
prepare: |
pkg install -y gmake python3 yarn-node20
run: |
yarn install --frozen-lockfile --ignore-scripts
yarn build
sync: sshfs
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: prebuilds/**/*.node
publish:
name: Publish package
runs-on: ubuntu-latest
needs: [build, build-alpine, build-arm, build-freebsd]
container:
image: node:alpine
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Download artifacts
id: download-artifact
uses: actions/download-artifact@v3
- name: Rename prebuild artifacts directory
run: mv artifact/ prebuilds/
- name: Display structure of downloaded files
run: ls -R
- name: Inspect package
run: |
yarn pack
tar --list --verbose --file argon2-*.tgz