feat: move rebuild folder to root #710
Workflow file for this run
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: | ||
- 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"] | ||
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 }} |