kicad/.gitlab/Fedora-Linux-CI.yml

144 lines
3.3 KiB
YAML
Raw Normal View History

##########################################################################
# Build KiCad on Fedora and save the results
##########################################################################
build_linux:
stage: build
extends: .only_code
interruptible: false
cache:
key: "cache-linux"
paths:
- ccache/
before_script:
# CCache Config
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
script:
- mkdir -p build/linux
- cd build/linux
- cmake
-DCMAKE_C_COMPILER_LAUNCHER=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-DCMAKE_BUILD_TYPE=Debug
-DKICAD_STDLIB_LIGHT_DEBUG=ON
-DKICAD_SCRIPTING=ON
-DKICAD_SCRIPTING_MODULES=ON
-DKICAD_SCRIPTING_PYTHON3=ON
-DKICAD_SCRIPTING_WXPYTHON=ON
-DKICAD_SCRIPTING_WXPYTHON_PHOENIX=ON
-DKICAD_SCRIPTING_ACTION_MENU=ON
-DBUILD_GITHUB_PLUGIN=ON
-DKICAD_USE_OCE=OFF
-DKICAD_USE_OCC=ON
-DKICAD_SPICE=ON
../../
- make 2>&1 | tee compilation_log.txt
- cd ../../
artifacts:
# Only save the artifacts that are needed for running the tests in the next stage
# and the compilation log. The entire build directory is too large to save as an
# artifact.
expire_in: 2 hrs
when: always
paths:
- build/linux/3d-viewer/
- build/linux/pcbnew/pcbnew.py
- build/linux/pcbnew/_pcbnew.so
- build/linux/qa/
- build/linux/compilation_log.txt
# Upload the compilation log in an easily downloadable form
report_build_warn:
stage: report
extends: .only_code
when: always
needs:
- job: build_linux
artifacts: true
script:
- echo "Uploading compilation log"
- cp build/linux/compilation_log.txt compilation_log.txt
artifacts:
expire_in: 1 year
expose_as: 'Build log'
name: "build_log.txt"
paths:
- compilation_log.txt
# Report on the metrics of the code
report_metrics:
stage: report
extends: .only_code
when: always
needs:
- job: build_linux
artifacts: true
script:
- cat build/linux/compilation_log.txt | grep "warning:" | awk '{total+=1}END{print "number_of_warnings "total}' > metrics.txt
- cat metrics.txt
artifacts:
reports:
metrics: metrics.txt
##########################################################################
# Run the code unit tests. Each QA executable is split into a separate job so that the display
# gives the test results broken down by the test executable.
##########################################################################
qa_python:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_python'
qa_common:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_common'
qa_gerbview:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_gerbview'
qa_pcbnew:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_pcbnew'
qa_eeschema:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_eeschema'
qa_kimath:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_kimath'
qa_sexpr:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_sexpr'
qa_kicad2step:
extends:
- .unit_test
- .only_code
variables:
TEST: 'qa_kicad2step'