Skip to content

chore: publish release 0.2.10 (#115) #693

chore: publish release 0.2.10 (#115)

chore: publish release 0.2.10 (#115) #693

Workflow file for this run

name: Main
on:
pull_request:
push:
branches:
- "**"
tags:
- "v*.*.*"
jobs:
build-swig:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Setup SWIG
run: |
git clone -b v8-isolate-aware-init https://github.com/dot-asm/swig;
cd swig;
./autogen.sh;
./configure --prefix=$HOME/swig;
make;
make install;
- name: Install && Build TS + bindings
run: |
export PATH=~/swig/bin:$PATH SWIG_LIB=~/swig/share/swig/$(grep -r AC_INIT ~/work/blst-ts/blst-ts/swig/configure.ac | grep -Eo '[0-9]+.[0-9]+.[0-9]+')
yarn bootstrap
ls -ltrh .
working-directory: blst/bindings/node.js
env:
BLST_WRAP_CPP_FORCE_BUILD: true
- name: Upload binding.node
uses: actions/upload-artifact@v2
with:
name: blst_wrap.cpp
path: prebuild/blst_wrap.cpp
if-no-files-found: error
- name: Lint
run: yarn lint
build:
needs: ["build-swig"]
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-12, macos-14, windows-latest]
node: [16, 17, 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/
- 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 config set ignore-engines true
yarn bootstrap
env:
SWIG_SKIP_RUN: true
# 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') }}
- 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:
needs: ["build-swig"]
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"]
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-swig", "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 # Necessary for 'yarn publish'
with:
node-version: "12.x"
registry-url: "https://registry.npmjs.org"
- name: Get SWIG pre-built
uses: actions/download-artifact@v2
with:
name: blst_wrap.cpp
path: prebuild/
- name: Get binding.node pre-builts
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 }}