ci: move linter to ubuntu:24.04 #1317
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: 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 | |
WINEPREFIX: /tmp/wineprefix/ | |
SDK_URL: https://depends.dogecoincore.org | |
strategy: | |
fail-fast: false | |
matrix: | |
name: | |
- aarch64-linux | |
- aarch64-linux-experimental | |
- armhf-linux | |
- i686-linux | |
- i686-win | |
- x86_64-linux-dbg | |
- x86_64-linux-nowallet | |
- x86_64-macos | |
- x86_64-win | |
- x86_64-win-experimental | |
- x86_64-linux-experimental | |
include: | |
- name: i686-linux | |
host: i686-pc-linux-gnu | |
container: ubuntu:20.04 | |
packages: g++-multilib bc python3-zmq | |
run-bench: true | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
qa/pull-tester/install-deps.sh | |
qa/pull-tester/rpc-tests.py --coverage | |
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 | |
container: ubuntu:20.04 | |
packages: g++-arm-linux-gnueabihf qemu-user-static qemu-user | |
run-bench: false | |
test-script: | | |
qemu-arm -E LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/ /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 src/test/test_dogecoin | |
check-security: true | |
check-symbols: true | |
dep-opts: "NO_QT=1" | |
config-opts: "--enable-glibc-back-compat LDFLAGS=-static-libstdc++" | |
goal: install | |
- name: aarch64-linux-experimental | |
host: aarch64-linux-gnu | |
container: ubuntu:20.04 | |
packages: g++-aarch64-linux-gnu qemu-user-static qemu-user | |
run-bench: false | |
test-script: | | |
qemu-aarch64 -E LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib/ /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 src/test/test_dogecoin | |
check-security: true | |
check-symbols: false | |
dep-opts: "NO_QT=1" | |
config-opts: "--enable-experimental --with-armv8-crypto --with-armv82-crypto --enable-zmq --enable-glibc-back-compat LDFLAGS=-static-libstdc++ --enable-c++14" | |
goal: install | |
- name: aarch64-linux | |
host: aarch64-linux-gnu | |
container: ubuntu:20.04 | |
packages: g++-aarch64-linux-gnu qemu-user-static qemu-user | |
run-bench: false | |
test-script: | | |
qemu-aarch64 -E LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib/ /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 src/test/test_dogecoin | |
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: x86_64-linux-nowallet | |
host: x86_64-unknown-linux-gnu | |
container: ubuntu:20.04 | |
packages: python3 | |
run-bench: true | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
check-security: true | |
check-symbols: true | |
dep-opts: "NO_WALLET=1" | |
config-opts: "--with-gui=qt5 --enable-glibc-back-compat --disable-wallet LDFLAGS=-static-libstdc++" | |
goal: install | |
- name: x86_64-linux-dbg | |
host: x86_64-unknown-linux-gnu | |
container: ubuntu:20.04 | |
packages: bc python3-zmq | |
run-bench: true | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
qa/pull-tester/install-deps.sh | |
qa/pull-tester/rpc-tests.py --coverage | |
check-security: true | |
check-symbols: false | |
dep-opts: "DEBUG=1" | |
config-opts: "--with-gui=qt5 --enable-zmq --enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER" | |
goal: install | |
- name: i686-win | |
host: i686-w64-mingw32 | |
container: ubuntu:20.04 | |
container-options: --privileged | |
packages: python3 nsis g++-mingw-w64-i686 wine32 bc wine-binfmt binfmt-support | |
preinstall: | | |
dpkg --add-architecture i386 | |
postinstall: | | |
update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix | |
update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix | |
update-binfmts --import /usr/share/binfmts/wine | |
update-binfmts --enable | |
update-binfmts --display | |
run-bench: false | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
check-security: true | |
check-symbols: true | |
dep-opts: "" | |
config-opts: "--enable-gui=qt5" | |
goal: install | |
- name: x86_64-win | |
host: x86_64-w64-mingw32 | |
container: ubuntu:20.04 | |
container-options: --privileged | |
packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt | |
postinstall: | | |
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
update-binfmts --import /usr/share/binfmts/wine | |
update-binfmts --enable | |
update-binfmts --display | |
run-bench: false | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
check-security: true | |
check-symbols: true | |
dep-opts: "" | |
config-opts: "--enable-gui=qt5" | |
goal: install | |
- name: x86_64-win-experimental | |
host: x86_64-w64-mingw32 | |
container: ubuntu:20.04 | |
container-options: --privileged | |
packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt | |
postinstall: | | |
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
update-binfmts --import /usr/share/binfmts/wine | |
update-binfmts --enable | |
update-binfmts --display | |
run-bench: false | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
check-security: true | |
check-symbols: false | |
dep-opts: "AVX2=1 MINGW=1" | |
config-opts: "--enable-experimental --enable-scrypt-sse2 --with-intel-avx2 --with-gui=qt5 --enable-c++14" | |
goal: install | |
- name: x86_64-macos | |
host: x86_64-apple-darwin11 | |
container: ubuntu:20.04 | |
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools libtinfo5 xorriso | |
run-bench: false | |
check-security: true | |
check-symbols: false | |
dep-opts: "" | |
config-opts: "--with-gui=qt5 --disable-tests" | |
goal: deploy | |
sdk: 10.11 | |
sdk-shasum: "bec9d089ebf2e2dd59b1a811a38ec78ebd5da18cbbcd6ab39d1e59f64ac5033f" | |
- name: x86_64-linux-experimental | |
host: x86_64-linux-gnu | |
container: ubuntu:20.04 | |
packages: bc python3-zmq | |
run-bench: true | |
test-script: | | |
make check $MAKEJOBS VERBOSE=1 | |
qa/pull-tester/install-deps.sh | |
qa/pull-tester/rpc-tests.py --coverage | |
dep-opts: "AVX2=1" | |
config-opts: "--enable-experimental --enable-scrypt-sse2 --with-intel-avx2 --with-gui=qt5 --enable-zmq --enable-glibc-back-compat --enable-reduce-exports --enable-c++14" | |
goal: install | |
runs-on: ubuntu-24.04 | |
container: | |
image: ${{ matrix.container }} | |
options: ${{ matrix.container-options == '' && '-e 1DOGE=1DOGE' || matrix.container-options }} | |
steps: | |
- name: Configure container | |
run: | | |
ln -snf /usr/share/zoneinfo/Etc/UTC /etc/localtime | |
echo Etc/UTC > /etc/timezone | |
mkdir -p $WINEPREFIX | |
uname -a | |
- name: Pre install | |
if: ${{ matrix.preinstall }} | |
run: ${{ matrix.preinstall }} | |
- name: Install packages | |
run: | | |
apt-get update | |
apt-get install -y build-essential libtool autotools-dev automake \ | |
pkg-config bsdmainutils curl ca-certificates ccache rsync git \ | |
procps bison python3 python3-pip python3-setuptools python3-wheel | |
apt-get install -y ${{ matrix.packages }} | |
python3 -m pip install setuptools==70.3.0 --upgrade | |
python3 -m pip install lief | |
- name: Post install | |
if: ${{ matrix.postinstall }} | |
run: ${{ matrix.postinstall }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: SDK cache | |
if: ${{ matrix.sdk }} | |
uses: actions/cache@v4 | |
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@v4 | |
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@v4 | |
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.test-script }} | |
run: ${{ matrix.test-script }} | |
- 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: Cleanup qa artifacts | |
run: | | |
rm -rf qa/cache || true | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dogecoin-${{ github.sha }}-${{ matrix.name }} | |
path: | | |
depends/${{ matrix.host }}/bin/dogecoin* | |
dist/Dogecoin-Qt.app | |
${{ matrix.name }}-bench.csv |