########################################################################## # Build KiCad on Fedora and save the results ########################################################################## fedora_build_linux: stage: build extends: .only_code interruptible: false cache: key: "cache-fedora-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 -DKICAD_USE_OCE=OFF -DKICAD_USE_OCC=ON -DKICAD_SPICE=ON -DKICAD_BUILD_I18N=ON -DKICAD_BUILD_PNS_DEBUG_TOOL=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 fedora_report_build_warn: stage: report extends: .only_code when: always needs: - job: fedora_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 fedora_report_metrics: stage: report extends: .only_code when: always needs: - job: fedora_build_linux artifacts: true script: - cat build/linux/compilation_log.txt | { grep "warning:" || test $? = 1; } | awk 'END{print "number_of_fedora_warnings "NR}' > metrics.txt - cat metrics.txt artifacts: reports: metrics: metrics.txt ########################################################################## # Run the code unit tests. ########################################################################## fedora_qa: extends: - .unit_test - .only_code parallel: matrix: # The name of the test without the qa_ prefix - TEST: [python, common, gerbview, pcbnew, eeschema, kimath, sexpr, kicad2step] needs: - job: fedora_build_linux artifacts: true