diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 10d41ac7bc2730597c0bfea7d67561fc7db29804..2907e6af226206559f110ad4e386217cdb37e567 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -550,3 +550,90 @@ build-npm-cspell: extends: .build-with-kaniko variables: CONTAINER_PATH: npm-cspell + +.oe-selftest-rules: + rules: + - if: '$CI_PIPELINE_SOURCE == "schedule" && $OE_SELFTEST == gcc' + +oe-selftest-gcc-qemu-linux-user: + extends: [.oe-selftest, .oe-selftest-rules] + variables: + CI_ONIRO_OE_SEFLTESTS: + gcc.GccCrossSelfTest + gcc.GccLibAtomicSelfTest + gcc.GccLibGompSelfTest + gcc.GccLibItmSelfTest + gcc.GccLibSspSelfTest + gcc.GccLibStdCxxSelfTest + gcc.GxxCrossSelfTest + +.oe-selftest-gcc-system-emulated: + timeout: 8h + extends: [.oe-selftest, .oe-selftest-rules] + variables: + MACHINE: qemux86-64 + CI_ONIRO_OE_SEFLTESTS: + gcc.GccCrossSelfTestSystemEmulated + gcc.GccLibAtomicSelfTestSystemEmulated + gcc.GccLibGompSelfTestSystemEmulated + gcc.GccLibItmSelfTestSystemEmulated + gcc.GccLibStdCxxSelfTestSystemEmulated + gcc.GccLibSspSelfTestSystemEmulated + gcc.GxxCrossSelfTestSystemEmulated + +oe-selftest-gcc-system-emulated-qemux86-64: + extends: .oe-selftest-gcc-system-emulated + variables: + MACHINE: qemux86-64 + +oe-selftest-gcc-system-emulated-qemuarm64: + extends: .oe-selftest-gcc-system-emulated + variables: + MACHINE: qemuarm64 + +oe-selftest-report: + timeout: 6h + extends: .oe-selftest-rules + image: + name: chaseqi/bitbake-builder:v1.3 + stage: report + dependencies: + - oe-selftest-gcc-qemu-linux-user + - oe-selftest-gcc-system-emulated-qemux86-64 + - oe-selftest-gcc-system-emulated-qemuarm64 + needs: + - oe-selftest-gcc-qemu-linux-user + - oe-selftest-gcc-system-emulated-qemux86-64 + - oe-selftest-gcc-system-emulated-qemuarm64 + script: + - | + set -x + curl https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-test-definitions/-/raw/gcc-test/automated/utils/gcc-result-parser.py \ + > gcc-result-parser.py + for job_path in $(find artifacts/ -type d -name oe-selftest-gcc*); do + ( + job=$(basename $job_path) + test_env="$(echo $job | cut -d'-' -f4-)" + cd $job_path + xz -d *.xz + # Parse sum file. + for sum_file in $(ls *.sum); do + python3 $CI_PROJECT_DIR/gcc-result-parser.py $sum_file + done + # Upload result to squad. + for result_file in $(ls result_*.json); do + component="$(basename $result_file .json | cut -d'_' -f2-)" + job_id="$job-$component" + time curl \ + --header "Auth-Token: $CI_SQUAD_TOKEN" \ + https://squadp.svc.ostc-eu.dev/api/submit/oniro-core/gcc-test/$CI_PIPELINE_ID/$test_env \ + --form tests=@$result_file \ + --form metadata='{"job_id": "'$job_id'"}' + done + ) + done + set +x + artifacts: + paths: + - artifacts/oe-selftest-gcc*/*.json + - artifacts/oe-selftest-gcc*/*.txt diff --git a/.oniro-ci/build-generic.yaml b/.oniro-ci/build-generic.yaml index 67abc4ad1cf53831e130d9b753b15cbc8b932e16..d972b1e9ffa4b38e67640fb1c00f555fd70dc30e 100644 --- a/.oniro-ci/build-generic.yaml +++ b/.oniro-ci/build-generic.yaml @@ -451,3 +451,37 @@ # Run this job in case the pipeline changes. - .oniro-ci/*.yml - .gitlab-ci.yml + +# This job is documented in docs/ci/hidden-jobs/oe-selftest.rst +.oe-selftest: + image: + name: chaseqi/bitbake-builder:v1.3 + tags: [qemu-friendly, large-disk, $CI_ONIRO_RUNNER_TAG, $CI_ONIRO_INSTANCE_SIZE] + stage: test + dependencies: [] + extends: .bitbake-workspace + variables: + MACHINE: qemux86-64 + CI_ONIRO_BUILD_FLAVOUR: linux + CI_ONIRO_BB_LOCAL_CONF_SANITY_TESTED_DISTROS: "" + CI_ONIRO_OE_SEFLTESTS: "" + CI_ONIRO_OE_SEFLTEST_SKIPS: "" + script: + - test -n "$CI_ONIRO_OE_SEFLTESTS" || ( + echo "nothing to test - CI_ONIRO_OE_SEFLTESTS is empty" + && exit 1 ) + - !reference [.bitbake-workspace, script] + # The USER variable is required by oe-selftest but missing in env. + - export USER=builder + - echo "MACHINE = \"$MACHINE\"" >> conf/local.conf + - echo "Running specific tests $CI_ONIRO_OE_SEFLTESTS ..." + - time oe-selftest -vvv -r $CI_ONIRO_OE_SEFLTESTS -K + - artifacts_dir="$CI_PROJECT_DIR/artifacts/$CI_JOB_NAME" + - rm -rf "$artifacts_dir" & mkdir -p "$artifacts_dir" + - find ../build-st \( -name "*.sum" -o -name "*.log" \) \( -path "*/gcc-runtime/*testsuite*" \) + -exec cp --verbose {} "$artifacts_dir" \; + - for file in $(find "$artifacts_dir" -type f); do xz $file; done + - rm -rf ../build-st + artifacts: + paths: + - artifacts/$CI_JOB_NAME diff --git a/docs/ci/hidden-jobs/index.rst b/docs/ci/hidden-jobs/index.rst index 9248b2d53486b0eb2cb25008610321803e40d064..e809813891f479f6305736cb5e5502ac53c1f450 100644 --- a/docs/ci/hidden-jobs/index.rst +++ b/docs/ci/hidden-jobs/index.rst @@ -30,3 +30,4 @@ implementation details. lava-report aggregate-docs publish-rauc-bundle-to-hawkbit + oe-selftest diff --git a/docs/ci/hidden-jobs/oe-selftest.rst b/docs/ci/hidden-jobs/oe-selftest.rst new file mode 100644 index 0000000000000000000000000000000000000000..d457335c7433f97ab1a75c2705287b044a093093 --- /dev/null +++ b/docs/ci/hidden-jobs/oe-selftest.rst @@ -0,0 +1,30 @@ +.. SPDX-FileCopyrightText: Huawei Inc. +.. +.. SPDX-License-Identifier: CC-BY-4.0 + +============ +.oe-selftest +============ + +The ``.oe-selftest`` job extends the :doc:`bitbake-workspace` job to configure +OpenEmbedded Self test environment. The job does not run any tests by itself, +actual tests should be run in the downstream test jobs. + +Job Variables +============= + +Oe-selftest is based on Python unitest. Tests are orgnazied by module, class +and method. The ``.oe-selftest`` job defines two variables as a way to +customize what tests to run. + +CI_ONIRO_OE_SEFLTESTS +--------------------- + +The specific tests to run. The default value is empty. The order the tests are +running is alphabetical. + + +CI_ONIRO_OE_SEFLTEST_SKIPS +-------------------------- + +The specific tests to skip. The default value is empty.