Docs: Travis-CI Workflow (#5133)
* Docs: Travis-CI Workflow Add a workflow how to use spack on Travis-CI. Future Work: depending if and how we can simplify 5101: add a multi-compiler, multi-C++-standard, multi-software build matrix example * Fix Typos
This commit is contained in:
parent
46d8cb8913
commit
6472c39c2e
@ -1028,6 +1028,84 @@ or filesystem views. However, it has some drawbacks:
|
||||
integrate Spack explicitly in their workflow. Not all users are
|
||||
willing to do this.
|
||||
|
||||
------------------------
|
||||
Using Spack on Travis-CI
|
||||
------------------------
|
||||
|
||||
Spack can be deployed as a provider for userland software in
|
||||
`Travis-CI <https://http://travis-ci.org>`_.
|
||||
|
||||
A starting-point for a ``.travis.yml`` file can look as follows.
|
||||
It uses `caching <https://docs.travis-ci.com/user/caching/>`_ for
|
||||
already built environments, so make sure to clean the Travis cache if
|
||||
you run into problems.
|
||||
|
||||
The main points that are implemented below:
|
||||
|
||||
#. Travis is detected as having up to 34 cores available, but only 2
|
||||
are actually allocated for the user. We limit the parallelism of
|
||||
the spack builds in the config.
|
||||
(The Travis yaml parser is a bit buggy on the echo command.)
|
||||
|
||||
#. Builds over 10 minutes need to be prefixed with ``travis_wait``.
|
||||
Alternatively, generate output once with ``spack install -v``.
|
||||
|
||||
#. Travis builds are non-interactive. This prevents using bash
|
||||
aliases and functions for modules. We fix that by sourcing
|
||||
``/etc/profile`` first (or running everything in a subshell with
|
||||
``bash -l -c '...'``).
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
language: cpp
|
||||
sudo: false
|
||||
dist: trusty
|
||||
|
||||
cache:
|
||||
apt: true
|
||||
directories:
|
||||
- $HOME/.cache
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.9
|
||||
- environment-modules
|
||||
|
||||
env:
|
||||
global:
|
||||
- SPACK_ROOT: $HOME/.cache/spack
|
||||
- PATH: $PATH:$HOME/.cache/spack/bin
|
||||
|
||||
before_install:
|
||||
- export CXX=g++-4.9
|
||||
- export CC=gcc-4.9
|
||||
- export FC=gfortran-4.9
|
||||
- export CXXFLAGS="-std=c++11"
|
||||
|
||||
install:
|
||||
- if ! which spack >/dev/null; then
|
||||
mkdir -p $SPACK_ROOT &&
|
||||
git clone --depth 50 https://github.com/llnl/spack.git $SPACK_ROOT &&
|
||||
echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml;
|
||||
fi
|
||||
- travis_wait spack install cmake@3.7.2~openssl~ncurses
|
||||
- travis_wait spack install boost@1.62.0~graph~iostream~locale~log~wave
|
||||
- spack clean -a
|
||||
- source /etc/profile &&
|
||||
source $SPACK_ROOT/share/spack/setup-env.sh
|
||||
- spack load cmake
|
||||
- spack load boost
|
||||
|
||||
script:
|
||||
- mkdir -p $HOME/build
|
||||
- cd $HOME/build
|
||||
- cmake $TRAVIS_BUILD_DIR
|
||||
- make -j 2
|
||||
- make test
|
||||
|
||||
------------------
|
||||
Upstream Bug Fixes
|
||||
------------------
|
||||
|
Loading…
Reference in New Issue
Block a user