diff options
| author | Patrick Lodder <[email protected]> | 2021-06-14 21:03:13 +0200 |
|---|---|---|
| committer | Patrick Lodder <[email protected]> | 2021-06-19 20:20:23 +0200 |
| commit | 146ec3bab9999bf3628df8821ea89d736f0702f3 (patch) | |
| tree | 122ced75b171d4d1f507be9d50bb55f6f425c7e4 /.github | |
| parent | Create ci.yml (diff) | |
| download | discoin-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.yml | 137 |
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 |