2aa8132afd
This PR moves build smoke tests from TravisCI and migrates them to Github Actions. The result is that build tests are performed in parallel with unit tests and they don't hog additional resources on Travis. The workflow will not run if a PR only changes packages in the built-in repository, but will always run on pushes to develop or master. * Removed build tests from Travis and passed them to Github Actions * Store ~/.ccache in Github Actions cache * Add filters on paths and make sure this workflow don't run * Use paths-ignore and exclude only files in the built-in repo * Added a badge to README.md
168 lines
4.2 KiB
YAML
168 lines
4.2 KiB
YAML
#=============================================================================
|
|
# Project settings
|
|
#=============================================================================
|
|
# Only build master and develop on push; do not build every branch.
|
|
branches:
|
|
only:
|
|
- master
|
|
- develop
|
|
- /^releases\/.*$/
|
|
|
|
#=============================================================================
|
|
# Build matrix
|
|
#=============================================================================
|
|
|
|
dist: xenial
|
|
|
|
jobs:
|
|
fast_finish: true
|
|
include:
|
|
- stage: 'style checks'
|
|
python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=flake8
|
|
# Shell integration with module files
|
|
- python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=bootstrap ]
|
|
- stage: 'unit tests + documentation'
|
|
python: '2.6'
|
|
dist: trusty
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
|
- python: '3.5'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.6'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.7'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=unit, COVERAGE=true ]
|
|
- python: '3.8'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=doc
|
|
- os: osx
|
|
language: generic
|
|
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ]
|
|
if: type != pull_request
|
|
|
|
stages:
|
|
- 'style checks'
|
|
- 'unit tests + documentation'
|
|
|
|
|
|
#=============================================================================
|
|
# Environment
|
|
#=============================================================================
|
|
|
|
# Docs need graphviz to build
|
|
addons:
|
|
# for Linux builds, we use APT
|
|
apt:
|
|
packages:
|
|
- ccache
|
|
- cmake
|
|
- gfortran
|
|
- graphviz
|
|
- gnupg2
|
|
- kcov
|
|
- mercurial
|
|
- ninja-build
|
|
- perl
|
|
- perl-base
|
|
- realpath
|
|
- r-base
|
|
- r-base-core
|
|
- r-base-dev
|
|
- zsh
|
|
# for Mac builds, we use Homebrew
|
|
homebrew:
|
|
packages:
|
|
- python@2
|
|
- gcc
|
|
- gnupg2
|
|
- ccache
|
|
- dash
|
|
- kcov
|
|
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
|
|
|
|
# Work around Travis's lack of support for Python on OSX
|
|
before_install:
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
pip2 install --upgrade pip;
|
|
pip2 install virtualenv;
|
|
virtualenv venv;
|
|
source venv/bin/activate;
|
|
fi
|
|
- ccache -M 2G && ccache -z
|
|
|
|
# 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
|
|
;;
|
|
esac
|
|
|
|
#=============================================================================
|
|
# Notifications
|
|
#=============================================================================
|
|
notifications:
|
|
email:
|
|
recipients: tgamblin@llnl.gov
|
|
on_success: change
|
|
on_failure: always
|