Skip to content

feat: move rebuild folder to root #710

feat: move rebuild folder to root

feat: move rebuild folder to root #710

Workflow file for this run

name: Main
on:
pull_request:
push:
branches:
- master
tags:
- v*.*.*
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04 # linux x64
- macos-12 # osx x64
- macos-14 # osx arm
- windows-latest # windows x64
node:
- 18
- 20
- 21
runs-on: ${{matrix.os}}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Setup Node.js ${{matrix.node}}
uses: actions/setup-node@v3
with:
node-version: ${{matrix.node}}
- uses: actions/setup-python@v5
with:
# More recent versions of python require more recent node-gyp
# See https://github.com/nodejs/node-gyp/issues/2869
python-version: '3.11'
- name: Install && Build TS + bindings
run: yarn
# Attempt to pull spec-tests from cache
- name: Restore spec tests cache
uses: actions/cache@master
with:
path: spec-tests
key: spec-test-data-${{ hashFiles('test/spec/specTestVersioning.ts') }}
# Download spec tests if not persisted
- name: Download spec tests
run: yarn download-spec-tests
if: matrix.os != 'windows-latest'
- name: Test unit
run: yarn test:unit
- name: Test spec
run: yarn test:spec
if: matrix.os != 'windows-latest'
- name: Upload binding.node
uses: actions/upload-artifact@v2
if: github.repository_owner == 'chainsafe' && github.event_name != 'pull_request'
with:
name: binding.node
path: prebuild/*.node
if-no-files-found: error
# Required as current base images do not support arm64
# https://resources.github.com/devops/accelerate-your-cicd-with-arm-and-gpu-runners-in-github-actions/
# https://github.com/actions/runner-images/issues/5631
build-arm:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
node: [14, 16, 18, 20]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Get SWIG pre-built
uses: actions/download-artifact@v2
with:
name: blst_wrap.cpp
path: prebuild/
# Download spec tests with cache
- name: Restore spec tests cache
uses: actions/cache@master
with:
path: spec-tests
key: spec-test-data-${{ hashFiles('test/spec/specTestVersioning.ts') }}
# https://github.com/docker/setup-qemu-action
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build test arm binding
run: |
docker buildx build --build-arg NODE_VERSION=${{matrix.node}} --platform linux/arm64 -t armbuild:latest --load --progress=plain .
docker create --name armbuild armbuild:latest
docker cp armbuild:/prebuild .
- name: Upload binding.node
uses: actions/upload-artifact@v2
if: github.repository_owner == 'chainsafe' && github.event_name != 'pull_request'
with:
name: binding.node
path: prebuild/*.node
if-no-files-found: error
benchmark:
needs: ["build-swig"]

Check failure on line 127 in .github/workflows/main.yml

View workflow run for this annotation

GitHub Actions / Main

Invalid workflow file

The workflow is not valid. .github/workflows/main.yml (Line: 127, Col: 13): Job 'benchmark' depends on unknown job 'build-swig'.
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Get SWIG pre-built
uses: actions/download-artifact@v2
with:
name: blst_wrap.cpp
path: prebuild/
- name: Install && Build TS + bindings
run: yarn bootstrap
env:
SWIG_SKIP_RUN: true
- name: Benchmark
run: |
node_modules/.bin/ts-node benchmark/blstOps.ts
node_modules/.bin/ts-node benchmark/batchVerify.ts
node_modules/.bin/ts-node benchmark/multithread.ts
node_modules/.bin/ts-node benchmark/multithreadOverhead.ts
publish:
needs: ["build", "build-arm"]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v3
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
- name: Get pre-built binding.node files
uses: actions/download-artifact@v2
with:
name: binding.node
path: prebuild/
- name: Build .ts source for release
run: yarn bootstrap
- name: Create Github release with prebuilds
uses: softprops/action-gh-release@v1
with:
files: prebuild/*
fail_on_unmatched_files: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to NPM
run: yarn publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}