build/azure-pipelines.yml
2019-06-04 07:38:20 -05:00

343 lines
9.3 KiB
YAML

# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# Copyright Rene Rivera 2015-2019.
trigger:
branches:
include:
- develop
- master
- feature/*
pr:
branches:
include:
- develop
stages:
- stage: Test
jobs:
- job: 'Linux'
pool:
vmImage: 'ubuntu-16.04'
strategy:
matrix:
GCC 9:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-9
PACKAGES: g++-9
GCC 8:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-8
PACKAGES: g++-8
GCC 7:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-7
PACKAGES: g++-7
GCC 6:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-6
PACKAGES: g++-6
GCC 5:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-5
PACKAGES: g++-5
GCC 4.9:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-4.9
PACKAGES: g++-4.9
GCC 4.8:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-4.8
PACKAGES: g++-4.8
GCC 4.7:
TOOLSET: gcc
TEST_TOOLSET: gcc
CXX: g++-4.7
PACKAGES: g++-4.7
Clang 8:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-8
PACKAGES: clang-8
LLVM_REPO: llvm-toolchain-xenial-8
Clang 7:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-7
PACKAGES: clang-7
LLVM_REPO: llvm-toolchain-xenial-7
Clang 6:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-6.0
PACKAGES: clang-6.0
LLVM_REPO: llvm-toolchain-xenial-6.0
Clang 5:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-5.0
PACKAGES: clang-5.0
LLVM_REPO: llvm-toolchain-xenial-5.0
Clang 4:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-4.0
PACKAGES: clang-4.0
LLVM_REPO: llvm-toolchain-xenial-4.0
Clang 3.9:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-3.9
PACKAGES: clang-3.9
Clang 3.8:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-3.8
PACKAGES: clang-3.8
Clang 3.7:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-3.7
PACKAGES: clang-3.7
Clang 3.6:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-3.6
PACKAGES: clang-3.6
Clang 3.5:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++-3.5
PACKAGES: clang-3.5
steps:
- bash: |
set -e
uname -a
sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
if test -n "${LLVM_REPO}" ; then
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo -E apt-add-repository "deb http://apt.llvm.org/xenial/ ${LLVM_REPO} main"
fi
sudo -E apt-get update
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install ${PACKAGES}
displayName: Install
- bash: |
set -e
cd src/engine
set PATH=${PATH};${CXX_PATH}
./build.sh ${TOOLSET}
./b2 -v
cd ../..
displayName: Build
- bash: |
set -e
CXX_PATH=`which ${CXX}`
cd test
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
python test_all.py ${TEST_TOOLSET}
cd ..
displayName: Test
- bash: |
set -e
CXX_PATH=`which ${CXX}`
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
./bootstrap.sh --with-toolset=${TOOLSET}
./b2 --prefix=./.b2 install ${TEST_TOOLSET}
displayName: Bootstrap
- job: 'Windows'
strategy:
matrix:
VS 2019:
TOOLSET: vc142
TEST_TOOLSET: msvc
VM_IMAGE: 'windows-2019'
VS 2017:
TOOLSET: vc141
TEST_TOOLSET: msvc
VM_IMAGE: 'vs2017-win2016'
VS 2015:
TOOLSET: vc14
TEST_TOOLSET: msvc
VM_IMAGE: 'vs2015-win2012r2'
VS 2013:
TOOLSET: vc12
TEST_TOOLSET: msvc
VM_IMAGE: 'vs2015-win2012r2'
MinGW 8.1.0:
TOOLSET: mingw
TEST_TOOLSET: gcc
VM_IMAGE: 'vs2017-win2016'
pool:
vmImage: $(VM_IMAGE)
steps:
- powershell: |
cd src/engine
$env:path += ';' + $env:CXX_PATH
cmd /c build.bat $env:TOOLSET
./b2.exe -v
cd ../..
displayName: Build
- powershell: |
cd test
echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam
python test_all.py $env:TEST_TOOLSET
cd ..
displayName: Test
- powershell: |
$env:path += ';' + $env:CXX_PATH
echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam
./bootstrap.bat
./b2.exe --prefix=./.b2 install ${TEST_TOOLSET}
displayName: Bootstrap
- job: 'macOS'
strategy:
matrix:
Xcode 10.2.1:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_10.2.1.app
VM_IMAGE: 'macOS-10.14'
Xcode 10.2:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_10.2.app
VM_IMAGE: 'macOS-10.14'
Xcode 10.1:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_10.1.app
VM_IMAGE: 'macOS-10.14'
Xcode 10.0:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_10.app
VM_IMAGE: 'macOS-10.14'
Xcode 9.4.1:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.4.1.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.4:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.4.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.3.1:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.3.1.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.3:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.3.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.2:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.2.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.1:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.1.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.0.1:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.0.1.app
VM_IMAGE: 'macOS-10.13'
Xcode 9.0:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_9.app
VM_IMAGE: 'macOS-10.13'
Xcode 8.3.3:
TOOLSET: clang
TEST_TOOLSET: clang
CXX: clang++
XCODE_APP: /Applications/Xcode_8.3.3.app
VM_IMAGE: 'macOS-10.13'
pool:
vmImage: $(VM_IMAGE)
steps:
- bash: |
set -e
uname -a
sudo xcode-select -switch ${XCODE_APP}
which clang++
displayName: Install
- bash: |
set -e
cd src/engine
./build.sh ${TOOLSET}
./b2 -v
cd ../..
displayName: Build
- bash: |
set -e
CXX_PATH=`which ${CXX}`
cd test
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
python test_all.py ${TEST_TOOLSET}
cd ..
displayName: Test
- bash: |
set -e
CXX_PATH=`which ${CXX}`
echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam
./bootstrap.sh --with-toolset=${TOOLSET}
./b2 --prefix=./.b2 install ${TEST_TOOLSET}
displayName: Bootstrap
- stage: WebsiteUpdate
displayName: 'Website Update'
condition: in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/develop')
jobs:
- job: Documentation
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '2.x'
- task: UseRubyVersion@0
- bash: |
pip install --user Pygments
pip install --user "https://github.com/bfgroup/jam_pygments/archive/master.zip"
gem install asciidoctor
gem install pygments.rb
echo "using asciidoctor ;" >> project-config.jam
./bootstrap.sh
pushd doc
../b2 --website-doc-dir=manual/$(Build.SourceBranchName) website
displayName: 'Build & Publish'
env:
GH_TOKEN: $(GitHubToken)