########################################################################## # Build KiCad on Ubuntu 20.04 and save the results ########################################################################## ubuntu20.04_build: stage: build tags: - kicad-ubuntu20.04 image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/ubuntu:20.04 only: - branches@kicad/code/kicad - tags@kicad/code/kicad except: - schedules interruptible: false cache: key: "cache-ubuntu20.04-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 -G Ninja -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 -DKICAD_USE_OCC=ON -DKICAD_SPICE=ON -DKICAD_BUILD_I18N=ON -DKICAD_BUILD_PNS_DEBUG_TOOL=ON ../../ - ninja 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 ubuntu20.04_report_build_warn: stage: report when: always only: - branches@kicad/code/kicad - tags@kicad/code/kicad except: - schedules needs: - job: ubuntu20.04_build 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 ubuntu20.04_report_metrics: stage: report when: always only: - branches@kicad/code/kicad - tags@kicad/code/kicad except: - schedules needs: - job: ubuntu20.04_build artifacts: true script: - cat build/linux/compilation_log.txt | { grep "warning:" || test $? = 1; } | awk 'END{print "number_of_ubuntu_20.04_warnings "NR}' > metrics.txt - cat metrics.txt artifacts: reports: metrics: metrics.txt ########################################################################## # Run the code unit tests. ########################################################################## ubuntu20.04_qa: extends: - .unit_test needs: - job: ubuntu20.04_build artifacts: true tags: - kicad-ubuntu20.04 image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/ubuntu:20.04 only: - branches@kicad/code/kicad - tags@kicad/code/kicad except: - schedules parallel: matrix: # The name of the test without the qa_ prefix - TEST: [python, common, gerbview, pcbnew, eeschema, kimath, sexpr, kicad2step]