228 lines
7.8 KiB
YAML
228 lines
7.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"
|
|
WINEDEBUG: fixme-all
|
|
SDK_URL: https://bitcoincore.org/depends-sources/sdks
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name:
|
|
- aarch64-linux
|
|
- 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-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-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
|
|
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: "--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-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-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 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: 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 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: 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-tests: false
|
|
check-security: false
|
|
check-symbols: false
|
|
dep-opts: ""
|
|
config-opts: "--enable-gui=qt5 --disable-tests"
|
|
goal: deploy
|
|
sdk: 10.11
|
|
- name: x86_64-linux-experimental
|
|
host: x86_64-unknown-linux-gnu
|
|
os: ubuntu-20.04
|
|
packages: bc python3-zmq
|
|
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 }}
|
|
|
|
- name: Install SDK
|
|
if: ${{ matrix.sdk }}
|
|
run: |
|
|
mkdir -p ./depends/sdk-sources
|
|
mkdir -p ./depends/SDKs
|
|
curl --location --fail $SDK_URL/MacOSX${{ matrix.sdk }}.sdk.tar.gz -o depends/sdk-sources/MacOSX${{ matrix.sdk }}.sdk.tar.gz
|
|
tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${{ matrix.sdk }}.sdk.tar.gz
|
|
|
|
- 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 --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 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
|