mirror of
https://github.com/dogecoin/dogecoin.git
synced 2026-02-18 19:28:48 +00:00
After a bionic update on 2022/06/03, Github Actions images have a mono-runtime installation that takes precedence over wine, which we need for running the tests. This removes mono-runtime from both win CI jobs if it exists, so that it doesn't bother us anymore in any way thinkable. We do not need mono there, as we do not .net Although the issue only manifested on x86_64-w64-mingw32 builds, this also removes it from the i686-w64-mingw32 build as a precaution.
274 lines
9.8 KiB
YAML
274 lines
9.8 KiB
YAML
name: Continuous Integration
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- 'contrib/**'
|
|
- '**/*.md'
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.name }}
|
|
|
|
env:
|
|
MAKEJOBS: "-j3"
|
|
CHECK_DOC: "0"
|
|
CCACHE_SIZE: "100M"
|
|
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
|
CCACHE_COMPRESS: "1"
|
|
PYTHON_DEBUG: "1"
|
|
CACHE_NONCE: "1"
|
|
WINEDEBUG: fixme-all
|
|
SDK_URL: https://depends.dogecoincore.org
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name:
|
|
- aarch64-linux
|
|
- aarch64-linux-experimental
|
|
- aarch64-linux-sha512-experimental
|
|
- armhf-linux
|
|
- i686-linux
|
|
- i686-win
|
|
- x86_64-linux-dbg
|
|
- x86_64-linux-nowallet
|
|
- x86_64-macos
|
|
- x86_64-win
|
|
- x86_64-linux-experimental
|
|
include:
|
|
- name: i686-linux
|
|
host: i686-pc-linux-gnu
|
|
os: ubuntu-18.04
|
|
packages: g++-multilib bc python3-zmq
|
|
run-bench: true
|
|
run-tests: true
|
|
check-security: true
|
|
check-symbols: true
|
|
dep-opts: "NO_QT=1"
|
|
config-opts: "--enable-zmq --enable-glibc-back-compat LDFLAGS=-static-libstdc++"
|
|
goal: install
|
|
- name: armhf-linux
|
|
host: arm-linux-gnueabihf
|
|
os: ubuntu-18.04
|
|
packages: g++-arm-linux-gnueabihf
|
|
run-bench: false
|
|
run-tests: false
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: "NO_QT=1"
|
|
config-opts: "--enable-glibc-back-compat --disable-tests LDFLAGS=-static-libstdc++"
|
|
goal: install
|
|
- name: aarch64-linux-experimental
|
|
host: aarch64-linux-gnu
|
|
os: ubuntu-18.04
|
|
packages: g++-aarch64-linux-gnu
|
|
run-tests: false
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: "NO_QT=1"
|
|
config-opts: "--with-armv8-crypto --enable-zmq --enable-glibc-back-compat --disable-tests LDFLAGS=-static-libstdc++"
|
|
goal: install
|
|
- name: aarch64-linux-sha512-experimental
|
|
host: aarch64-linux-gnu
|
|
os: ubuntu-20.04
|
|
packages: g++-aarch64-linux-gnu
|
|
run-tests: false
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: "NO_QT=1"
|
|
config-opts: "--with-armv82-crypto --enable-zmq --enable-glibc-back-compat --disable-tests LDFLAGS=-static-libstdc++"
|
|
goal: install
|
|
- name: aarch64-linux
|
|
host: aarch64-linux-gnu
|
|
os: ubuntu-18.04
|
|
packages: g++-aarch64-linux-gnu
|
|
run-bench: false
|
|
run-tests: false
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: "NO_QT=1"
|
|
config-opts: "--enable-zmq --enable-glibc-back-compat --disable-tests LDFLAGS=-static-libstdc++"
|
|
goal: install
|
|
- name: x86_64-linux-nowallet
|
|
host: x86_64-unknown-linux-gnu
|
|
os: ubuntu-18.04
|
|
packages: python3
|
|
run-bench: true
|
|
run-tests: true
|
|
check-security: true
|
|
check-symbols: true
|
|
dep-opts: "NO_WALLET=1"
|
|
config-opts: "--enable-gui=qt5 --enable-glibc-back-compat --disable-wallet LDFLAGS=-static-libstdc++"
|
|
goal: install
|
|
- name: x86_64-linux-dbg
|
|
host: x86_64-unknown-linux-gnu
|
|
os: ubuntu-18.04
|
|
packages: bc python3-zmq
|
|
run-bench: true
|
|
run-tests: true
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: "DEBUG=1"
|
|
config-opts: "--enable-gui=qt5 --enable-zmq --enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER"
|
|
goal: install
|
|
- name: i686-win
|
|
host: i686-w64-mingw32
|
|
arch: "i386"
|
|
os: ubuntu-18.04
|
|
packages: python3 nsis g++-mingw-w64-i686 wine-stable bc wine-binfmt
|
|
postinstall: |
|
|
sudo dpkg -s mono-runtime && sudo apt-get remove mono-runtime || echo "Very nothing to uninstall."
|
|
sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
|
|
sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
|
|
sudo update-binfmts --import /usr/share/binfmts/wine
|
|
run-bench: false
|
|
run-tests: true
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: ""
|
|
config-opts: "--enable-gui=qt5"
|
|
goal: install
|
|
- name: x86_64-win
|
|
host: x86_64-w64-mingw32
|
|
arch: "i386"
|
|
os: ubuntu-18.04
|
|
packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt
|
|
postinstall: |
|
|
sudo dpkg -s mono-runtime && sudo apt-get remove mono-runtime || echo "Very nothing to uninstall."
|
|
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
|
|
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
|
|
sudo update-binfmts --import /usr/share/binfmts/wine
|
|
run-bench: false
|
|
run-tests: true
|
|
check-security: true
|
|
check-symbols: false
|
|
dep-opts: ""
|
|
config-opts: "--enable-gui=qt5"
|
|
goal: install
|
|
- name: x86_64-macos
|
|
host: x86_64-apple-darwin11
|
|
os: ubuntu-18.04
|
|
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libtiff-tools libtinfo5 python3-setuptools xorriso libtinfo5
|
|
run-bench: false
|
|
run-tests: false
|
|
check-security: false
|
|
check-symbols: false
|
|
dep-opts: ""
|
|
config-opts: "--enable-gui=qt5 --disable-tests"
|
|
goal: deploy
|
|
sdk: 10.11
|
|
sdk-shasum: "bec9d089ebf2e2dd59b1a811a38ec78ebd5da18cbbcd6ab39d1e59f64ac5033f"
|
|
- name: x86_64-linux-experimental
|
|
host: x86_64-unknown-linux-gnu
|
|
os: ubuntu-18.04
|
|
packages: bc python3-zmq
|
|
run-bench: true
|
|
run-tests: true
|
|
dep-opts: "AVX2=1"
|
|
config-opts: "--with-intel-avx2 --enable-gui=qt5 --enable-zmq --enable-glibc-back-compat --enable-reduce-exports"
|
|
goal: install
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Add architecture
|
|
if: ${{ matrix.arch }}
|
|
run: |
|
|
sudo dpkg --add-architecture "${{ matrix.arch }}"
|
|
|
|
- name: Install packages
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ca-certificates ccache python3 rsync git procps bison
|
|
sudo apt-get install ${{ matrix.packages }}
|
|
|
|
- name: Post install
|
|
if: ${{ matrix.postinstall }}
|
|
run: ${{ matrix.postinstall }}
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: SDK cache
|
|
if: ${{ matrix.sdk }}
|
|
uses: actions/cache@v2
|
|
env:
|
|
cache-name: sdk
|
|
with:
|
|
path: ./depends/sdk-sources
|
|
key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('.github/workflows/ci.yml') }}
|
|
|
|
- name: Install SDK
|
|
if: ${{ matrix.sdk }}
|
|
env:
|
|
sdk-filename: MacOSX${{ matrix.sdk }}.sdk.tar.gz
|
|
run: |
|
|
mkdir -p ./depends/sdk-sources
|
|
mkdir -p ./depends/SDKs
|
|
echo "${{ matrix.sdk-shasum }} depends/sdk-sources/${{ env.sdk-filename }}" | sha256sum -c || \
|
|
curl --location --fail $SDK_URL/${{ env.sdk-filename }} -o depends/sdk-sources/${{ env.sdk-filename }} &&\
|
|
echo "${{ matrix.sdk-shasum }} depends/sdk-sources/${{ env.sdk-filename }}" | sha256sum -c
|
|
tar -C depends/SDKs -xf depends/sdk-sources/${{ env.sdk-filename }}
|
|
|
|
- name: Dependency cache
|
|
uses: actions/cache@v2
|
|
env:
|
|
cache-name: depends
|
|
with:
|
|
path: ./depends/built
|
|
key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('depends/packages/*', '.github/workflows/ci.yml') }}
|
|
|
|
- name: Build depends
|
|
run: |
|
|
make $MAKEJOBS -C depends HOST=${{ matrix.host }} ${{ matrix.dep-opts }}
|
|
|
|
- name: CCache
|
|
uses: actions/cache@v2
|
|
env:
|
|
cache-name: ccache
|
|
with:
|
|
path: ~/.ccache
|
|
key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('**/configure.ac', '.github/workflows/ci.yml') }}
|
|
|
|
- name: Build Dogecoin
|
|
run: |
|
|
depends/${{ matrix.host }}/native/bin/ccache --max-size=$CCACHE_SIZE
|
|
./autogen.sh
|
|
./configure --prefix=`pwd`/depends/${{ matrix.host }} ${{ matrix.config-opts }} --enable-reduce-exports || ( cat config.log && false)
|
|
make $MAKEJOBS ${{ matrix.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ matrix.goal }} V=1 ; false )
|
|
|
|
- name: Run benchmark
|
|
if: ${{ matrix.run-bench }}
|
|
run: |
|
|
src/bench/bench_dogecoin > ${{ matrix.name }}-bench.csv
|
|
cat ${{ matrix.name }}-bench.csv
|
|
|
|
- name: Run tests
|
|
if: ${{ matrix.run-tests }}
|
|
run: |
|
|
make check $MAKEJOBS VERBOSE=1
|
|
qa/pull-tester/install-deps.sh
|
|
qa/pull-tester/rpc-tests.py --coverage
|
|
|
|
- name: Check security
|
|
if: ${{ matrix.check-security }}
|
|
run: make -C src check-security
|
|
|
|
- name: Check symbols
|
|
if: ${{ matrix.check-symbols }}
|
|
run: make -C src check-symbols
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: dogecoin-${{ github.sha }}-${{ matrix.name }}
|
|
path: |
|
|
depends/${{ matrix.host }}/bin/dogecoin*
|
|
dist/Dogecoin-Qt.app
|
|
${{ matrix.name }}-bench.csv
|