name: GitHub Actions CI on: pull_request: push: branches: - master - develop - githubactions* - feature/** - fix/** - pr/** env: B2_CI_VERSION: 1 B2_VARIANT: release B2_FLAGS: warnings=extra warnings-as-errors=on jobs: posix: strategy: fail-fast: false matrix: include: - name: "COMMENT=docs Job 0" buildtype: "docs" packages: "docbook docbook-xml docbook-xsl xsltproc libsaxonhe-java default-jre-headless" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++" sources: "" llvm_os: "" llvm_ver: "" comment: "docs" - name: "COMMENT=codecov.io LCOV_BRANCH_COVERAGE=0 B2_ Job 1" buildtype: "codecov" packages: "g++-8" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-8" sources: "" llvm_os: "" llvm_ver: "" comment: "codecov.io" lcov_branch_coverage: "0" b2_cxxstd: "11" b2_toolset: "gcc-8" b2_defines: "BOOST_NO_STRESS_TEST=1" - name: "COMMENT=valgrind B2_TOOLSET=clang-6.0 B2_CXXS Job 2" buildtype: "valgrind" packages: "clang-6.0 libc6-dbg libstdc++-8-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-6.0" sources: "" llvm_os: "bionic" llvm_ver: "6.0" comment: "valgrind" b2_toolset: "clang-6.0" b2_cxxstd: "11,14" b2_defines: "BOOST_NO_STRESS_TEST=1" b2_variant: "debug" b2_testflags: "testing.launcher=valgrind" valgrind_opts: "--error-exitcode=1" - name: "COMMENT=asan B2_VARIANT=debug B2_TOOLSET=clan Job 3" buildtype: "boost" packages: "clang-11 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-11" sources: "" llvm_os: "bionic" llvm_ver: "11" comment: "asan" b2_variant: "debug" b2_toolset: "clang-11" b2_cxxstd: "17" b2_asan: "1" b2_defines: "BOOST_NO_STRESS_TEST=1" - name: "COMMENT=ubsan B2_VARIANT=debug B2_TOOLSET=cla Job 4" buildtype: "boost" packages: "clang-11 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-11" sources: "" llvm_os: "xenial" llvm_ver: "11" comment: "ubsan" b2_variant: "debug" b2_toolset: "clang-11" b2_cxxstd: "17" b2_ubsan: "1" b2_defines: "BOOST_NO_STRESS_TEST=1" - name: "B2_TOOLSET=gcc-4.8 B2_CXXSTD=11 Job 9" buildtype: "boost" packages: "g++-4.8" packages_to_remove: "" os: "ubuntu-16.04" container: "ubuntu:14.04" cxx: "g++-4.8" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-4.8" b2_cxxstd: "11" - name: "B2_TOOLSET=gcc-4.9 B2_CXXSTD=11 Job 10" buildtype: "boost" packages: "g++-4.9" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-4.9" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-4.9" b2_cxxstd: "11" - name: "B2_TOOLSET=gcc-5 B2_CXXSTD=11 Job 11" buildtype: "boost" packages: "g++-5" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-5" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-5" b2_cxxstd: "11" - name: "B2_TOOLSET=gcc-6 B2_CXXSTD=11,14 Job 12" buildtype: "boost" packages: "g++-6" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-6" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-6" b2_cxxstd: "11,14" - name: "B2_TOOLSET=gcc-7 B2_CXXSTD=14,17 Job 13" buildtype: "boost" packages: "g++-7" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-7" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-7" b2_cxxstd: "14,17" - name: "B2_TOOLSET=gcc-8 B2_CXXSTD=17,2a Job 14" buildtype: "boost" packages: "g++-8" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-8" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-8" b2_cxxstd: "17,2a" - name: "B2_TOOLSET=gcc-9 B2_CXXSTD=17,2a Job 15" buildtype: "boost" packages: "g++-9" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-9" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-9" b2_cxxstd: "17,2a" - name: "COMMENT=standalone CXX=g++-9 Job 16" buildtype: "standalone" packages: "g++-9" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++-9" sources: "" llvm_os: "" llvm_ver: "" comment: "standalone" - name: "B2_TOOLSET=gcc-10 B2_CXXSTD=17,2a Job 17" buildtype: "boost" packages: "g++-10" packages_to_remove: "" os: "ubuntu-20.04" cxx: "g++-10" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "gcc-10" b2_cxxstd: "17,2a" - name: "COMMENT=standalone CXX=g++-10 Job 18" buildtype: "standalone" packages: "g++-10" packages_to_remove: "" os: "ubuntu-20.04" cxx: "g++-10" sources: "" llvm_os: "" llvm_ver: "" comment: "standalone" - name: "B2_TOOLSET=clang-3.8 B2_CXXSTD=11 Job 19" buildtype: "boost" packages: "clang-3.8" packages_to_remove: "" os: "ubuntu-16.04" container: "ubuntu:14.04" cxx: "clang++-3.8" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "clang-3.8" b2_cxxstd: "11" - name: "B2_TOOLSET=clang-4.0 B2_CXXSTD=11,14 Job 20" buildtype: "boost" packages: "clang-4.0 libstdc++-6-dev" packages_to_remove: "" os: "ubuntu-16.04" cxx: "clang++-4.0" sources: "" llvm_os: "xenial" llvm_ver: "4.0" b2_toolset: "clang-4.0" b2_cxxstd: "11,14" - name: "B2_TOOLSET=clang-5.0 B2_CXXSTD=11,14 Job 21" buildtype: "boost" packages: "clang-5.0 libstdc++-7-dev" packages_to_remove: "" os: "ubuntu-16.04" cxx: "clang++-5.0" sources: "" llvm_os: "xenial" llvm_ver: "5.0" b2_toolset: "clang-5.0" b2_cxxstd: "11,14" - name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=14,17 Job 22" buildtype: "boost" packages: "clang-6.0 libc6-dbg libstdc++-8-dev" packages_to_remove: "" os: "ubuntu-16.04" cxx: "clang++-6.0" sources: "" llvm_os: "xenial" llvm_ver: "6.0" b2_toolset: "clang-6.0" b2_cxxstd: "14,17" - name: "B2_TOOLSET=clang-7 B2_CXXSTD=17,2a Job 23" buildtype: "boost" packages: "clang-7 libstdc++-8-dev" packages_to_remove: "" os: "ubuntu-16.04" cxx: "clang++-7" sources: "" llvm_os: "xenial" llvm_ver: "7" b2_toolset: "clang-7" b2_cxxstd: "17,2a" - name: "B2_TOOLSET=clang-8 B2_CXXSTD=17,2a Job 24" buildtype: "boost" packages: "clang-8 libstdc++-8-dev" packages_to_remove: "" os: "ubuntu-16.04" cxx: "clang++-8" sources: "" llvm_os: "xenial" llvm_ver: "8" b2_toolset: "clang-8" b2_cxxstd: "17,2a" - name: "B2_TOOLSET=clang-9 B2_CXXSTD=17,2a Job 25" buildtype: "boost" packages: "clang-9 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-9" sources: "" llvm_os: "xenial" llvm_ver: "9" b2_toolset: "clang-9" b2_cxxstd: "17,2a" - name: "COMMENT=standalone CXX=clang++-9 Job 26" buildtype: "standalone" packages: "clang-9 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-9" sources: "" llvm_os: "xenial" llvm_ver: "9" comment: "standalone" - name: "B2_TOOLSET=clang-10 B2_CXXSTD=17,2a Job 27" buildtype: "boost" packages: "clang-10 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-10" sources: "" llvm_os: "xenial" llvm_ver: "10" b2_toolset: "clang-10" b2_cxxstd: "17,2a" - name: "COMMENT=standalone CXX=clang++-10 Job 28" buildtype: "standalone" packages: "clang-10 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-10" sources: "" llvm_os: "xenial" llvm_ver: "10" comment: "standalone" - name: "B2_TOOLSET=clang-11 B2_CXXSTD=17,2a Job 29" buildtype: "boost" packages: "clang-11 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-11" sources: "" llvm_os: "xenial" llvm_ver: "11" b2_toolset: "clang-11" b2_cxxstd: "17,2a" - name: "COMMENT=standalone CXX=clang++-11 Job 30" buildtype: "standalone" packages: "clang-11 libstdc++-9-dev" packages_to_remove: "" os: "ubuntu-18.04" cxx: "clang++-11" sources: "" llvm_os: "xenial" llvm_ver: "11" comment: "standalone" - name: "COMMENT=Coverity Scan B2_TOOLSET=clang Job 31" buildtype: "coverity" packages: "" packages_to_remove: "" os: "ubuntu-16.04" cxx: "g++" sources: "" llvm_os: "" llvm_ver: "" comment: "Coverity Scan" b2_toolset: "clang" runs-on: ${{ matrix.os }} container: ${{ matrix.container }} steps: - name: Check if running in container if: matrix.container != '' run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV - name: If running in container, upgrade packages if: matrix.container != '' run: | sudo apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget curl apt-transport-https make apt-file sudo unzip libssl-dev build-essential autotools-dev autoconf automake g++ libc++-helpers python python-pip ruby cpio gcc-multilib g++-multilib pkgconf python3 python3-pip ccache libpython-dev sudo apt-add-repository ppa:git-core/ppa sudo apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 -y install git sudo python -m pip install --upgrade pip==20.3.4 sudo /usr/local/bin/pip install cmake - uses: actions/checkout@v2 - name: linux shell: bash env: CXX: ${{ matrix.cxx }} SOURCES: ${{ matrix.sources }} LLVM_OS: ${{ matrix.llvm_os }} LLVM_VER: ${{ matrix.llvm_ver }} PACKAGES: ${{ matrix.packages }} PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }} JOB_BUILDTYPE: ${{ matrix.buildtype }} COMMENT: ${{ matrix.comment }} LCOV_BRANCH_COVERAGE: ${{ matrix.lcov_branch_coverage }} B2_CXXSTD: ${{ matrix.b2_cxxstd }} B2_TOOLSET: ${{ matrix.b2_toolset }} B2_DEFINES: ${{ matrix.b2_defines }} B2_VARIANT: ${{ matrix.b2_variant }} B2_TESTFLAGS: ${{ matrix.b2_testflags }} VALGRIND_OPTS: ${{ matrix.valgrind_opts }} B2_ASAN: ${{ matrix.b2_asan }} B2_UBSAN: ${{ matrix.b2_ubsan }} TRAVIS_BRANCH: ${{ github.base_ref }} TRAVIS_OS_NAME: "linux" run: | echo '==================================> SETUP' echo '==================================> PACKAGES' set -e if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi echo ">>>>> APT: REPO.." for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done if test -n "${LLVM_OS}" ; then wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - if test -n "${LLVM_VER}" ; then sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main" else # Snapshot (i.e. trunk) build of clang sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main" fi fi echo ">>>>> APT: UPDATE.." sudo -E apt-get -o Acquire::Retries=3 update if test -n "${SOURCES}" ; then echo ">>>>> APT: INSTALL SOURCES.." for SOURCE in $SOURCES; do sudo -E apt-add-repository ppa:$SOURCE done fi echo ">>>>> APT: INSTALL ${PACKAGES}.." sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES} echo '==================================> INSTALL AND COMPILE' set -e export TRAVIS_BUILD_DIR=$(pwd) export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')} export VCS_COMMIT_ID=$GITHUB_SHA export GIT_COMMIT=$GITHUB_SHA export REPO_NAME=$(basename $GITHUB_REPOSITORY) export USER=$(whoami) export CC=${CC:-gcc} export PATH=~/.local/bin:/usr/local/bin:$PATH if [ "$JOB_BUILDTYPE" == "docs" ]; then echo '==================================> INSTALL' pwd cd .. mkdir -p $HOME/cache && cd $HOME/cache if [ ! -d doxygen ]; then git clone -b 'Release_1_8_15' --depth 1 https://github.com/doxygen/doxygen.git && echo "not-cached" ; else echo "cached" ; fi cd doxygen cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release cd build sudo make install cd ../.. if [ ! -f saxonhe.zip ]; then wget -O saxonhe.zip https://sourceforge.net/projects/saxon/files/Saxon-HE/9.9/SaxonHE9-9-1-4J.zip/download && echo "not-cached" ; else echo "cached" ; fi unzip -o saxonhe.zip sudo rm /usr/share/java/Saxon-HE.jar sudo cp saxon9he.jar /usr/share/java/Saxon-HE.jar cd .. BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true git clone -b $BOOST_BRANCH https://github.com/boostorg/boost.git boost-root --depth 1 cd boost-root export BOOST_ROOT=$(pwd) git submodule update --init libs/context git submodule update --init tools/boostbook git submodule update --init tools/boostdep git submodule update --init tools/docca git submodule update --init tools/quickbook rsync -av $TRAVIS_BUILD_DIR/ libs/json python tools/boostdep/depinst/depinst.py ../tools/quickbook ./bootstrap.sh ./b2 headers echo '==================================> SCRIPT' echo "using doxygen ; using boostbook ; using saxonhe ;" > tools/build/src/user-config.jam ./b2 -j3 libs/json/doc//boostrelease elif [ "$JOB_BUILDTYPE" == "codecov" ]; then echo '==================================> INSTALL' git clone https://github.com/boostorg/boost-ci.git boost-ci-cloned --depth 1 cp -prf boost-ci-cloned/ci . rm -rf boost-ci-cloned if [ "$TRAVIS_OS_NAME" == "osx" ]; then unset -f cd fi export SELF=`basename $REPO_NAME` export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" export BOOST_CI_SRC_FOLDER=$(pwd) . ./ci/common_install.sh echo '==================================> SCRIPT' cd $BOOST_ROOT/libs/$SELF ci/travis/codecov.sh elif [ "$JOB_BUILDTYPE" == "valgrind" ]; then echo '==================================> INSTALL' git clone https://github.com/boostorg/boost-ci.git boost-ci-cloned --depth 1 cp -prf boost-ci-cloned/ci . rm -rf boost-ci-cloned if [ "$TRAVIS_OS_NAME" == "osx" ]; then unset -f cd fi export SELF=`basename $REPO_NAME` export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" export BOOST_CI_SRC_FOLDER=$(pwd) . ./ci/common_install.sh echo '==================================> SCRIPT' cd $BOOST_ROOT/libs/$SELF ci/travis/valgrind.sh elif [ "$JOB_BUILDTYPE" == "boost" ]; then echo '==================================> INSTALL' git clone https://github.com/boostorg/boost-ci.git boost-ci-cloned --depth 1 cp -prf boost-ci-cloned/ci . rm -rf boost-ci-cloned if [ "$TRAVIS_OS_NAME" == "osx" ]; then unset -f cd fi export SELF=`basename $REPO_NAME` export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" export BOOST_CI_SRC_FOLDER=$(pwd) . ./ci/common_install.sh echo '==================================> SCRIPT' $BOOST_ROOT/libs/$SELF/ci/travis/build.sh elif [ "$JOB_BUILDTYPE" == "standalone" ]; then echo '==================================> INSTALL' pip install --user cmake echo '==================================> SCRIPT' export CXXFLAGS="-Wall -Wextra -Werror -std=c++17" mkdir __build_17 cd __build_17 cmake -DBOOST_JSON_STANDALONE=1 .. cmake --build . ctest -V . export CXXFLAGS="-Wall -Wextra -Werror -std=c++2a" mkdir ../__build_2a cd ../__build_2a cmake -DBOOST_JSON_STANDALONE=1 .. cmake --build . ctest -V . elif [ "$JOB_BUILDTYPE" == "coverity" ]; then echo '==================================> INSTALL' git clone https://github.com/boostorg/boost-ci.git boost-ci-cloned --depth 1 cp -prf boost-ci-cloned/ci . rm -rf boost-ci-cloned if [ "$TRAVIS_OS_NAME" == "osx" ]; then unset -f cd fi export SELF=`basename $REPO_NAME` export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" export BOOST_CI_SRC_FOLDER=$(pwd) . ./ci/common_install.sh echo '==================================> SCRIPT' if [ -n "${COVERITY_SCAN_NOTIFICATION_EMAIL}" -a \( "$TRAVIS_BRANCH" = "develop" -o "$TRAVIS_BRANCH" = "master" \) -a \("$GITHUB_EVENT_NAME" = "push" -o "$GITHUB_EVENT_NAME" = "cron" \) ] ; then cd $BOOST_ROOT/libs/$SELF ci/travis/coverity.sh fi fi windows: strategy: fail-fast: false matrix: include: - name: "msvc-14.1" buildtype: "boost" packages: "" os: "windows-2016" cxx: "" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "msvc-14.1" b2_cxxstd: "11,14,17" - name: "msvc-14.1 standalone" buildtype: "standalone-windows" packages: "" os: "windows-2016" cxx: "msvc-14.1" sources: "" llvm_os: "" llvm_ver: "" comment: "standalone" - name: "msvc-14.2" buildtype: "boost" packages: "" os: "windows-2019" cxx: "" sources: "" llvm_os: "" llvm_ver: "" b2_toolset: "msvc-14.2" b2_cxxstd: "17,latest" - name: "msvc-14.2 standalone" buildtype: "standalone-windows" packages: "" os: "windows-2019" cxx: "msvc-14.2" sources: "" llvm_os: "" llvm_ver: "" comment: "standalone" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: windows shell: cmd env: CXX: ${{ matrix.cxx }} SOURCES: ${{ matrix.sources }} LLVM_OS: ${{ matrix.llvm_os }} LLVM_VER: ${{ matrix.llvm_ver }} PACKAGES: ${{ matrix.packages }} JOB_BUILDTYPE: ${{ matrix.buildtype }} COMMENT: ${{ matrix.comment }} LCOV_BRANCH_COVERAGE: ${{ matrix.lcov_branch_coverage }} B2_CXXSTD: ${{ matrix.b2_cxxstd }} B2_TOOLSET: ${{ matrix.b2_toolset }} B2_DEFINES: ${{ matrix.b2_defines }} B2_VARIANT: ${{ matrix.b2_variant }} B2_TESTFLAGS: ${{ matrix.b2_testflags }} VALGRIND_OPTS: ${{ matrix.valgrind_opts }} B2_ASAN: ${{ matrix.b2_asan }} B2_UBSAN: ${{ matrix.b2_ubsan }} GHA_TARGET_BRANCH: ${{ github.base_ref }} TRAVIS_BRANCH: ${{ github.base_ref }} TRAVIS_OS_NAME: "windows" run: | @ECHO ON setlocal enabledelayedexpansion IF "!GHA_TARGET_BRANCH!" == "" ( for /F %%i in ("!GITHUB_REF!") do @set GHA_TARGET_BRANCH=%%~nxi for /F %%i in ("!GITHUB_REF!") do @set TRAVIS_BRANCH=%%~nxi ) if "!JOB_BUILDTYPE!" == "boost" ( echo "Running boost job" echo '==================================> INSTALL' git clone https://github.com/boostorg/boost-ci.git boost-ci-cloned --depth 1 cp -prf boost-ci-cloned/ci . rm -rf boost-ci-cloned REM source ci/travis/install.sh REM The contents of install.sh below: for /F %%i in ("!GITHUB_REPOSITORY!") do @set SELF=%%~nxi SET BOOST_CI_TARGET_BRANCH=!GHA_TARGET_BRANCH! SET BOOST_CI_SRC_FOLDER=!cd! call ci\common_install.bat echo '==================================> COMPILE' call !BOOST_ROOT!\libs\!SELF!\ci\build.bat ) else if "!JOB_BUILDTYPE!" == "standalone-windows" ( echo "Running standalone-windows" echo '==================================> BEFORE_INSTALL' echo '==================================> INSTALL' REM Installing cmake with choco in the Dockerfile, so not required here: REM choco install cmake echo '==================================> COMPILE' set CXXFLAGS="/std:c++17" mkdir __build_17 cd __build_17 cmake -DBOOST_JSON_STANDALONE=1 .. cmake --build . ctest -V -C Debug . set CXXFLAGS="/std:c++latest" mkdir ..\__build_2a cd ..\__build_2a cmake -DBOOST_JSON_STANDALONE=1 .. cmake --build . ctest -V -C Debug . )