239b709f97
* Added unit tests to Github Actions * Set user e-mail and name for git tests to succeed * Simplify setup.sh logic * Replicate Travis script on Github Actions * Update flags since '.' is not allowed * Added badge, simplified workflow * Remove pinning of coverage * Remove unit tests run on Github Actions from Travis
150 lines
4.3 KiB
YAML
150 lines
4.3 KiB
YAML
#=============================================================================
|
|
# Project settings
|
|
#=============================================================================
|
|
# Only build master and develop on push; do not build every branch.
|
|
branches:
|
|
only:
|
|
- master
|
|
- develop
|
|
- /^releases\/.*$/
|
|
|
|
#=============================================================================
|
|
# Build matrix
|
|
#=============================================================================
|
|
|
|
dist: bionic
|
|
|
|
jobs:
|
|
fast_finish: true
|
|
include:
|
|
- stage: 'style checks'
|
|
python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=flake8
|
|
- stage: 'unit tests + documentation'
|
|
python: '2.6'
|
|
dist: trusty
|
|
os: linux
|
|
language: python
|
|
addons:
|
|
apt:
|
|
# Everything but patchelf, that is not available for trusty
|
|
packages:
|
|
- ccache
|
|
- gfortran
|
|
- graphviz
|
|
- gnupg2
|
|
- kcov
|
|
- mercurial
|
|
- ninja-build
|
|
- realpath
|
|
- zsh
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
|
- python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=shell, COVERAGE=true, KCOV_VERSION=38 ]
|
|
- python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=doc
|
|
|
|
stages:
|
|
- 'style checks'
|
|
- 'unit tests + documentation'
|
|
|
|
|
|
#=============================================================================
|
|
# Environment
|
|
#=============================================================================
|
|
|
|
# Docs need graphviz to build
|
|
addons:
|
|
# for Linux builds, we use APT
|
|
apt:
|
|
packages:
|
|
- ccache
|
|
- coreutils
|
|
- gfortran
|
|
- graphviz
|
|
- gnupg2
|
|
- mercurial
|
|
- ninja-build
|
|
- patchelf
|
|
- zsh
|
|
update: true
|
|
|
|
# ~/.ccache needs to be cached directly as Travis is not taking care of it
|
|
# (possibly because we use 'language: python' and not 'language: c')
|
|
cache:
|
|
pip: true
|
|
ccache: true
|
|
directories:
|
|
- ~/.ccache
|
|
|
|
before_install:
|
|
- ccache -M 2G && ccache -z
|
|
# Install kcov manually, since it's not packaged for bionic beaver
|
|
- if [[ "$KCOV_VERSION" ]]; then
|
|
sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev;
|
|
KCOV_ROOT=$(mktemp -d);
|
|
wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz;
|
|
tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz;
|
|
mkdir -p ${KCOV_ROOT}/build;
|
|
cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd - ;
|
|
make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install;
|
|
fi
|
|
|
|
# Install various dependencies
|
|
install:
|
|
- pip install --upgrade pip
|
|
- pip install --upgrade six
|
|
- pip install --upgrade setuptools
|
|
- pip install --upgrade codecov coverage==4.5.4
|
|
- pip install --upgrade flake8
|
|
- pip install --upgrade pep8-naming
|
|
- if [[ "$TEST_SUITE" == "doc" ]]; then
|
|
pip install --upgrade -r lib/spack/docs/requirements.txt;
|
|
fi
|
|
|
|
before_script:
|
|
# Need this for the git tests to succeed.
|
|
- git config --global user.email "spack@example.com"
|
|
- git config --global user.name "Test User"
|
|
|
|
# Need this to be able to compute the list of changed files
|
|
- git fetch origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}
|
|
|
|
#=============================================================================
|
|
# Building
|
|
#=============================================================================
|
|
script:
|
|
- share/spack/qa/run-$TEST_SUITE-tests
|
|
|
|
after_success:
|
|
- ccache -s
|
|
- case "$TEST_SUITE" in
|
|
unit)
|
|
if [[ "$COVERAGE" == "true" ]]; then
|
|
codecov --env PYTHON_VERSION
|
|
--required
|
|
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
|
|
fi
|
|
;;
|
|
shell)
|
|
codecov --env PYTHON_VERSION
|
|
--required
|
|
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
|
|
esac
|
|
|
|
#=============================================================================
|
|
# Notifications
|
|
#=============================================================================
|
|
notifications:
|
|
email:
|
|
recipients:
|
|
- tgamblin@llnl.gov
|
|
- massimiliano.culpo@gmail.com
|
|
on_success: change
|
|
on_failure: always
|