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