-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
94 lines (88 loc) · 3.58 KB
/
Copy path.gitlab-ci.yml
File metadata and controls
94 lines (88 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
variables:
GIT_CLONE_BASE: https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_FQDN}
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || ($CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_PROTECTED == "true") || $CI_PIPELINE_SOURCE == "schedule"
when: always
# Run on pipelines created by selecting "Run pipeline" in the GitLab UI,
# from the project’s "Build > Pipelines" section.
- if: $CI_PIPELINE_SOURCE == "web"
- when: never
include:
- component: $CI_SERVER_FQDN/eng/gitlab-templates/check-issue@~latest
inputs:
stage: check
- component: $CI_SERVER_FQDN/eng/gitlab-templates/pre-commit@~latest
inputs:
stage: check
stages:
- check
- build
pre-commit:
interruptible: true
before_script:
- generic_anod_ci $GENERIC_ANOD_CI_OPTIONS
- cat /tmp/ci_env.sh
- . /tmp/ci_env.sh
- cd $ANOD_DEFAULT_SANDBOX_DIR
- SPECPATH=$(anod tune 2>&1 | awk '/Path:/ {p=$NF} /Specs:/ {if ($NF == "anod)") print p "/vcs/anod-auto"; else print $NF}')
- echo $SPECPATH
- GNATFORMAT_DATE=`sed -n 's/.*gnatformat_version = "\(.*\)".*/\1/p' $SPECPATH/sparkdev.anod`
- echo $GNATFORMAT_DATE
- anod install gnat --latest
- anod install gnatformat -Qdate=$GNATFORMAT_DATE
- eval $(anod printenv gnat -Qdate)
- eval $(anod printenv gnatformat -Qdate=$GNATFORMAT_DATE)
- gnatformat --version
- cd $CI_PROJECT_DIR
coverage:
stage: build
services:
- image:pe-base
- cpu:8
needs: []
interruptible: true
script:
# script to load helper functions for log sections
- source scripts/ci_predef.sh
- generic_anod_ci $GENERIC_ANOD_CI_OPTIONS
- cat /tmp/ci_env.sh
- . /tmp/ci_env.sh
- section_start "anod_setup" "Setup anod packages"
- cd $ANOD_DEFAULT_SANDBOX_DIR
- for i in gnat spark2014 gnatcov ; do anod install $i --latest ; done
- for i in gnat spark2014 gnatcov ; do eval $(anod printenv $i) ; done
- section_end "anod_setup"
- section_start "project_setup" "Setup testsuite and locations"
- |
if [ -d /tmp/checkouts/spark2014 ]; then
export SPARK2014_DIR=/tmp/checkouts/spark2014
else
export SPARK2014_DIR=/tmp/spark2014
rm -rf $SPARK2014_DIR
git clone $GIT_CLONE_BASE/eng/spark/spark2014 --depth 1 $SPARK2014_DIR
fi
- cd $SPARK2014_DIR
- rm -rf include testsuite/gnatprove/sparklib
- ln -s $CI_PROJECT_DIR include
- ln -s $CI_PROJECT_DIR/tests testsuite/gnatprove/sparklib
- |
rm -rf $CI_PROJECT_DIR/.sparklib-install
mkdir -p $CI_PROJECT_DIR/.sparklib-install/lib/gnat
mkdir -p $CI_PROJECT_DIR/.sparklib-install/include
find $CI_PROJECT_DIR -maxdepth 1 -type f \( -name '*.gpr' -o -name '*.gpr.templ' \) \
-exec ln -s {} $CI_PROJECT_DIR/.sparklib-install/lib/gnat/ \;
ln -s $CI_PROJECT_DIR/proof $CI_PROJECT_DIR/.sparklib-install/lib/gnat/proof
ln -s $CI_PROJECT_DIR/src $CI_PROJECT_DIR/.sparklib-install/include/spark
- export SPARKLIB_PROJECT_PATH=$CI_PROJECT_DIR/.sparklib-install
- cd testsuite/gnatprove
- section_end "project_setup"
- python sparklib-coverage.py
- rm -rf $CI_PROJECT_DIR/sparklib-report
- cp -a sparklib-report $CI_PROJECT_DIR/
- section_start "coverage_report" "Generate Coverage HTML report"
# Coverage HTML report
- export HTMLTARGETDIR=$CI_COMMIT_BRANCH
- if [[ $CI_PIPELINE_SOURCE == "merge_request_event" ]]; then export HTMLTARGETDIR=MRs/$CI_MERGE_REQUEST_IID ; fi
- publish-pages $CI_PROJECT_DIR/sparklib-report --target-subdir $HTMLTARGETDIR --expires 30
- section_end "coverage_report"