nimbus-verified-proxy integration with status-go #449
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Nimbus verified proxy CI | |
on: | |
push: | |
paths: | |
- '.github/workflows/nimbus_verified_proxy.yml' | |
- 'nimbus_verified_proxy/**' | |
- '!nimbus_verified_proxy/**.md' | |
- '!nimbus_verified_proxy/docs/**' | |
- 'vendor/**' | |
- 'Makefile' | |
- 'nimbus.nimble' | |
pull_request: | |
paths: | |
- '.github/workflows/nimbus_verified_proxy.yml' | |
- 'nimbus_verified_proxy/**' | |
- '!nimbus_verified_proxy/**.md' | |
- '!nimbus_verified_proxy/docs/**' | |
- 'vendor/**' | |
- 'Makefile' | |
- 'nimbus.nimble' | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
max-parallel: 20 | |
matrix: | |
target: | |
- os: linux | |
cpu: amd64 | |
# - os: linux | |
# cpu: i386 | |
- os: macos | |
cpu: amd64 | |
- os: windows | |
cpu: amd64 | |
include: | |
- target: | |
os: linux | |
builder: ubuntu-20.04 | |
shell: bash | |
- target: | |
os: macos | |
builder: macos-11 | |
shell: bash | |
- target: | |
os: windows | |
builder: windows-latest | |
shell: msys2 {0} | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
name: '${{ matrix.target.os }}-${{ matrix.target.cpu }}' | |
runs-on: ${{ matrix.builder }} | |
steps: | |
- name: Checkout nimbus-eth1 | |
uses: actions/checkout@v3 | |
- name: Derive environment variables | |
shell: bash | |
run: | | |
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then | |
PLATFORM=x64 | |
else | |
PLATFORM=x86 | |
fi | |
echo "PLATFORM=${PLATFORM}" >> $GITHUB_ENV | |
# libminiupnp / natpmp | |
if [[ '${{ runner.os }}' == 'Linux' && '${{ matrix.target.cpu }}' == 'i386' ]]; then | |
export CFLAGS="${CFLAGS} -m32 -mno-adx" | |
echo "CFLAGS=${CFLAGS}" >> $GITHUB_ENV | |
fi | |
ncpu='' | |
case '${{ runner.os }}' in | |
'Linux') | |
ncpu=$(nproc) | |
;; | |
'macOS') | |
ncpu=$(sysctl -n hw.ncpu) | |
;; | |
'Windows') | |
ncpu=${NUMBER_OF_PROCESSORS} | |
;; | |
esac | |
[[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1 | |
echo "ncpu=${ncpu}" >> $GITHUB_ENV | |
- name: Install build dependencies (Linux i386) | |
if: runner.os == 'Linux' && matrix.target.cpu == 'i386' | |
run: | | |
sudo dpkg --add-architecture i386 | |
sudo apt-fast update -qq | |
sudo DEBIAN_FRONTEND='noninteractive' apt-fast install \ | |
--no-install-recommends -yq gcc-multilib g++-multilib | |
mkdir -p external/bin | |
cat << EOF > external/bin/gcc | |
#!/bin/bash | |
exec $(which gcc) -m32 -mno-adx "\$@" | |
EOF | |
cat << EOF > external/bin/g++ | |
#!/bin/bash | |
exec $(which g++) -m32 -mno-adx "\$@" | |
EOF | |
chmod 755 external/bin/gcc external/bin/g++ | |
echo "${{ github.workspace }}/external/bin" >> $GITHUB_PATH | |
# Required for running the local testnet script | |
- name: Install build dependencies (MacOS) | |
if: runner.os == 'macOS' | |
run: | | |
brew install gnu-getopt | |
brew link --force gnu-getopt | |
- 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@v3 | |
with: | |
path: external/dlls-${{ matrix.target.cpu }} | |
key: 'dlls-${{ matrix.target.cpu }}-verified-proxy' | |
- name: Install DLLs dependencies (Windows) | |
if: > | |
steps.windows-dlls-cache.outputs.cache-hit != 'true' && | |
runner.os == 'Windows' | |
run: | | |
DLLPATH=external/dlls-${{ matrix.target.cpu }} | |
mkdir -p external | |
curl -L "https://nim-lang.org/download/windeps.zip" -o external/windeps.zip | |
7z x -y external/windeps.zip -o"$DLLPATH" | |
- name: Path to cached dependencies (Windows) | |
if: > | |
runner.os == 'Windows' | |
run: | | |
echo '${{ github.workspace }}'"/external/dlls-${{ matrix.target.cpu }}" >> $GITHUB_PATH | |
- name: Get latest nimbus-build-system commit hash | |
id: versions | |
run: | | |
getHash() { | |
git ls-remote "https://github.com/$1" "${2:-HEAD}" | cut -f 1 | |
} | |
nbsHash=$(getHash status-im/nimbus-build-system) | |
echo "nimbus_build_system=$nbsHash" >> $GITHUB_OUTPUT | |
- name: Restore prebuilt Nim binaries from cache | |
id: nim-cache | |
uses: actions/cache@v3 | |
with: | |
path: NimBinaries | |
key: 'nim-${{ matrix.target.os }}-${{ matrix.target.cpu }}-${{ steps.versions.outputs.nimbus_build_system }}-verified-proxy' | |
- name: Build Nim and Nimbus-eth1 dependencies | |
run: | | |
make -j${ncpu} ARCH_OVERRIDE=${PLATFORM} CI_CACHE=NimBinaries update | |
- name: Run verified proxy tests (Windows) | |
if: runner.os == 'Windows' | |
run: | | |
gcc --version | |
DEFAULT_MAKE_FLAGS="-j${ncpu}" | |
mingw32-make ${DEFAULT_MAKE_FLAGS} nimbus_verified_proxy | |
build/nimbus_verified_proxy.exe --help | |
mingw32-make ${DEFAULT_MAKE_FLAGS} nimbus-verified-proxy-test | |
- name: Run verified proxy tests (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib" | |
DEFAULT_MAKE_FLAGS="-j${ncpu}" | |
env CC=gcc make ${DEFAULT_MAKE_FLAGS} nimbus_verified_proxy | |
build/nimbus_verified_proxy --help | |
# CC is needed to select correct compiler 32/64 bit | |
env CC=gcc CXX=g++ make ${DEFAULT_MAKE_FLAGS} nimbus-verified-proxy-test | |
- name: Run verified proxy tests (Macos) | |
if: runner.os == 'Macos' | |
run: | | |
DEFAULT_MAKE_FLAGS="-j${ncpu}" | |
make ${DEFAULT_MAKE_FLAGS} nimbus_verified_proxy | |
build/nimbus_verified_proxy --help | |
# "-static" option will not work for osx unless static system libraries are provided | |
make ${DEFAULT_MAKE_FLAGS} nimbus-verified-proxy-test |