mirror of
https://github.com/logos-storage/logos-storage-nim-dht.git
synced 2026-01-08 08:23:09 +00:00
- changed the CI to use prebuild nimble binary and to use lock file. - the nim version is determined by the lock file - there were some packages that have version range but at the same time corresponding versions were not tagged at the repo. I have hardcoded the version of the package commit. Later when the version is tagged in the source repo the version range can be returned.
172 lines
4.8 KiB
YAML
172 lines
4.8 KiB
YAML
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
|
|
- os: linux
|
|
cpu: i386
|
|
- os: macos
|
|
cpu: amd64
|
|
- os: windows
|
|
cpu: amd64
|
|
#- os: windows
|
|
#cpu: i386
|
|
branch: [version-1-6]
|
|
include:
|
|
- target:
|
|
os: linux
|
|
builder: ubuntu-20.04
|
|
shell: bash
|
|
- target:
|
|
os: macos
|
|
builder: macos-10.15
|
|
shell: bash
|
|
- target:
|
|
os: windows
|
|
builder: windows-2019
|
|
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: Install build dependencies (Linux i386)
|
|
if: runner.os == 'Linux' && matrix.target.cpu == 'i386'
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update -qq
|
|
sudo DEBIAN_FRONTEND='noninteractive' apt-get install \
|
|
--no-install-recommends -yq gcc-multilib g++-multilib \
|
|
libssl-dev:i386
|
|
mkdir -p external/bin
|
|
cat << EOF > external/bin/gcc
|
|
#!/bin/bash
|
|
exec $(which gcc) -m32 "\$@"
|
|
EOF
|
|
cat << EOF > external/bin/g++
|
|
#!/bin/bash
|
|
exec $(which g++) -m32 "\$@"
|
|
EOF
|
|
chmod 755 external/bin/gcc external/bin/g++
|
|
echo '${{ github.workspace }}/external/bin' >> $GITHUB_PATH
|
|
|
|
- name: MSYS2 (Windows i386)
|
|
if: runner.os == 'Windows' && matrix.target.cpu == 'i386'
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
path-type: inherit
|
|
msystem: MINGW32
|
|
install: >-
|
|
base-devel
|
|
git
|
|
mingw-w64-i686-toolchain
|
|
|
|
- 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
|
|
|
|
- name: Derive environment variables
|
|
run: |
|
|
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then
|
|
PLATFORM=x64
|
|
else
|
|
PLATFORM=x86
|
|
fi
|
|
echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV
|
|
|
|
ncpu=
|
|
MAKE_CMD="make"
|
|
case '${{ runner.os }}' in
|
|
'Linux')
|
|
ncpu=$(nproc)
|
|
;;
|
|
'macOS')
|
|
ncpu=$(sysctl -n hw.ncpu)
|
|
;;
|
|
'Windows')
|
|
ncpu=$NUMBER_OF_PROCESSORS
|
|
MAKE_CMD="mingw32-make"
|
|
;;
|
|
esac
|
|
[[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1
|
|
echo "ncpu=$ncpu" >> $GITHUB_ENV
|
|
echo "MAKE_CMD=${MAKE_CMD}" >> $GITHUB_ENV
|
|
|
|
- name: Restore nimble dependencies from cache
|
|
id: nimble_deps
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.nimble/pkgs2
|
|
~/.nimble/packages_official.json
|
|
key: ${{ inputs.os }}-${{ inputs.cpu }}-${{ env.cache_nonce }}
|
|
|
|
- name: Setup Nimble
|
|
uses: "./.github/actions/install_nimble"
|
|
with:
|
|
os: ${{ matrix.target.os }}
|
|
cpu: ${{ matrix.target.cpu }}
|
|
|
|
- name: Run tests
|
|
run: |
|
|
if [[ "${{ matrix.target.os }}" == "windows" ]]; then
|
|
# https://github.com/status-im/nimbus-eth2/issues/3121
|
|
export NIMFLAGS="-d:nimRawSetjmp"
|
|
fi
|
|
nimble test -y
|
|
if [[ "${{ matrix.branch }}" == "version-1-6" || "${{ matrix.branch }}" == "devel" ]]; then
|
|
echo -e "\nTesting with '--gc:orc':\n"
|
|
export NIMFLAGS="${NIMFLAGS} --gc:orc"
|
|
nimble test -y
|
|
fi;
|