########################################################################## # Build KiCad on Fedora and save the results ########################################################################## .fedora_build_linux_base: stage: build # Don't tag until we have separate CI for MRs # tags: # - kicad-fedora image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:38 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 -G Ninja -DCMAKE_BUILD_TYPE=QABUILD -DKICAD_STDLIB_LIGHT_DEBUG=ON -DKICAD_BUILD_I18N=ON -DKICAD_TEST_XML_OUTPUT=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/common/libkicommon.so* - build/linux/common/gal/libkigal.so* - build/linux/eeschema/_eeschema.kiface - build/linux/kicad/kicad-cli - build/linux/pcbnew/pcbnew.py - build/linux/pcbnew/_pcbnew.kiface - build/linux/pcbnew/_pcbnew.so - build/linux/qa/ - build/linux/compilation_log.txt exclude: - build/linux/**/*.o - build/linux/**/*.a # This split is to ensure we can always use our runner for our jobs fedora_build_linux_kicad: extends: .fedora_build_linux_base tags: - kicad-fedora only: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" fedora_build_linux_public: extends: .fedora_build_linux_base except: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" # Upload the compilation log in an easily downloadable form .fedora_report_build_warn: stage: report extends: .only_code when: always 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 fedora_report_build_warn_kicad: extends: .fedora_report_build_warn tags: - kicad-fedora needs: - job: fedora_build_linux_kicad artifacts: true only: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" fedora_report_build_warn_public: extends: .fedora_report_build_warn needs: - job: fedora_build_linux_public artifacts: true except: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" # Report on the metrics of the code .fedora_report_metrics: stage: report extends: .only_code when: always 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 fedora_report_metrics_kicad: extends: .fedora_report_metrics tags: - kicad-fedora needs: - job: fedora_build_linux_kicad artifacts: true only: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" fedora_report_metrics_public: extends: .fedora_report_metrics needs: - job: fedora_build_linux_public artifacts: true except: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" ########################################################################## # Run the code unit tests. ########################################################################## .fedora_qa: image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:38 extends: - .unit_test - .only_code before_script: - if [ "$TEST" == "cli" ] || [ "$TEST" == "python" ]; then python3 -m pip install -r qa/tests/requirements.txt; fi - if [ "$TEST" == "cli" ]; then sudo dnf -y install gerbv; fi parallel: matrix: # The name of the test without the qa_ prefix - TEST: [python, cli, common, gerbview, pcbnew, pns_regressions, eeschema, kimath, sexpr, kicad2step, spice] fedora_qa_kicad: extends: .fedora_qa tags: - kicad-fedora needs: - job: fedora_build_linux_kicad artifacts: true only: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad" fedora_qa_public: extends: .fedora_qa needs: - job: fedora_build_linux_public artifacts: true except: variables: - $CI_PROJECT_ROOT_NAMESPACE == "kicad"