2022-02-25 02:39:07 +00:00
|
|
|
name: CI
|
|
|
|
on:
|
|
|
|
push:
|
|
|
|
branches:
|
|
|
|
- main
|
|
|
|
pull_request:
|
|
|
|
workflow_dispatch:
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build:
|
|
|
|
timeout-minutes: 90
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
target:
|
|
|
|
- os: linux
|
|
|
|
cpu: amd64
|
2023-07-14 03:42:43 +00:00
|
|
|
tests: all
|
2022-02-25 02:39:07 +00:00
|
|
|
- os: macos
|
|
|
|
cpu: amd64
|
2023-07-14 03:42:43 +00:00
|
|
|
tests: all
|
2022-02-25 02:39:07 +00:00
|
|
|
- os: windows
|
|
|
|
cpu: amd64
|
2023-07-14 03:42:43 +00:00
|
|
|
tests: part1
|
|
|
|
- os: windows
|
|
|
|
cpu: amd64
|
|
|
|
tests: part2
|
2023-07-09 11:27:41 +00:00
|
|
|
branch: [version-1-6]
|
2022-02-25 02:39:07 +00:00
|
|
|
include:
|
|
|
|
- target:
|
|
|
|
os: linux
|
|
|
|
builder: ubuntu-20.04
|
|
|
|
shell: bash
|
|
|
|
- target:
|
|
|
|
os: macos
|
2023-07-11 12:46:41 +00:00
|
|
|
builder: macos-12
|
2022-02-25 02:39:07 +00:00
|
|
|
shell: bash
|
|
|
|
- target:
|
|
|
|
os: windows
|
2023-07-14 03:42:43 +00:00
|
|
|
builder: windows-latest
|
2022-02-25 02:39:07 +00:00
|
|
|
shell: msys2 {0}
|
|
|
|
|
|
|
|
defaults:
|
|
|
|
run:
|
|
|
|
shell: ${{ matrix.shell }}
|
|
|
|
|
|
|
|
name: '${{ matrix.target.os }}-${{ matrix.target.cpu }} (Nim ${{ matrix.branch }})'
|
|
|
|
runs-on: ${{ matrix.builder }}
|
|
|
|
continue-on-error: ${{ matrix.branch == 'version-1-6' || matrix.branch == 'devel' }}
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
with:
|
|
|
|
submodules: true
|
|
|
|
|
|
|
|
- name: MSYS2 (Windows amd64)
|
|
|
|
if: runner.os == 'Windows' && matrix.target.cpu == 'amd64'
|
|
|
|
uses: msys2/setup-msys2@v2
|
|
|
|
with:
|
|
|
|
path-type: inherit
|
|
|
|
install: >-
|
|
|
|
base-devel
|
|
|
|
git
|
|
|
|
mingw-w64-x86_64-toolchain
|
|
|
|
- name: Restore Nim DLLs dependencies (Windows) from cache
|
|
|
|
if: runner.os == 'Windows'
|
|
|
|
id: windows-dlls-cache
|
|
|
|
uses: actions/cache@v2
|
|
|
|
with:
|
|
|
|
path: external/dlls
|
|
|
|
key: 'dlls'
|
|
|
|
|
|
|
|
- name: Install DLL dependencies (Windows)
|
|
|
|
if: >
|
|
|
|
steps.windows-dlls-cache.outputs.cache-hit != 'true' &&
|
|
|
|
runner.os == 'Windows'
|
|
|
|
run: |
|
|
|
|
mkdir external
|
|
|
|
curl -L "https://nim-lang.org/download/windeps.zip" -o external/windeps.zip
|
|
|
|
7z x external/windeps.zip -oexternal/dlls
|
|
|
|
- name: Path to cached dependencies (Windows)
|
|
|
|
if: >
|
|
|
|
runner.os == 'Windows'
|
|
|
|
run: |
|
|
|
|
echo '${{ github.workspace }}'"/external/dlls" >> $GITHUB_PATH
|
|
|
|
|
2023-07-14 03:42:43 +00:00
|
|
|
## Restore nimble deps
|
2023-07-12 00:58:06 +00:00
|
|
|
- name: Restore nimble dependencies from cache
|
|
|
|
id: nimble_deps
|
|
|
|
uses: actions/cache@v3
|
|
|
|
with:
|
|
|
|
path: |
|
2023-07-14 03:42:43 +00:00
|
|
|
~/.nimble
|
|
|
|
${{ github.workspace }}/.nimble
|
2023-07-17 22:32:55 +00:00
|
|
|
key: ${{ matrix.builder }}-${{ matrix.target.cpu }}-dotnimble-${{ hashFiles('nimble.lock') }}
|
2023-07-09 11:27:41 +00:00
|
|
|
|
|
|
|
- name: Setup Nimble
|
|
|
|
uses: "./.github/actions/install_nimble"
|
|
|
|
with:
|
|
|
|
os: ${{ matrix.target.os }}
|
|
|
|
cpu: ${{ matrix.target.cpu }}
|
2022-02-25 02:39:07 +00:00
|
|
|
|
2023-07-14 03:42:43 +00:00
|
|
|
- name: Setup Env
|
|
|
|
run: |
|
|
|
|
nimble -v
|
|
|
|
|
|
|
|
- name: Setup Deps
|
|
|
|
run: |
|
|
|
|
nimble install -d
|
|
|
|
nimble setup
|
|
|
|
|
2022-02-25 02:39:07 +00:00
|
|
|
- name: Run tests
|
2023-07-14 03:42:43 +00:00
|
|
|
if: runner.os != 'Windows'
|
|
|
|
run: |
|
|
|
|
nimble test -y
|
|
|
|
|
|
|
|
- name: Run windows tests part1
|
|
|
|
if: runner.os == 'Windows' && matrix.target.tests == 'part1'
|
2022-02-25 02:39:07 +00:00
|
|
|
run: |
|
|
|
|
if [[ "${{ matrix.target.os }}" == "windows" ]]; then
|
|
|
|
# https://github.com/status-im/nimbus-eth2/issues/3121
|
|
|
|
export NIMFLAGS="-d:nimRawSetjmp"
|
|
|
|
fi
|
2023-07-14 03:42:43 +00:00
|
|
|
|
|
|
|
nimble testPart1 -y
|
|
|
|
|
|
|
|
- name: Run windows tests part2
|
|
|
|
if: runner.os == 'Windows' && matrix.target.tests == 'part2'
|
|
|
|
run: |
|
|
|
|
if [[ "${{ matrix.target.os }}" == "windows" ]]; then
|
|
|
|
export NIMFLAGS="-d:nimRawSetjmp"
|
|
|
|
fi
|
|
|
|
|
|
|
|
nimble testPart2 -y
|