From 1a02c93022c2bdb7db5a95f565bddab2d4cb1495 Mon Sep 17 00:00:00 2001 From: sdarwin Date: Fri, 5 Mar 2021 15:59:58 +0000 Subject: [PATCH] Add GitHub Actions config [ci skip] --- .github/workflows/ci.yml | 555 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 555 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..17e9962 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,555 @@ +name: GitHub Actions CI + +on: + pull_request: + push: + branches: + - master + - develop + - githubactions* + - feature/** + - fix/** + - pr/** + +env: + B2_VARIANT: variant=release,debug + +jobs: + posix: + strategy: + fail-fast: false + matrix: + include: + - name: "B2_TOOLSET=gcc-4.8 B2_CXXSTD=03,11 Job 0" + 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: "03,11" + - name: "B2_TOOLSET=gcc-4.9 B2_CXXSTD=03,11 Job 1" + 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: "03,11" + - name: "B2_TOOLSET=gcc-5 B2_CXXSTD=11 Job 2" + 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 3" + 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=11,14,17 Job 4" + 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: "11,14,17" + - name: "B2_TOOLSET=gcc-8 B2_CXXSTD=14,17,2a Job 5" + 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: "14,17,2a" + - name: "B2_TOOLSET=clang-3.8 B2_CXXSTD=03,11,14 Job 6" + buildtype: "boost" + packages: "clang-3.8 libstdc++-6-dev" + packages_to_remove: "" + os: "ubuntu-16.04" + container: "ubuntu:14.04" + cxx: "clang++-3.8" + sources: "" + llvm_os: "xenial" + llvm_ver: "3.8" + b2_toolset: "clang-3.8" + b2_cxxstd: "03,11,14" + - name: "B2_TOOLSET=clang-4.0 B2_CXXSTD=11,14 Job 7" + 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,17 Job 8" + 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,17" + - name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=14,17,2a Job 9" + buildtype: "boost" + packages: "clang-6.0 libc6-dbg libc++-dev 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,2a" + - name: "B2_TOOLSET=clang-7 B2_CXXSTD=14,17,2a Job 10" + buildtype: "boost" + packages: "clang-7 libc6-dbg libc++-dev 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: "14,17,2a" + - name: "B2_TOOLSET=clang-8 B2_CXXSTD=14,17,2a Job 11" + buildtype: "boost" + packages: "clang-8 libc6-dbg libc++-dev 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: "14,17,2a" + - name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=03,11,14,17,2a Job 12" + buildtype: "boost" + packages: "clang-6.0 libc6-dbg libc++-dev 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: "03,11,14,17,2a" + b2_cxxflags: "-stdlib=libc++" + - name: "COMMENT=codecov.io B2_CXXSTD=03,11 B2_TOOLSET Job 14" + buildtype: "b5847f804b-bbb3de2b00" + packages: "g++-8" + packages_to_remove: "" + os: "ubuntu-16.04" + cxx: "g++-8" + sources: "" + llvm_os: "" + llvm_ver: "" + comment: "codecov.io" + b2_cxxstd: "03,11" + b2_toolset: "gcc-8" + b2_defines: "define=BOOST_NO_STRESS_TEST=1" + - name: "COMMENT=cppcheck Job 15" + buildtype: "b5847f804b-ed45733e6c" + packages: "binutils-gold gdb libc6-dbg" + packages_to_remove: "" + os: "ubuntu-16.04" + cxx: "g++" + sources: "" + llvm_os: "" + llvm_ver: "" + comment: "cppcheck" + - name: "COMMENT=ubsan B2_VARIANT=variant=debug B2_TOO Job 16" + buildtype: "boost" + packages: "g++-8" + packages_to_remove: "" + os: "ubuntu-16.04" + cxx: "g++-8" + sources: "" + llvm_os: "" + llvm_ver: "" + comment: "ubsan" + b2_variant: "variant=debug" + b2_toolset: "gcc-8" + b2_cxxstd: "03,11,14,17,2a" + b2_defines: "define=BOOST_NO_STRESS_TEST=1" + b2_cxxflags: "cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=all" + b2_linkflags: "linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=all linkflags=-fuse-ld=gold" + ubsan_options: "print_stacktrace=1" + - name: "COMMENT=valgrind B2_TOOLSET=clang-6.0 B2_CXXS Job 17" + buildtype: "b5847f804b-db180b7bd2" + packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev" + packages_to_remove: "" + os: "ubuntu-16.04" + cxx: "clang++-6.0" + sources: "" + llvm_os: "xenial" + llvm_ver: "6.0" + comment: "valgrind" + b2_toolset: "clang-6.0" + b2_cxxstd: "03,11,14,17,2a" + b2_defines: "define=BOOST_NO_STRESS_TEST=1" + b2_variant: "variant=debug" + b2_testflags: "testing.launcher=valgrind" + valgrind_opts: "--error-exitcode=1" +# +# - name: "COMMENT=cmake Job 18" +# buildtype: "b5847f804b-e70eed6a8b" +# packages: "binutils-gold gdb libc6-dbg" +# packages_to_remove: "" +# os: "ubuntu-16.04" +# cxx: "g++" +# sources: "" +# llvm_os: "" +# llvm_ver: "" +# comment: "cmake" + - name: "COMMENT=Coverity Scan B2_TOOLSET=clang Job 19" + buildtype: "b5847f804b-cce9827eb5" + packages: "binutils-gold gdb libc6-dbg" + 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 }} + B2_TOOLSET: ${{ matrix.b2_toolset }} + B2_CXXSTD: ${{ matrix.b2_cxxstd }} + B2_CXXFLAGS: ${{ matrix.b2_cxxflags }} + COMMENT: ${{ matrix.comment }} + B2_DEFINES: ${{ matrix.b2_defines }} + B2_VARIANT: ${{ matrix.b2_variant }} + B2_LINKFLAGS: ${{ matrix.b2_linkflags }} + UBSAN_OPTIONS: ${{ matrix.ubsan_options }} + B2_TESTFLAGS: ${{ matrix.b2_testflags }} + VALGRIND_OPTS: ${{ matrix.valgrind_opts }} + 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" == "boost" ]; then + + echo '==================================> INSTALL' + + git clone https://github.com/boostorg/boost-ci.git boost-ci + cp -pr boost-ci/ci boost-ci/.codecov.yml . + + 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/build.sh + + elif [ "$JOB_BUILDTYPE" == "b5847f804b-bbb3de2b00" ]; then + + echo '==================================> INSTALL' + + git clone https://github.com/boostorg/boost-ci.git boost-ci + cp -pr boost-ci/ci boost-ci/.codecov.yml . + + 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' + + pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd + cd $BOOST_ROOT/libs/$SELF + ci/travis/codecov.sh + + elif [ "$JOB_BUILDTYPE" == "b5847f804b-ed45733e6c" ]; then + + echo '==================================> INSTALL' + + git clone https://github.com/boostorg/boost-ci.git boost-ci + cp -pr boost-ci/ci boost-ci/.codecov.yml . + + 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/cppcheck.sh + + elif [ "$JOB_BUILDTYPE" == "b5847f804b-db180b7bd2" ]; then + + echo '==================================> INSTALL' + + git clone https://github.com/boostorg/boost-ci.git boost-ci + cp -pr boost-ci/ci boost-ci/.codecov.yml . + + 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" == "b5847f804b-e70eed6a8b" ]; then + + echo '==================================> INSTALL' + + git clone https://github.com/boostorg/boost-ci.git boost-ci + cp -pr boost-ci/ci boost-ci/.codecov.yml . + + 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 + mkdir __build__ && cd __build__ + cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=move .. + ctest --output-on-failure -R boost_move + + elif [ "$JOB_BUILDTYPE" == "b5847f804b-cce9827eb5" ]; then + + echo '==================================> INSTALL' + + git clone https://github.com/boostorg/boost-ci.git boost-ci + cp -pr boost-ci/ci boost-ci/.codecov.yml . + + 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 +# +# osx: +# strategy: +# fail-fast: false +# matrix: +# include: +# +# - name: "B2_TOOLSET=clang B2_CXXSTD=03,11,17 Job 13" +# buildtype: "boost" +# packages: "" +# os: "macos-10.15" +# cxx: "g++" +# sources: "" +# llvm_os: "" +# llvm_ver: "" +# xcode_version: 11.7 +# b2_toolset: "clang" +# b2_cxxstd: "03,11,17" +# +# +# runs-on: ${{ matrix.os }} +# +# steps: +# - uses: actions/checkout@v2 +# +# - name: Set DEVELOPER_DIR +# if: matrix.xcode_version != '' +# run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV +# - name: Test DEVELOPER_DIR +# run: echo $DEVELOPER_DIR +# +# - name: "osx" +# shell: bash +# env: +# CXX: ${{ matrix.cxx }} +# SOURCES: ${{ matrix.sources }} +# LLVM_OS: ${{ matrix.llvm_os }} +# LLVM_VER: ${{ matrix.llvm_ver }} +# PACKAGES: ${{ matrix.packages }} +# JOB_BUILDTYPE: ${{ matrix.buildtype }} +# B2_TOOLSET: ${{ matrix.b2_toolset }} +# B2_CXXSTD: ${{ matrix.b2_cxxstd }} +# B2_CXXFLAGS: ${{ matrix.b2_cxxflags }} +# COMMENT: ${{ matrix.comment }} +# B2_DEFINES: ${{ matrix.b2_defines }} +# B2_VARIANT: ${{ matrix.b2_variant }} +# B2_LINKFLAGS: ${{ matrix.b2_linkflags }} +# UBSAN_OPTIONS: ${{ matrix.ubsan_options }} +# B2_TESTFLAGS: ${{ matrix.b2_testflags }} +# VALGRIND_OPTS: ${{ matrix.valgrind_opts }} +# TRAVIS_BRANCH: ${{ github.base_ref }} +# TRAVIS_OS_NAME: "osx" +# run: | +# echo '==================================> SETUP' +# set -e +# sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck +# echo '==================================> 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" == "boost" ]; then +# +# echo '==================================> INSTALL' +# +# git clone https://github.com/boostorg/boost-ci.git boost-ci +# cp -pr boost-ci/ci boost-ci/.codecov.yml . +# +# 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/build.sh +# +# fi