geometry/.circleci/config.yml

646 lines
19 KiB
YAML

##############################################################################
# CircleCI 2.0 for Boost.Geometry
#
# Copyright (c) 2018 Mateusz Loskot <mateusz@loskot.net>
# Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland
#
# Use, modification and distribution is 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)
##############################################################################
version: 2
# Environment variables
environment: &environment
environment:
BOOST_DIR: shared-boost
COVERAGE_DIR: shared-coverage
# Docker image
docker: &docker
docker:
# gcc-6.0, ruby-2.3, sudo, curl
- image: circleci/ruby:2.3
# Build configuration
config: &config
<<: *docker
<<: *environment
# Workspace
attach_workspace: &attach_workspace
attach_workspace:
at: ~/project
persist_boost_coverage: &persist_boost_coverage
persist_to_workspace:
root: ~/project
paths:
- shared-boost
- shared-coverage
#persist_coverage: &persist_coverage
# persist_to_workspace:
# root: ~/project
# paths:
# - shared-coverage
jobs:
bootstrap:
<<: *config
steps:
- checkout
- run:
name: Checkout Boost
command: |
git clone -b `[[ "$CIRCLE_BRANCH" = "master" ]] && echo master || echo develop` --depth 1 https://github.com/boostorg/boost.git $BOOST_DIR
rm -rf $BOOST_DIR/libs/geometry/*
mv -t $BOOST_DIR/libs/geometry/ `ls -A | grep -v $BOOST_DIR`
cd $BOOST_DIR
git submodule update --init tools/build
git submodule update --init libs/config
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py geometry
./bootstrap.sh
./b2 headers
- run: mkdir $COVERAGE_DIR
- *persist_boost_coverage
algorithms:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms test/algorithms//boost-geometry-algorithms
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms
algorithms_area:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_area test/algorithms/area
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_area
algorithms_buffer:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_buffer test/algorithms/buffer
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_buffer
algorithms_covered_by:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_covered_by test/algorithms/covered_by
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_covered_by
algorithms_crosses:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_crosses test/algorithms/crosses
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_crosses
algorithms_detail:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_detail test/algorithms/detail
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_detail
algorithms_disjoint:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_disjoint test/algorithms/disjoint
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_disjoint
algorithms_distance:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_distance test/algorithms/distance
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_distance
algorithms_envelope:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_envelope test/algorithms/envelope_expand
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_envelope
algorithms_equals:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_equals test/algorithms/equals
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_equals
algorithms_intersects:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_intersects test/algorithms/intersects
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_intersects
algorithms_length:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_length test/algorithms/length
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_length
algorithms_overlaps:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_overlaps test/algorithms/overlaps
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_overlaps
algorithms_overlay:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_overlay test/algorithms/overlay
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_overlay
algorithms_perimeter:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_perimeter test/algorithms/perimeter
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_perimeter
algorithms_relate:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_relate test/algorithms/relate
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_relate
algorithms_set:
<<: *config
steps:
- *attach_workspace
# 1 test at a time to decrease memory consumption causing gcc internal error
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_set test/algorithms/set_operations 1
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_set
algorithms_similarity:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_similarity test/algorithms/similarity
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_similarity
algorithms_touches:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_touches test/algorithms/touches
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_touches
algorithms_within:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh algorithms_within test/algorithms/within
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/algorithms_within
arithmetic:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh arithmetic test/arithmetic
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/arithmetic
concepts:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh concepts test/concepts
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/concepts
core:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh core test/core
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/core
cs_undefined:
<<: *config
steps:
- *attach_workspace
# 1 test at a time to decrease memory consumption causing gcc internal error
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh cs_undefined test/cs_undefined 1
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/cs_undefined
formulas:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh formulas test/formulas
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/formulas
geometries:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh geometries test/geometries
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/geometries
io:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh io test/io
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/io
iterators:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh iterators test/iterators
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/iterators
policies:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh policies test/policies
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/policies
srs:
<<: *config
steps:
- *attach_workspace
# 1 test at a time to decrease memory consumption causing gcc internal error
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh srs test/srs 1
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/srs
strategies:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh strategies test/strategies
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/strategies
util:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh util test/util
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/util
views:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh views test/views
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/views
index_algorithms:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh index_algorithms index/test/algorithms
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/index_algorithms
index_rtree:
<<: *config
steps:
- *attach_workspace
# 1 test at a time to decrease memory consumption causing gcc internal error
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh index_rtree index/test/rtree//boost-geometry-index-rtree 1
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/index_rtree
index_rtree_b2d:
<<: *config
steps:
- *attach_workspace
# 1 test at a time to decrease memory consumption causing gcc internal error
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh index_rtree_b2d index/test/rtree/generated/b2d 1
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/index_rtree_b2d
index_rtree_exceptions:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh index_rtree_exceptions index/test/rtree/exceptions
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/index_rtree_exceptions
index_varray:
<<: *config
steps:
- *attach_workspace
- run: ./$BOOST_DIR/libs/geometry/.circleci/run_test.sh index_varray index/test//boost-geometry-index-varray
- persist_to_workspace:
root: ~/project
paths:
- shared-coverage/index_varray
coverage:
<<: *config
steps:
- *attach_workspace
- run: ls -lah $COVERAGE_DIR
- run: sudo apt-get install lcov
- run: lcov --directory $COVERAGE_DIR --base-directory $BOOST_DIR --capture --output-file $COVERAGE_DIR/coverage.info
- run: lcov --extract $COVERAGE_DIR/coverage.info "*/boost/geometry/*" "*/libs/geometry/include/*" --output-file $COVERAGE_DIR/coverage.info
- run: sed -i 's/SF:.*boost\/geometry/SF:boost\/geometry/g' $COVERAGE_DIR/coverage.info
#Coveralls
- run: gem install coveralls-lcov
- run: sudo apt-get install jq
- run: cd $BOOST_DIR/libs/geometry/include && coveralls-lcov --repo-token=$COVERALLS_REPO_TOKEN -v -n ../../../../$COVERAGE_DIR/coverage.info > ../../../../$COVERAGE_DIR/coverage.json
- run: jq -c ".service_name = \"circle-ci\" | .service_number = \"$CIRCLE_BUILD_NUM\" | .git .branch =\"$CIRCLE_BRANCH\"" $COVERAGE_DIR/coverage.json > $COVERAGE_DIR/processed.json
- run: curl --retry 3 -F "json_file=@$COVERAGE_DIR/processed.json" 'https://coveralls.io/api/v1/jobs'
#Codecov
- run: curl -s https://codecov.io/bash > .codecov
- run: chmod +x .codecov
- run: cd $BOOST_DIR/libs/geometry/include && ../../../../.codecov -t $CODECOV_TOKEN -f ../../../../$COVERAGE_DIR/coverage.info -x gcov
minimal:
<<: *config
steps:
- *attach_workspace
- run: cd $BOOST_DIR && ./b2 libs/geometry/test//boost-geometry-minimal
requires_0: &requires_0
requires:
- bootstrap
requires_1: &requires_1
requires:
- concepts
- core
- geometries
- util
requires_2: &requires_2
requires:
- algorithms_detail
- arithmetic
- formulas
- io
- iterators
- policies
- strategies
- views
requires_3: &requires_3
requires:
- algorithms
- algorithms_area
- algorithms_buffer
- algorithms_covered_by
- algorithms_crosses
- algorithms_disjoint
- algorithms_distance
- algorithms_envelope
- algorithms_equals
- algorithms_intersects
- algorithms_length
- algorithms_overlaps
- algorithms_overlay
- algorithms_perimeter
- algorithms_relate
- algorithms_set
- algorithms_similarity
- algorithms_touches
- algorithms_within
- srs
- index_algorithms
requires_4: &requires_4
requires:
- index_rtree
- index_rtree_b2d
- index_rtree_exceptions
- index_varray
- cs_undefined
only_master_develop: &only_master_develop
filters:
branches:
only:
- develop
- master
ignore_master_develop: &ignore_master_develop
filters:
branches:
ignore:
- develop
- master
workflows:
version: 2
workflow:
jobs:
# all branches: level 0, bootstrap
- bootstrap
# master, develop: level 1
- concepts:
<<: *requires_0
<<: *only_master_develop
- core:
<<: *requires_0
<<: *only_master_develop
- geometries:
<<: *requires_0
<<: *only_master_develop
- util:
<<: *requires_0
<<: *only_master_develop
# master, develop: level 2
- algorithms_detail:
<<: *requires_1
<<: *only_master_develop
- arithmetic:
<<: *requires_1
<<: *only_master_develop
- formulas:
<<: *requires_1
<<: *only_master_develop
- io:
<<: *requires_1
<<: *only_master_develop
- iterators:
<<: *requires_1
<<: *only_master_develop
- policies:
<<: *requires_1
<<: *only_master_develop
- strategies:
<<: *requires_1
<<: *only_master_develop
- views:
<<: *requires_1
<<: *only_master_develop
# master, develop: level 3
- algorithms:
<<: *requires_2
<<: *only_master_develop
- algorithms_area:
<<: *requires_2
<<: *only_master_develop
- algorithms_buffer:
<<: *requires_2
<<: *only_master_develop
- algorithms_covered_by:
<<: *requires_2
<<: *only_master_develop
- algorithms_crosses:
<<: *requires_2
<<: *only_master_develop
- algorithms_disjoint:
<<: *requires_2
<<: *only_master_develop
- algorithms_distance:
<<: *requires_2
<<: *only_master_develop
- algorithms_envelope:
<<: *requires_2
<<: *only_master_develop
- algorithms_equals:
<<: *requires_2
<<: *only_master_develop
- algorithms_intersects:
<<: *requires_2
<<: *only_master_develop
- algorithms_length:
<<: *requires_2
<<: *only_master_develop
- algorithms_overlaps:
<<: *requires_2
<<: *only_master_develop
- algorithms_overlay:
<<: *requires_2
<<: *only_master_develop
- algorithms_perimeter:
<<: *requires_2
<<: *only_master_develop
- algorithms_relate:
<<: *requires_2
<<: *only_master_develop
- algorithms_set:
<<: *requires_2
<<: *only_master_develop
- algorithms_similarity:
<<: *requires_2
<<: *only_master_develop
- algorithms_touches:
<<: *requires_2
<<: *only_master_develop
- algorithms_within:
<<: *requires_2
<<: *only_master_develop
- srs:
<<: *requires_2
<<: *only_master_develop
- index_algorithms:
<<: *requires_2
<<: *only_master_develop
# master, develop: level 4
- index_rtree:
<<: *requires_3
<<: *only_master_develop
- index_rtree_b2d:
<<: *requires_3
<<: *only_master_develop
- index_rtree_exceptions:
<<: *requires_3
<<: *only_master_develop
- index_varray:
<<: *requires_3
<<: *only_master_develop
- cs_undefined:
<<: *requires_3
<<: *only_master_develop
# master, develop: level 5, coverage
- coverage:
<<: *requires_4
<<: *only_master_develop
# other branches: level 1, minimal
- minimal:
<<: *requires_0
<<: *ignore_master_develop