aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorPatrick Lodder <[email protected]>2021-06-14 21:03:13 +0200
committerPatrick Lodder <[email protected]>2021-06-19 20:20:23 +0200
commit146ec3bab9999bf3628df8821ea89d736f0702f3 (patch)
tree122ced75b171d4d1f507be9d50bb55f6f425c7e4 /.github
parentCreate ci.yml (diff)
downloaddiscoin-146ec3bab9999bf3628df8821ea89d736f0702f3.tar.xz
discoin-146ec3bab9999bf3628df8821ea89d736f0702f3.zip
[ci] Full CI for linux and windows x-compile
Introduces GitHub Actions builds for linux and windows 32 and 64 bit and armhf builds using the depends system.
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/ci.yml137
1 files changed, 120 insertions, 17 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 99919edb5..2db6f5175 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,40 +1,143 @@
-name: ci
+name: Continuous Integration
-on: [push, pull_request]
+on:
+ - push
+ - pull_request
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"
+ WINEDEBUG: fixme-all
+
strategy:
- fail-fast: true
+ fail-fast: false
matrix:
name:
- - Ubuntu 18.04 GCC
+ - armhf-linux
+ - i686-linux
+ - i686-win
+ - x86_64-linux-dbg
+ - x86_64-linux-nowallet
+ - x86_64-win
include:
- - name: Ubuntu 18.04 GCC
- os: ubuntu-18.04
- compiler: gcc
- cpp-compiler: g++
- build-dir: build
- build-src-dir: ..
+ - name: i686-linux
+ host: i686-pc-linux-gnu
+ os: ubuntu-20.04
+ packages: g++-multilib bc python3-zmq
+ run-tests: true
+ dep-opts: "NO_QT=1"
+ config-opts: "--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
+ goal: install
+ - name: armhf-linux
+ host: arm-linux-gnueabihf
+ os: ubuntu-20.04
+ packages: g++-arm-linux-gnueabihf
+ run-tests: false
+ dep-opts: "NO_QT=1"
+ config-opts: "--enable-glibc-back-compat --enable-reduce-exports --disable-tests"
+ goal: install
+ - name: x86_64-linux-nowallet
+ host: x86_64-unknown-linux-gnu
+ os: ubuntu-20.04
+ packages: python3
+ run-tests: true
+ dep-opts: "NO_WALLET=1"
+ config-opts: "--enable-glibc-back-compat --enable-reduce-exports --disable-wallet"
+ goal: install
+ - name: x86_64-linux-dbg
+ host: x86_64-unknown-linux-gnu
+ os: ubuntu-20.04
+ packages: bc python3-zmq
+ run-tests: true
+ dep-opts: "DEBUG=1"
+ config-opts: "--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
+ goal: install
+ - name: i686-win
+ host: i686-w64-mingw32
+ arch: "i386"
+ os: ubuntu-20.04
+ packages: python3 nsis g++-mingw-w64-i686 wine bc wine-binfmt
+ postinstall: |
+ 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-tests: false
+ dep-opts: ""
+ config-opts: "--enable-reduce-exports"
+ goal: install
+ - name: x86_64-win
+ host: x86_64-w64-mingw32
+ arch: "i386"
+ os: ubuntu-20.04
+ packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt
+ postinstall: |
+ 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-tests: false
+ dep-opts: ""
+ config-opts: "--enable-reduce-exports"
+ goal: install
runs-on: ${{ matrix.os }}
steps:
- - name: Install packages (Ubuntu)
- if: runner.os == 'Linux'
+ - 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 libdb++-dev libboost-all-dev libevent-dev ${{ matrix.packages }}
+ 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: Generate project files
+ - name: Dependency cache
+ uses: actions/cache@v2
+ env:
+ cache-name: depends
+ with:
+ path: ./depends/built
+ key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('depends/packages/*') }}
+
+ - 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') }}
+
+ - name: Build Dogecoin
run: |
+ depends/${{ matrix.host }}/native/bin/ccache --max-size=$CCACHE_SIZE
./autogen.sh
- ./configure --disable-wallet
+ ./configure --prefix=`pwd`/depends/${{ matrix.host }} ${{ matrix.config-opts }} || ( cat config.log && false)
+ make $MAKEJOBS ${{ matrix.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ matrix.goal }} V=1 ; false )
- - name: Compile source code
+ - name: Run tests
+ if: ${{ matrix.run-tests }}
run: |
- make -j2
+ make check $MAKEJOBS VERBOSE=1
+ qa/pull-tester/install-deps.sh
+ qa/pull-tester/rpc-tests.py --coverage