osmaczko 1d727c1fcf
chore: add smoke test and redesign CI workflow (#62)
Add a smoke test that validates the binary links all dependencies
at runtime by instantiating a client without networking. Redesign
CI into separate build and test jobs, with test gated on build.
2026-02-13 20:44:50 +01:00

107 lines
3.2 KiB
YAML

name: ci
on:
pull_request:
branches:
- main
paths-ignore:
- "**README.md"
- ".gitignore"
- "LICENSE"
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, macOS-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
# Cache the Nim compiler built by nimbus-build-system (NBS).
# Building Nim from source is the slowest part of `make update`.
# Keyed on the NBS submodule commit — auto-invalidates when NBS is bumped.
- id: nbs
run: echo "hash=$(git rev-parse HEAD:vendor/nimbus-build-system)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: vendor/nimbus-build-system/vendor/Nim
key: ${{ runner.os }}-nbs-${{ steps.nbs.outputs.hash }}
- run: make update
- run: make all
test:
needs: build
strategy:
matrix:
os: [ubuntu-latest, macOS-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- id: nbs
run: echo "hash=$(git rev-parse HEAD:vendor/nimbus-build-system)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: vendor/nimbus-build-system/vendor/Nim
key: ${{ runner.os }}-nbs-${{ steps.nbs.outputs.hash }}
- run: make update
- run: make tests
test-windows:
needs: build
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
env:
MSYSTEM: MINGW64
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: msys2/setup-msys2@v2
with:
update: true
install: >-
git
base-devel
mingw-w64-x86_64-toolchain
make
cmake
upx
mingw-w64-x86_64-rust
mingw-w64-x86_64-postgresql
mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc-libs
mingw-w64-x86_64-libwinpthread-git
mingw-w64-x86_64-zlib
mingw-w64-x86_64-openssl
mingw-w64-x86_64-python
mingw-w64-x86_64-cmake
mingw-w64-x86_64-llvm
mingw-w64-x86_64-clang
- run: |
echo "/usr/bin:$PATH" >> $GITHUB_PATH
echo "/mingw64/bin:$PATH" >> $GITHUB_PATH
echo "/usr/lib:$PATH" >> $GITHUB_PATH
echo "/mingw64/lib:$PATH" >> $GITHUB_PATH
- run: which upx gcc g++ make cmake cargo rustc python make mingw32-make
- id: nbs
run: echo "hash=$(git rev-parse HEAD:vendor/nimbus-build-system)" >> $GITHUB_OUTPUT
shell: bash
- uses: actions/cache@v4
with:
path: vendor/nimbus-build-system/vendor/Nim
key: ${{ runner.os }}-nbs-${{ steps.nbs.outputs.hash }}
- run: make update
- run: |
cd vendor/nwaku/vendor/nim-nat-traversal/vendor/miniupnp/miniupnpc
make -f Makefile.mingw CC=gcc CXX=g++ libminiupnpc.a V=1
- run: |
cd vendor/nwaku/vendor/nim-nat-traversal/vendor/libnatpmp-upstream
make CC="gcc -fPIC -D_WIN32_WINNT=0x0600 -DNATPMP_STATICLIB" libnatpmp.a V=1
- run: make tests