chore: publish release 0.2.10 (#115) #693
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |