Skip to content

ci: update actions

ci: update actions #71

Workflow file for this run

name: CI
on: [push, pull_request]
env:
CI: true
jobs:
build-and-test:
name: Build addon and run tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-2019
steps:
- name: Fetch code
uses: actions/checkout@v4
with:
submodules: true
- name: Get minimal Node.js version from package.json (Linux & macOS)
id: node-version-nix
if: runner.os != 'Windows'
run: echo "::set-output name=version::$(node -p 'require("./package.json").engines.node.match(/(\d+)\..*$/)[1]')"
- name: Use Node.js ${{ steps.node-version-nix.outputs.version }} (Linux & macOS)
if: runner.os != 'Windows'
uses: actions/setup-node@v1
with:
node-version: ${{ steps.node-version-nix.outputs.version }}
- name: Get minimal Node.js version from package.json (Windows)
id: node-version-win
if: runner.os == 'Windows'
run: echo "::set-output name=version::$(node -p 'require(\"./package.json\").engines.node.match(/(\d+)\..*$/)[1]')"
- name: Use Node.js ${{ steps.node-version-win.outputs.version }} (Windows)
if: runner.os == 'Windows'
uses: actions/setup-node@v1
with:
node-version: ${{ steps.node-version-win.outputs.version }}
- name: Install dependencies
run: npm install --ignore-scripts
- name: Build addon
if: runner.os != 'Linux'
run: make build-addon
- name: Build addon
if: runner.os == 'Linux'
run: make build-addon-linux
- name: Run tests for addon
run: make test-tap
- name: Upload prebuilds
uses: actions/upload-artifact@v4
with:
name: addon-${{ runner.os }}
path: prebuilds
package:
name: Build package
needs: build-and-test
runs-on: ubuntu-latest
steps:
- name: Fetch code
uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: npm install --ignore-scripts
- name: Download macOS addon
uses: actions/download-artifact@v4
with:
name: addon-macOS
- name: Download Linux addon
uses: actions/download-artifact@v4
with:
name: addon-Linux
- name: Download Windows addon
uses: actions/download-artifact@v4
with:
name: addon-Windows
- name: Move addons to one folder
run: mkdir prebuilds && mv ./addon-*/* ./prebuilds/
- name: Build package
run: make package
- name: Get package version from package.json
id: pkg-version
run: echo "::set-output name=version::$(node -p 'require("./package.json").version')"
- name: Upload package
uses: actions/upload-artifact@v4
with:
name: package
path: secp256k1-${{ steps.pkg-version.outputs.version }}.tgz
lint-cpp:
name: Lint C/C++ code
runs-on: ubuntu-latest
steps:
- name: Fetch code
uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/cache@v4
id: cache
with:
path: clang
key: clang-llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04
- name: Download clang-format
if: steps.cache.outputs.cache-hit != 'true'
run: wget -O- -q http://releases.llvm.org/9.0.0/$VER.tar.xz | tar xfJ - $VER/bin/clang-format && mv $VER clang
env:
VER: clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04
- name: Run lint command
run: PATH=$PATH:./clang/bin/ make lint-cpp-ci
lint-js:
name: Lint JS code
runs-on: ubuntu-latest
steps:
- name: Fetch code
uses: actions/checkout@v4
- name: Install dependencies
run: npm install --ignore-scripts
- name: Run lint command
run: make lint-js