diff options
| -rw-r--r-- | .github/workflows/ci.yml | 143 | ||||
| -rw-r--r-- | .travis.yml | 77 |
2 files changed, 143 insertions, 77 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..2db6f5175 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,143 @@ +name: Continuous Integration + +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: false + matrix: + name: + - armhf-linux + - i686-linux + - i686-win + - x86_64-linux-dbg + - x86_64-linux-nowallet + - x86_64-win + include: + - 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: 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: 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 }} || ( 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 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 596b20b9c..000000000 --- a/.travis.yml +++ /dev/null @@ -1,77 +0,0 @@ -dist: trusty -os: linux -language: minimal -cache: - directories: - - depends/built - - depends/sdk-sources - - $HOME/.ccache -env: - global: - - MAKEJOBS=-j3 - - RUN_TESTS=false - - CHECK_DOC=0 - - BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID - - CCACHE_SIZE=100M - - CCACHE_TEMPDIR=/tmp/.ccache-temp - - CCACHE_COMPRESS=1 - - BASE_OUTDIR=$TRAVIS_BUILD_DIR/out - - SDK_URL=https://bitcoincore.org/depends-sources/sdks - - PYTHON_DEBUG=1 - - WINEDEBUG=fixme-all - jobs: -# ARM - - HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" -# Win32 - - HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6 bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" -# 32-bit + dash - - HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python3-zmq" DEP_OPTS="NO_QT=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" -# Win64 - - HOST=x86_64-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine1.6 bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" -# dogecoind - - HOST=x86_64-unknown-linux-gnu PACKAGES="bc python3-zmq" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" -# No wallet - - HOST=x86_64-unknown-linux-gnu PACKAGES="python3" DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" -# Cross-Mac - - HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" OSX_SDK=10.11 GOAL="deploy" - -before_install: - - export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g") - - export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/pyenv/d' | tr "\n" ":" | sed "s|::|:|g") -install: - - if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi - - if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi - - if [ -n "$PACKAGES" ]; then sudo rm -rf /etc/apt/sources.list.d/*; fi - - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi - - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi - - if [ "$RUN_TESTS" = "true" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq python3-dev; fi -before_script: - - unset CC; unset CXX - - if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi - - mkdir -p depends/SDKs depends/sdk-sources - - if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/install-deps.sh; fi - - if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi - - if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi - - make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS -script: - - if [ "$RUN_TESTS" = "true" -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi - - if [ "$RUN_TESTS" = "true" -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then git fetch --unshallow; fi - - if [ "$RUN_TESTS" = "true" -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi - - export TRAVIS_COMMIT_LOG=`git log --format=fuller -1` - - if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi - - OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST - - BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib" - - depends/$HOST/native/bin/ccache --max-size=$CCACHE_SIZE - - test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh - - mkdir build && cd build - - ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false) - - make distdir VERSION=$HOST - - cd dogecoin-$HOST - - ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false) - - make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false ) - - export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib - - if [ "$RUN_TESTS" = "true" ]; then make $MAKEJOBS check VERBOSE=1; fi - - if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.py --coverage; fi -after_script: - - echo $TRAVIS_COMMIT_RANGE - - echo $TRAVIS_COMMIT_LOG |