Skip to content

test(spec): SecretKey.sign #608

test(spec): SecretKey.sign

test(spec): SecretKey.sign #608

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-latest, windows-latest]
node: [10, 11, 12, 13, 14, 15, 16, 17, 18]
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}}
- 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
build-arm:
needs: ["build-swig"]
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
node: [10, 11, 12, 13, 14, 15, 16, 18]
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 }}