90 lines
3.2 KiB
YAML
90 lines
3.2 KiB
YAML
stages: # List of stages for jobs, and their order of execution
|
|
- build
|
|
- test
|
|
- coverage
|
|
|
|
default:
|
|
tags:
|
|
- CREMI
|
|
|
|
build-job: # This job runs in the build stage, which runs first.
|
|
allow_failure: false
|
|
stage: build
|
|
script:
|
|
- mkdir -p build
|
|
- cmake --no-warn-unused-cli -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/c99-gcc -H${CI_PROJECT_DIR} -B${CI_PROJECT_DIR}/build -G "Unix Makefiles"
|
|
- cmake --build ${CI_PROJECT_DIR}/build --config Debug --target all -j 18 | tee ./build.log
|
|
artifacts:
|
|
expire_in: 10 minutes
|
|
paths:
|
|
- build/
|
|
- build.log
|
|
|
|
test-v1-job: # This job runs in the test stage.
|
|
needs:
|
|
- job: build-job
|
|
artifacts: false
|
|
stage: test # It only starts when the job in the build stage completes successfully.
|
|
script:
|
|
- mkdir -p build
|
|
- echo "building project"
|
|
- cmake --no-warn-unused-cli -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/c99-gcc -H${CI_PROJECT_DIR} -B${CI_PROJECT_DIR}/build -G "Unix Makefiles"
|
|
- cmake --build ${CI_PROJECT_DIR}/build --config Debug --target all -j 18 | tee ./build.log
|
|
- cd build
|
|
- echo "Running tests V1..."
|
|
- ctest -R v1 | tee ../test-v1-job.log
|
|
artifacts:
|
|
expire_in: 10 minutes
|
|
paths:
|
|
- build/
|
|
- test-v1-job.log
|
|
|
|
test-v2-job: # This job runs in the test stage.
|
|
needs:
|
|
- job: test-v1-job
|
|
artifacts: true
|
|
stage: test # It only starts when the job in the build stage completes successfully.
|
|
script:
|
|
- mkdir -p build
|
|
- echo "building project"
|
|
- cmake --no-warn-unused-cli -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/c99-gcc -H${CI_PROJECT_DIR} -B${CI_PROJECT_DIR}/build -G "Unix Makefiles"
|
|
- cmake --build ${CI_PROJECT_DIR}/build --config Debug --target all -j 18 | tee ./build.log
|
|
- cd build
|
|
- echo "Running tests V2..."
|
|
- ctest -R v2 | tee ../test-v2-job.log
|
|
artifacts:
|
|
expire_in: 10 minutes
|
|
paths:
|
|
- build/
|
|
- test-v2-job.log
|
|
|
|
### coverage
|
|
coverage-job:
|
|
stage: coverage
|
|
needs:
|
|
- job: test-v2-job
|
|
artifacts: true
|
|
script:
|
|
- mkdir -p build
|
|
- echo "building project"
|
|
- cmake --no-warn-unused-cli -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/c99-gcc -H${CI_PROJECT_DIR} -B${CI_PROJECT_DIR}/build -G "Unix Makefiles"
|
|
- cmake --build ${CI_PROJECT_DIR}/build --config Debug --target all -j 18 | tee ./build.log
|
|
- cd build
|
|
- ctest -R v1
|
|
- ctest -R v2
|
|
- make ExperimentalCoverage
|
|
- gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o coverage.xml --root ${CI_PROJECT_DIR}
|
|
coverage: /^\s*lines:\s*\d+.\d+\%/
|
|
artifacts:
|
|
name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
|
|
expire_in: 2 days
|
|
reports:
|
|
cobertura: build/coverage.xml
|
|
|
|
### cleanup project for security issues
|
|
cleanup:
|
|
stage: .post
|
|
script:
|
|
- MYDIR=$(pwd) ; rm -rf $MYDIR ; mkdir $MYDIR
|
|
- ls $MYDIR
|
|
when: always |