Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • eclipse/oniro-core/oniro
  • landgraf/oniro
  • zyga/oniro
  • mrybczyn/oniro
  • agherzan/oniro
  • pcoval/oniro
  • tony3oo3/oniro
  • stefanschmidt/oniro
  • waykovalenko/oniro
  • bero/oniro
  • esben/oniro
  • robertd/oniro
  • pidge/oniro
  • shettygururaj/oniro
  • thierrye/oniro
  • sradakovi/oniro
  • dricci783/oniro
  • ektor5/oniro
  • fldn/oniro
  • lucafavaretto/oniro
  • lucazizolfi/oniro
  • artemkondratiuk/oniro
  • lucaseri/oniro
  • gwozdzcfs/oniro
  • kristis/oniro
  • brgl/oniro
  • heurtemattes/oniro
  • idlethread/oniro
  • lquach/oniro
  • ghassaneben/oniro
  • heurtemattes/oniro-bitbake
  • kzarka/oniro
  • heurtemattes/oniro-migration
  • pastanki/oniro
  • malowe/oniro
  • chaseqi/oniro
  • mrfrank/oniro
37 results
Show changes
Commits on Source (13)
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
stages: stages:
- compliance - compliance
- build - build
- build-gcc
- build-clang
- update - update
- test - test
- report - report
...@@ -108,7 +110,7 @@ bundle-qemu-x86: ...@@ -108,7 +110,7 @@ bundle-qemu-x86:
extends: .build-rauc-bundle extends: .build-rauc-bundle
stage: update stage: update
# Depend on the build job to prevent repeating build failures. # Depend on the build job to prevent repeating build failures.
needs: [linux-qemu-x86] needs: [linux-qemu-x86-gcc]
variables: variables:
MACHINE: qemux86 MACHINE: qemux86
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
...@@ -119,7 +121,7 @@ bundle-qemu-x86_64: ...@@ -119,7 +121,7 @@ bundle-qemu-x86_64:
extends: .build-rauc-bundle extends: .build-rauc-bundle
stage: update stage: update
# Depend on the build job to prevent repeating build failures. # Depend on the build job to prevent repeating build failures.
needs: [linux-qemu-x86_64] needs: [linux-qemu-x86_64-gcc]
variables: variables:
MACHINE: qemux86-64 MACHINE: qemux86-64
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
...@@ -130,7 +132,7 @@ bundle-raspberrypi4-64: ...@@ -130,7 +132,7 @@ bundle-raspberrypi4-64:
extends: .build-rauc-bundle extends: .build-rauc-bundle
stage: update stage: update
# Depend on the build job to prevent repeating build failures. # Depend on the build job to prevent repeating build failures.
needs: [linux-raspberrypi4-64] needs: [linux-raspberrypi4-64-gcc]
variables: variables:
MACHINE: raspberrypi4-64 MACHINE: raspberrypi4-64
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
...@@ -141,7 +143,7 @@ bundle-seco-intel-b68: ...@@ -141,7 +143,7 @@ bundle-seco-intel-b68:
extends: .build-rauc-bundle extends: .build-rauc-bundle
stage: update stage: update
# Depend on the build job to prevent repeating build failures. # Depend on the build job to prevent repeating build failures.
needs: [linux-seco-intel-b68] needs: [linux-seco-intel-b68-gcc]
variables: variables:
MACHINE: seco-intel-b68 MACHINE: seco-intel-b68
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
...@@ -196,258 +198,235 @@ publish-seco-intel-b68: ...@@ -196,258 +198,235 @@ publish-seco-intel-b68:
# Run the build for scheduled pipelines. # Run the build for scheduled pipelines.
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
# Mimic the updated rules for lava-test from the bitbake-workspace. .lava-test-scheduled:
.lava-test: extends: .lava-test
rules: variables:
- if: '$CI_LAVA_TOKEN == null' CI_SQUAD_PROJECT_NAME: "oniro"
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule"'
# Mimic the updated rules for lava-report from the bitbake-workspace.
.lava-report:
rules: rules:
- if: '$CI_LAVA_TOKEN == null' - if: '$CI_SQUAD_TOKEN == null'
when: never when: never
- if: '$CI_PIPELINE_SOURCE == "schedule"' - if: '$CI_PIPELINE_SOURCE == "schedule"'
when: manual
## ##
## Submit jobs to LAVA ## Submit jobs to LAVA
## ##
lava-qemu-x86: lava-qemu-x86:
needs: [linux-qemu-x86] needs: [linux-qemu-x86-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test
variables: variables:
MACHINE: qemux86 MACHINE: qemux86
CI_BUILD_JOB_NAME: linux-qemu-x86 CI_BUILD_JOB_NAME: linux-qemu-x86-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-qemu-x86_64: lava-qemu-x86_64:
needs: [linux-qemu-x86_64] needs: [linux-qemu-x86_64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test
variables: variables:
MACHINE: qemux86-64 MACHINE: qemux86-64
CI_BUILD_JOB_NAME: linux-qemu-x86_64 CI_BUILD_JOB_NAME: linux-qemu-x86_64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-raspberrypi4-64: lava-raspberrypi4-64:
needs: [linux-raspberrypi4-64] needs: [linux-raspberrypi4-64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: raspberrypi4-64 MACHINE: raspberrypi4-64
CI_BUILD_JOB_NAME: linux-raspberrypi4-64 CI_BUILD_JOB_NAME: linux-raspberrypi4-64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-intel-b68: lava-seco-intel-b68:
needs: [linux-seco-intel-b68] needs: [linux-seco-intel-b68-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-intel-b68 MACHINE: seco-intel-b68
CI_BUILD_JOB_NAME: linux-seco-intel-b68 CI_BUILD_JOB_NAME: linux-seco-intel-b68-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-intel-b68.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-intel-b68.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-c61: lava-seco-c61:
needs: [linux-seco-imx8mm-c61-4gb] needs: [linux-seco-imx8mm-c61-4gb-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-imx8mm-c61-4gb MACHINE: seco-imx8mm-c61-4gb
CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-qemu-x86-ltp: lava-qemu-x86-ltp:
needs: [linux-qemu-x86] needs: [linux-qemu-x86-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: qemux86 MACHINE: qemux86
CI_BUILD_JOB_NAME: linux-qemu-x86 CI_BUILD_JOB_NAME: linux-qemu-x86-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86-ltp.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86-ltp.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-qemu-x86_64-ltp: lava-qemu-x86_64-ltp:
needs: [linux-qemu-x86_64] needs: [linux-qemu-x86_64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: qemux86-64 MACHINE: qemux86-64
CI_BUILD_JOB_NAME: linux-qemu-x86_64 CI_BUILD_JOB_NAME: linux-qemu-x86_64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64-ltp.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64-ltp.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-raspberrypi4-64-ltp: lava-raspberrypi4-64-ltp:
needs: [linux-raspberrypi4-64] needs: [linux-raspberrypi4-64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: raspberrypi4-64 MACHINE: raspberrypi4-64
CI_BUILD_JOB_NAME: linux-raspberrypi4-64 CI_BUILD_JOB_NAME: linux-raspberrypi4-64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64-ltp.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64-ltp.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-intel-b68-ltp: lava-seco-intel-b68-ltp:
needs: [linux-seco-intel-b68] needs: [linux-seco-intel-b68-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-intel-b68 MACHINE: seco-intel-b68
CI_BUILD_JOB_NAME: linux-seco-intel-b68 CI_BUILD_JOB_NAME: linux-seco-intel-b68-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-intel-b68-ltp.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-intel-b68-ltp.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-c61-ltp: lava-seco-c61-ltp:
needs: [linux-seco-imx8mm-c61-4gb] needs: [linux-seco-imx8mm-c61-4gb-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-imx8mm-c61-4gb MACHINE: seco-imx8mm-c61-4gb
CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61-ltp.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61-ltp.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-qemu-x86_64-kselftest: lava-qemu-x86_64-kselftest:
needs: [linux-qemu-x86_64] needs: [linux-qemu-x86_64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: qemux86-64 MACHINE: qemux86-64
CI_BUILD_JOB_NAME: linux-qemu-x86_64 CI_BUILD_JOB_NAME: linux-qemu-x86_64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64-kselftest.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64-kselftest.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-raspberrypi4-64-kselftest: lava-raspberrypi4-64-kselftest:
needs: [linux-raspberrypi4-64] needs: [linux-raspberrypi4-64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: raspberrypi4-64 MACHINE: raspberrypi4-64
CI_BUILD_JOB_NAME: linux-raspberrypi4-64 CI_BUILD_JOB_NAME: linux-raspberrypi4-64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64-kselftest.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64-kselftest.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-c61-kselftest: lava-seco-c61-kselftest:
needs: [linux-seco-imx8mm-c61-4gb] needs: [linux-seco-imx8mm-c61-4gb-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-imx8mm-c61-4gb MACHINE: seco-imx8mm-c61-4gb
CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61-kselftest.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61-kselftest.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-zephyr-96b-nitrogen-twister: lava-zephyr-96b-nitrogen-twister:
needs: [zephyr-96b-nitrogen-twister] needs: [zephyr-96b-nitrogen-twister-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: 96b-nitrogen MACHINE: 96b-nitrogen
CI_BUILD_JOB_NAME: zephyr-96b-nitrogen-twister CI_BUILD_JOB_NAME: zephyr-96b-nitrogen-twister-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/nitrogen-twister.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/nitrogen-twister.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-qemu-x86-perf: lava-qemu-x86-perf:
needs: [linux-qemu-x86] needs: [linux-qemu-x86-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: qemux86 MACHINE: qemux86
CI_BUILD_JOB_NAME: linux-qemu-x86 CI_BUILD_JOB_NAME: linux-qemu-x86-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86-perf.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86-perf.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-qemu-x86_64-perf: lava-qemu-x86_64-perf:
needs: [linux-qemu-x86_64] needs: [linux-qemu-x86_64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: qemux86-64 MACHINE: qemux86-64
CI_BUILD_JOB_NAME: linux-qemu-x86_64 CI_BUILD_JOB_NAME: linux-qemu-x86_64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64-perf.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-x86_64-perf.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-raspberrypi4-64-perf: lava-raspberrypi4-64-perf:
needs: [linux-raspberrypi4-64] needs: [linux-raspberrypi4-64-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: raspberrypi4-64 MACHINE: raspberrypi4-64
CI_BUILD_JOB_NAME: linux-raspberrypi4-64 CI_BUILD_JOB_NAME: linux-raspberrypi4-64-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64-perf.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/raspberrypi4-64-perf.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-intel-b68-perf: lava-seco-intel-b68-perf:
needs: [linux-seco-intel-b68] needs: [linux-seco-intel-b68-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-intel-b68 MACHINE: seco-intel-b68
CI_BUILD_JOB_NAME: linux-seco-intel-b68 CI_BUILD_JOB_NAME: linux-seco-intel-b68-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-intel-b68-perf.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-intel-b68-perf.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-seco-c61-perf: lava-seco-c61-perf:
needs: [linux-seco-imx8mm-c61-4gb] needs: [linux-seco-imx8mm-c61-4gb-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test-scheduled
variables: variables:
MACHINE: seco-imx8mm-c61-4gb MACHINE: seco-imx8mm-c61-4gb
CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb CI_BUILD_JOB_NAME: linux-seco-imx8mm-c61-4gb-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61-perf.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/seco-c61-perf.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-zephyr-qemu-cortex-m3: lava-zephyr-qemu-cortex-m3:
needs: [zephyr-qemu-cortex-m3] needs: [zephyr-qemu-cortex-m3-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test
variables: variables:
MACHINE: qemu-cortex-m3 MACHINE: qemu-cortex-m3
CI_BUILD_JOB_NAME: zephyr-qemu-cortex-m3 CI_BUILD_JOB_NAME: zephyr-qemu-cortex-m3-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-zephyr-cortex-m3.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-zephyr-cortex-m3.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-zephyr-qemu-x86: lava-zephyr-qemu-x86:
needs: [zephyr-qemu-x86] needs: [zephyr-qemu-x86-gcc]
stage: test stage: test
extends: .lava-test extends: .lava-test
variables: variables:
MACHINE: qemu-x86 MACHINE: qemu-x86
CI_BUILD_JOB_NAME: zephyr-qemu-x86 CI_BUILD_JOB_NAME: zephyr-qemu-x86-gcc
CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-zephyr-x86.yaml" CI_LAVA_JOB_DEFINITION: "https://git.ostc-eu.org/OSTC/infrastructure/lava/lava-config/-/raw/master/lava.ostc-eu.org/job-definitions/ci/qemu-zephyr-x86.yaml"
CI_REPORT_JOB_NAME: lava-report CI_REPORT_JOB_NAME: lava-report
lava-report: lava-report:
extends: .lava-report
needs: needs:
- lava-qemu-x86 - lava-qemu-x86
- lava-qemu-x86_64 - lava-qemu-x86_64
- lava-raspberrypi4-64
- lava-seco-intel-b68
- lava-seco-c61
- lava-qemu-x86-ltp
- lava-qemu-x86_64-ltp
- lava-raspberrypi4-64-ltp
- lava-seco-intel-b68-ltp
- lava-seco-c61-ltp
- lava-qemu-x86-perf
- lava-qemu-x86_64-perf
- lava-raspberrypi4-64-perf
- lava-seco-intel-b68-perf
- lava-seco-c61-perf
- lava-zephyr-96b-nitrogen-twister
- lava-zephyr-qemu-cortex-m3 - lava-zephyr-qemu-cortex-m3
- lava-zephyr-qemu-x86 - lava-zephyr-qemu-x86
- lava-qemu-x86_64-kselftest
- lava-raspberrypi4-64-kselftest
- lava-seco-c61-kselftest
extends: .lava-report
lava-badge: lava-badge:
needs: [lava-report] needs: [lava-report]
......
...@@ -6,7 +6,32 @@ ...@@ -6,7 +6,32 @@
# The following jobs are documented in docs/ci/machines-and-flavours.rst # The following jobs are documented in docs/ci/machines-and-flavours.rst
linux-qemu-x86: .toolchain-gcc:
stage: build-gcc
dependencies: []
needs: []
variables:
CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
.toolchain-clang:
stage: build-clang
dependencies: []
needs: []
variables:
CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
.broken:
rules:
# Some builds fail, so allow them to fail until the situation improves
# dramatically so that the policy can be re-visited. Clang builds are also
# expensive, so only present the user with an option to start the build,
# but do not commence the build automatically.
- when: manual
allow_failure: true
.linux-qemu-x86:
extends: .build-wic-image extends: .build-wic-image
variables: variables:
MACHINE: qemux86 MACHINE: qemux86
...@@ -20,8 +45,12 @@ linux-qemu-x86: ...@@ -20,8 +45,12 @@ linux-qemu-x86:
# tainted build intermediate files, downloads or published artifacts. # tainted build intermediate files, downloads or published artifacts.
CI_ONIRO_BB_LOCAL_CONF_BB_GENERATE_MIRROR_TARBALLS: 1 CI_ONIRO_BB_LOCAL_CONF_BB_GENERATE_MIRROR_TARBALLS: 1
CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap ovmf.qcow2" CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap ovmf.qcow2"
linux-qemu-x86-gcc:
extends: [.linux-qemu-x86, .toolchain-gcc]
linux-qemu-x86-clang:
extends: [.linux-qemu-x86, .toolchain-clang]
linux-qemu-x86_64: .linux-qemu-x86_64:
extends: .build-wic-image extends: .build-wic-image
variables: variables:
MACHINE: qemux86-64 MACHINE: qemux86-64
...@@ -31,30 +60,46 @@ linux-qemu-x86_64: ...@@ -31,30 +60,46 @@ linux-qemu-x86_64:
CI_ONIRO_BUILD_CACHE: "pub" CI_ONIRO_BUILD_CACHE: "pub"
CI_ONIRO_BB_LOCAL_CONF_BB_GENERATE_MIRROR_TARBALLS: 1 CI_ONIRO_BB_LOCAL_CONF_BB_GENERATE_MIRROR_TARBALLS: 1
CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap ovmf.qcow2" CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap ovmf.qcow2"
linux-qemu-x86_64-gcc:
extends: [.linux-qemu-x86_64, .toolchain-gcc]
linux-qemu-x86_64-clang:
extends: [.linux-qemu-x86_64, .toolchain-clang]
linux-seco-intel-b68: .linux-seco-intel-b68:
extends: .build-wic-image extends: .build-wic-image
variables: variables:
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
CI_ONIRO_RECIPE_NAME: oniro-image-base-tests CI_ONIRO_RECIPE_NAME: oniro-image-base-tests
MACHINE: seco-intel-b68 MACHINE: seco-intel-b68
linux-seco-intel-b68-gcc:
extends: [.linux-seco-intel-b68, .toolchain-gcc]
linux-seco-intel-b68-clang:
extends: [.linux-seco-intel-b68, .toolchain-clang]
linux-seco-intel-b68-extra: .linux-seco-intel-b68-extra:
extends: .build-linux extends: .build-linux
variables: variables:
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
CI_ONIRO_BITBAKE_TARGETS: oniro-image-extra-tests CI_ONIRO_BITBAKE_TARGETS: oniro-image-extra-tests
MACHINE: seco-intel-b68 MACHINE: seco-intel-b68
linux-seco-intel-b68-extra-gcc:
extends: [.linux-seco-intel-b68-extra, .toolchain-gcc]
linux-seco-intel-b68-extra-clang:
extends: [.linux-seco-intel-b68-extra, .toolchain-clang]
linux-seco-imx8mm-c61-2gb: .linux-seco-imx8mm-c61-2gb:
extends: .build-linux-matrix extends: .build-linux-matrix
variables: variables:
MACHINE: seco-imx8mm-c61-2gb MACHINE: seco-imx8mm-c61-2gb
# This platform requires proprietary resources to boot. # This platform requires proprietary resources to boot.
# See build-generic.yaml for explanation of CI_ONIRO_BB_LOCAL_CONF_ variables. # See build-generic.yaml for explanation of CI_ONIRO_BB_LOCAL_CONF_ variables.
CI_ONIRO_BB_LOCAL_CONF_ACCEPT_FSL_EULA: 1 CI_ONIRO_BB_LOCAL_CONF_ACCEPT_FSL_EULA: 1
linux-seco-imx8mm-c61-2gb-gcc:
extends: [.linux-seco-imx8mm-c61-2gb, .toolchain-gcc]
linux-seco-imx8mm-c61-2gb-clang:
extends: [.linux-seco-imx8mm-c61-2gb, .toolchain-clang, .broken]
linux-seco-imx8mm-c61-4gb: .linux-seco-imx8mm-c61-4gb:
extends: .build-wic-image extends: .build-wic-image
variables: variables:
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
...@@ -64,8 +109,12 @@ linux-seco-imx8mm-c61-4gb: ...@@ -64,8 +109,12 @@ linux-seco-imx8mm-c61-4gb:
# See build-generic.yaml for explanation of CI_ONIRO_BB_LOCAL_CONF_ variables. # See build-generic.yaml for explanation of CI_ONIRO_BB_LOCAL_CONF_ variables.
CI_ONIRO_BB_LOCAL_CONF_ACCEPT_FSL_EULA: 1 CI_ONIRO_BB_LOCAL_CONF_ACCEPT_FSL_EULA: 1
CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap flash.bin-seco-imx8mm-c61*" CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap flash.bin-seco-imx8mm-c61*"
linux-seco-imx8mm-c61-4gb-gcc:
extends: [.linux-seco-imx8mm-c61-4gb, .toolchain-gcc]
linux-seco-imx8mm-c61-4gb-clang:
extends: [.linux-seco-imx8mm-c61-4gb, .toolchain-clang, .broken]
linux-seco-imx8mm-c61-4gb-extra: .linux-seco-imx8mm-c61-4gb-extra:
extends: .build-linux extends: .build-linux
variables: variables:
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
...@@ -74,15 +123,23 @@ linux-seco-imx8mm-c61-4gb-extra: ...@@ -74,15 +123,23 @@ linux-seco-imx8mm-c61-4gb-extra:
# This platform requires proprietary resources to boot. # This platform requires proprietary resources to boot.
# See build-generic.yaml for explanation of CI_ONIRO_BB_LOCAL_CONF_ variables. # See build-generic.yaml for explanation of CI_ONIRO_BB_LOCAL_CONF_ variables.
CI_ONIRO_BB_LOCAL_CONF_ACCEPT_FSL_EULA: 1 CI_ONIRO_BB_LOCAL_CONF_ACCEPT_FSL_EULA: 1
linux-seco-imx8mm-c61-4gb-extra-gcc:
extends: [.linux-seco-imx8mm-c61-4gb-extra, .toolchain-gcc]
linux-seco-imx8mm-c61-4gb-extra-clang:
extends: [.linux-seco-imx8mm-c61-4gb-extra, .toolchain-clang, .broken]
linux-raspberrypi4-64: .linux-raspberrypi4-64:
extends: .build-wic-image extends: .build-wic-image
variables: variables:
MACHINE: raspberrypi4-64 MACHINE: raspberrypi4-64
CI_ONIRO_BUILD_FLAVOUR: linux CI_ONIRO_BUILD_FLAVOUR: linux
CI_ONIRO_RECIPE_NAME: oniro-image-base-tests CI_ONIRO_RECIPE_NAME: oniro-image-base-tests
linux-raspberrypi4-64-gcc:
extends: [.linux-raspberrypi4-64, .toolchain-gcc]
linux-raspberrypi4-64-clang:
extends: [.linux-raspberrypi4-64, .toolchain-clang]
zephyr-qemu-x86: .zephyr-qemu-x86:
extends: .build-zephyr-image extends: .build-zephyr-image
variables: variables:
MACHINE: qemu-x86 MACHINE: qemu-x86
...@@ -92,8 +149,12 @@ zephyr-qemu-x86: ...@@ -92,8 +149,12 @@ zephyr-qemu-x86:
CI_ONIRO_RECIPE_NAME: zephyr-philosophers CI_ONIRO_RECIPE_NAME: zephyr-philosophers
CI_ONIRO_BUILD_FLAVOUR: zephyr CI_ONIRO_BUILD_FLAVOUR: zephyr
CI_ONIRO_INSTANCE_SIZE: s3.large.2 CI_ONIRO_INSTANCE_SIZE: s3.large.2
zephyr-qemu-x86-gcc:
extends: [.zephyr-qemu-x86, .toolchain-gcc]
zephyr-qemu-x86-clang:
extends: [.zephyr-qemu-x86, .toolchain-clang, .broken]
zephyr-qemu-cortex-m3: .zephyr-qemu-cortex-m3:
extends: .build-zephyr-image extends: .build-zephyr-image
variables: variables:
MACHINE: qemu-cortex-m3 MACHINE: qemu-cortex-m3
...@@ -103,24 +164,36 @@ zephyr-qemu-cortex-m3: ...@@ -103,24 +164,36 @@ zephyr-qemu-cortex-m3:
CI_ONIRO_RECIPE_NAME: zephyr-philosophers CI_ONIRO_RECIPE_NAME: zephyr-philosophers
CI_ONIRO_BUILD_FLAVOUR: zephyr CI_ONIRO_BUILD_FLAVOUR: zephyr
CI_ONIRO_INSTANCE_SIZE: s3.large.2 CI_ONIRO_INSTANCE_SIZE: s3.large.2
zephyr-qemu-cortex-m3-gcc:
extends: [.zephyr-qemu-cortex-m3, .toolchain-gcc]
zephyr-qemu-cortex-m3-clang:
extends: [.zephyr-qemu-cortex-m3, .toolchain-clang, .broken]
zephyr-96b-nitrogen: .zephyr-96b-nitrogen:
extends: .build-zephyr-image extends: .build-zephyr-image
variables: variables:
MACHINE: 96b-nitrogen MACHINE: 96b-nitrogen
CI_ONIRO_RECIPE_NAME: zephyr-philosophers CI_ONIRO_RECIPE_NAME: zephyr-philosophers
CI_ONIRO_BUILD_FLAVOUR: zephyr CI_ONIRO_BUILD_FLAVOUR: zephyr
CI_ONIRO_INSTANCE_SIZE: s3.large.2 CI_ONIRO_INSTANCE_SIZE: s3.large.2
zephyr-96b-nitrogen-gcc:
extends: [.zephyr-96b-nitrogen, .toolchain-gcc]
zephyr-96b-nitrogen-clang:
extends: [.zephyr-96b-nitrogen, .toolchain-clang, .broken]
zephyr-96b-nitrogen-tests: .zephyr-96b-nitrogen-tests:
extends: .build-zephyr-image extends: .build-zephyr-image
variables: variables:
MACHINE: 96b-nitrogen MACHINE: 96b-nitrogen
CI_ONIRO_RECIPE_NAME: zephyr-kernel-test-all CI_ONIRO_RECIPE_NAME: zephyr-kernel-test-all
CI_ONIRO_BUILD_FLAVOUR: zephyr CI_ONIRO_BUILD_FLAVOUR: zephyr
CI_ONIRO_INSTANCE_SIZE: s3.large.2 CI_ONIRO_INSTANCE_SIZE: s3.large.2
zephyr-96b-nitrogen-tests-gcc:
extends: [.zephyr-96b-nitrogen-tests, .toolchain-gcc]
zephyr-96b-nitrogen-tests-clang:
extends: [.zephyr-96b-nitrogen-tests, .toolchain-clang, .broken]
zephyr-96b-nitrogen-twister: .zephyr-96b-nitrogen-twister:
extends: .build-image extends: .build-image
variables: variables:
MACHINE: 96b-nitrogen MACHINE: 96b-nitrogen
...@@ -128,26 +201,46 @@ zephyr-96b-nitrogen-twister: ...@@ -128,26 +201,46 @@ zephyr-96b-nitrogen-twister:
CI_ONIRO_BUILD_FLAVOUR: zephyr CI_ONIRO_BUILD_FLAVOUR: zephyr
CI_ONIRO_INSTANCE_SIZE: s3.large.2 CI_ONIRO_INSTANCE_SIZE: s3.large.2
CI_ONIRO_JOB_ARTIFACTS: "twister*.tar.bz2" CI_ONIRO_JOB_ARTIFACTS: "twister*.tar.bz2"
zephyr-96b-nitrogen-twister-gcc:
extends: [.zephyr-96b-nitrogen-twister, .toolchain-gcc]
zephyr-96b-nitrogen-twister-clang:
extends: [.zephyr-96b-nitrogen-twister, .toolchain-clang, .broken]
zephyr-96b-avenger: .zephyr-96b-avenger:
extends: .build-zephyr extends: .build-zephyr
variables: variables:
MACHINE: 96b-avenger96 MACHINE: 96b-avenger96
zephyr-96b-avenger-gcc:
extends: [.zephyr-96b-avenger, .toolchain-gcc]
zephyr-96b-avenger-clang:
extends: [.zephyr-96b-avenger, .toolchain-clang, .broken]
zephyr-nrf52840dk-nrf52840: .zephyr-nrf52840dk-nrf52840:
extends: .build-zephyr extends: .build-zephyr
variables: variables:
MACHINE: nrf52840dk-nrf52840 MACHINE: nrf52840dk-nrf52840
zephyr-nrf52840dk-nrf52840-gcc:
extends: [.zephyr-nrf52840dk-nrf52840, .toolchain-gcc]
zephyr-nrf52840dk-nrf52840-clang:
extends: [.zephyr-nrf52840dk-nrf52840, .toolchain-clang, .broken]
zephyr-arduino-nano-33-ble: .zephyr-arduino-nano-33-ble:
extends: .build-zephyr extends: .build-zephyr
variables: variables:
MACHINE: arduino-nano-33-ble MACHINE: arduino-nano-33-ble
zephyr-arduino-nano-33-ble-gcc:
extends: [.zephyr-arduino-nano-33-ble, .toolchain-gcc]
zephyr-arduino-nano-33-ble-clang:
extends: [.zephyr-arduino-nano-33-ble, .toolchain-clang, .broken]
freertos-armv5: .freertos-armv5:
extends: .build-freertos extends: .build-freertos
variables: variables:
MACHINE: qemuarmv5 MACHINE: qemuarmv5
# See the note on linux-qemu-x86. # See the note on linux-qemu-x86.
CI_ONIRO_BUILD_CACHE: "pub" CI_ONIRO_BUILD_CACHE: "pub"
CI_ONIRO_BB_LOCAL_CONF_BB_GENERATE_MIRROR_TARBALLS: 1 CI_ONIRO_BB_LOCAL_CONF_BB_GENERATE_MIRROR_TARBALLS: 1
freertos-armv5-gcc:
extends: [.freertos-armv5, .toolchain-gcc]
freertos-armv5-clang:
extends: [.freertos-armv5, .toolchain-clang, .broken]
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
GIT_STRATEGY: none GIT_STRATEGY: none
CI_LAVA_INSTANCE: "https://lava.ostc-eu.org/" CI_LAVA_INSTANCE: "https://lava.ostc-eu.org/"
CI_SQUAD_INSTANCE: "https://squadp.svc.ostc-eu.dev" CI_SQUAD_INSTANCE: "https://squadp.svc.ostc-eu.dev"
CI_SQUAD_PROJECT_NAME: "oniro-test-mr"
# Run the same ltp test suites that using by LKFT project. # Run the same ltp test suites that using by LKFT project.
# Reference: https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.98-75-g9f5cb871ceb9/testjobs/ # Reference: https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.98-75-g9f5cb871ceb9/testjobs/
LTP_TST_CMDFILES: "cap_bounds cpuhotplug crypto nptl pty securebits fs controllers hugetlb mm tracing containers io dio syscalls math commands ipc fcntl-locktests filecaps fs_bind fs_perms_simple fsx sched cve" LTP_TST_CMDFILES: "cap_bounds cpuhotplug crypto nptl pty securebits fs controllers hugetlb mm tracing containers io dio syscalls math commands ipc fcntl-locktests filecaps fs_bind fs_perms_simple fsx sched cve"
...@@ -71,16 +72,22 @@ ...@@ -71,16 +72,22 @@
# Submit the jobs to SQUAD. # Submit the jobs to SQUAD.
- | - |
for job_def in $(find lava_jobs/ -name "*.yaml"); do for job_def in $(find lava_jobs/ -name "*.yaml"); do
echo $CI_SQUAD_INSTANCE/api/submitjob/oniro-core/$CI_PROJECT_NAME/$CI_PIPELINE_ID/$MACHINE --header "Auth-Token: $CI_SQUAD_TOKEN" --form "backend=oniro_lava" --form "definition=@${job_def}" echo $CI_SQUAD_INSTANCE/api/submitjob/oniro-core/$CI_SQUAD_PROJECT_NAME/$CI_PIPELINE_ID/$MACHINE --header "Auth-Token: $CI_SQUAD_TOKEN" --form "backend=oniro_lava" --form "definition=@${job_def}"
curl $CI_SQUAD_INSTANCE/api/submitjob/oniro-core/$CI_PROJECT_NAME/$CI_PIPELINE_ID/$MACHINE --header "Auth-Token: $CI_SQUAD_TOKEN" --form "backend=oniro_lava" --form "definition=@${job_def}" curl $CI_SQUAD_INSTANCE/api/submitjob/oniro-core/$CI_SQUAD_PROJECT_NAME/$CI_PIPELINE_ID/$MACHINE --header "Auth-Token: $CI_SQUAD_TOKEN" --form "backend=oniro_lava" --form "definition=@${job_def}"
done done
# Attach a callback to this build to trigger the lava-report job # Attach a callback to this build to trigger the lava-report job
squad_build_id="$(curl --silent "$CI_SQUAD_INSTANCE/api/builds/?version=$CI_PIPELINE_ID" | jq -r '.results[0].id')" squad_build_id="$(curl --silent "$CI_SQUAD_INSTANCE/api/builds/?version=$CI_PIPELINE_ID" | jq -r '.results[0].id')"
curl -X POST $CI_SQUAD_INSTANCE/api/builds/$squad_build_id/callbacks/ --header "Authorization: Token $CI_SQUAD_TOKEN" -F "callback_url=$CALLBACK_URL" curl --silent \
-X POST "$CI_SQUAD_INSTANCE/api/builds/$squad_build_id/callbacks/" \
-H "Authorization: Token $CI_SQUAD_TOKEN" \
-F "callback_url=$CALLBACK_URL" \
-F "callback_record_response=true"
artifacts: artifacts:
paths: paths:
- lava_jobs/*.yaml - lava_jobs/*.yaml
rules: rules:
- if: '$CI_SQUAD_TOKEN == null'
when: never
# Run the build when it is scheduled. # Run the build when it is scheduled.
- if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "schedule"
# Do not run pipelines for draft merge requests unless manually triggered. # Do not run pipelines for draft merge requests unless manually triggered.
...@@ -101,18 +108,22 @@ ...@@ -101,18 +108,22 @@
variables: variables:
GIT_STRATEGY: none GIT_STRATEGY: none
CI_LAVA_INSTANCE: "https://lava.ostc-eu.org/" CI_LAVA_INSTANCE: "https://lava.ostc-eu.org/"
CI_SQUAD_INSTANCE: "https://squadp.svc.ostc-eu.dev"
script: script:
- | - |
# Get the test_runs_incomplete value from build status. That will tell # Get the test_runs_incomplete value from build status. That will tell
# us if any of the LAVA jobs failed and we can determine whether the # us if any of the LAVA jobs failed and we can determine whether the
# report job is successful or not. # report job is successful or not.
incomplete="$(curl --silent $CI_SQUAD_INSTANCE/api/builds/$CI_PIPELINE_ID/status/ | jq -r '.test_runs_incomplete')" squad_build_id="$(curl --silent "$CI_SQUAD_INSTANCE/api/builds/?version=$CI_PIPELINE_ID" | jq -r '.results[0].id')"
if [ "$incomplete" != "0" ]; then curl --silent "$CI_SQUAD_INSTANCE/api/builds/$squad_build_id/testjobs/" > test_jobs.json
jq -r '.results | .[] | .external_url, .job_status' test_jobs.json | tee job_status.txt
if grep -qi "incomplete" job_status.txt; then
echo "ERROR: Incomplete test job reported: exit code 1" echo "ERROR: Incomplete test job reported: exit code 1"
exit 1 exit 1
fi fi
rules: rules:
- if: '$CI_SQUAD_TOKEN == null'
when: never
# Run the build when it is scheduled. # Run the build when it is scheduled.
- if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_PIPELINE_SOURCE == "schedule"
when: manual when: manual
......
...@@ -38,7 +38,7 @@ You can test the image built for the qemu-x86 target by issuing: ...@@ -38,7 +38,7 @@ You can test the image built for the qemu-x86 target by issuing:
.. code-block:: console .. code-block:: console
$ runqemu qemu-x86 $ runqemu qemu-x86 nographic
After successful bootup, the output of the application will be similar to: After successful bootup, the output of the application will be similar to:
......
...@@ -24,19 +24,20 @@ SPDX-FileCopyrightText: Huawei Inc. ...@@ -24,19 +24,20 @@ SPDX-FileCopyrightText: Huawei Inc.
<remote name="openembedded" fetch="git://git.openembedded.org" /> <remote name="openembedded" fetch="git://git.openembedded.org" />
<remote name="seco" fetch="https://git.seco.com" /> <remote name="seco" fetch="https://git.seco.com" />
<project name="bitbake" remote="openembedded" revision="494fcfcb7c4469915c67f544997104d81c417266" path="bitbake" /> <project name="bitbake" remote="openembedded" revision="b8fd6f5d9959d27176ea016c249cf6d35ac8ba03" path="bitbake" />
<project name="openembedded-core" remote="openembedded" revision="b2d10487f80deb04a0893325a1ae79c8629a7655" path="oe-core" /> <project name="openembedded-core" remote="openembedded" revision="a5919cb8bcb8f3fe66519c80aa8730b16cf987ac" path="oe-core" />
<project name="meta-openembedded" remote="openembedded" revision="fcc7d7eae82be4c180f2e8fa3db90a8ab3be07b7" path="meta-openembedded" /> <project name="meta-openembedded" remote="openembedded" revision="fcc7d7eae82be4c180f2e8fa3db90a8ab3be07b7" path="meta-openembedded" />
<project name="aehs29/meta-freertos" remote="github" revision="98a6838261d36b8f79c5fbae1736492169727a1e" path="meta-freertos" /> <project name="aehs29/meta-freertos" remote="github" revision="98a6838261d36b8f79c5fbae1736492169727a1e" path="meta-freertos" />
<project name="meta-intel" remote="yocto" revision="8e472da759cd5a5bf2ece041d2796db56b1d5482" path="meta-intel" /> <project name="meta-intel" remote="yocto" revision="8e472da759cd5a5bf2ece041d2796db56b1d5482" path="meta-intel" />
<project name="pub/intel/yocto/meta-seco-intel" remote="seco" revision="65a673560211b11986db5785c70254fad190785f" path="meta-seco-intel" /> <project name="pub/intel/yocto/meta-seco-intel" remote="seco" revision="65a673560211b11986db5785c70254fad190785f" path="meta-seco-intel" />
<project name="meta-freescale" remote="yocto" revision="92df6b76f38397b75ea76d588935b5b91b63c58c" path="meta-freescale" /> <project name="meta-freescale" remote="yocto" revision="92df6b76f38397b75ea76d588935b5b91b63c58c" path="meta-freescale" />
<project name="pub/i.mx/yocto/5.x/meta-seco-imx" remote="seco" revision="4b338aa40990226b599779f91f7f03dbb0d12747" path="meta-seco-imx" /> <project name="pub/i.mx/yocto/5.x/meta-seco-imx" remote="seco" revision="b6976d806dad5cff6e071cfdb59ab45c4210604b" path="meta-seco-imx" />
<project name="meta-raspberrypi" remote="yocto" revision="0135a02ea577bd39dd552236ead2c5894d89da1d" path="meta-raspberrypi" /> <project name="meta-raspberrypi" remote="yocto" revision="0135a02ea577bd39dd552236ead2c5894d89da1d" path="meta-raspberrypi" />
<project name="meta-security" remote="yocto" revision="d3d8e62bf1caa3870a504c0addcfd200b33c189f" path="meta-security" /> <project name="meta-security" remote="yocto" revision="d3d8e62bf1caa3870a504c0addcfd200b33c189f" path="meta-security" />
<project name="rauc/meta-rauc" remote="github" revision="4429bd1f29677c9a7de032d53240fb4791a41e1f" path="meta-rauc" /> <project name="rauc/meta-rauc" remote="github" revision="c66cdf995818a4425ad32b0ef76063e762dbf922" path="meta-rauc" />
<project name="riscv/meta-riscv" remote="github" revision="70e099d7ceca52a1dde2c978713012f6b20a9891" path="meta-riscv" /> <project name="riscv/meta-riscv" remote="github" revision="70e099d7ceca52a1dde2c978713012f6b20a9891" path="meta-riscv" />
<project name="meta-arm" remote="yocto" revision="a8cb33d5139e30b4a643da9a277487299c0e658f" path="meta-arm" /> <project name="meta-arm" remote="yocto" revision="741509023867aa629f35289bba12485d4b6e3dcf" path="meta-arm" />
<project name="jiazhang0/meta-secure-core" remote="github" revision="2ccf4aa4e352a1b990d0f59bf28de8639ca529d9" path="meta-secure-core" />
<!-- <!--
All entries above are pinned to a specific revision and updated manually. All entries above are pinned to a specific revision and updated manually.
......
# SPDX-FileCopyrightText: Huawei Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# Create a diff of two JSON CVE statuses
import sys
import getopt
import re
from deepdiff import DeepDiff
from pprint import pprint
verbose_level = 0
def show_syntax_and_exit(code):
"""
Show the program syntax and exit with an errror
Arguments:
code: the error code to return
"""
print("Syntax: %s [-h] [-v] file1 file2" % __name__)
sys.exit(code)
def exit_error(code, message):
"""
Show the error message and exit with an errror
Arguments:
code: the error code to return
message: the message to show
"""
print("Error: %s" % message)
sys.exit(code)
def vprint(*args, **kwargs):
"""
Printing with verbosity levels
Arguments:
args: as for print
kwargs: as for print
"""
global verbose_level
if verbose_level:
print(*args, **kwargs)
def parse_args(argv):
"""
Parse the program arguments, put options in global variables
Arguments:
argv: program arguments
Returns:
Two mandatory file arguments
"""
global verbose_level
try:
opts, args = getopt.getopt(argv, "hv", ["help", "verbose"])
except getopt.GetoptError:
show_syntax_and_exit(1)
for opt, arg in opts:
if opt in ("-h", "--help"):
show_syntax_and_exit(0)
elif opt in ("-v", "--verbose"):
verbose_level = 1
else:
show_syntax_and_exit(1)
if len(args) < 2:
exit_error(1, "Need at least two files to compare")
return (args[0], args[1])
def validate_cve_json(data):
"""
Check correctness of the loaded JSON data
Arguments:
data: loaded data
Returns:
Bool: True if file is correct, False otherwise
Error message: if the file has errors
"""
if not "version" in data or data["version"] != "1":
return False, "Unrecognized format version number"
if not "package" in data:
return False, "Mandatory 'package' key not found"
for package in data["package"]:
keys_in_package = {"name", "layer", "version", "issue"}
if keys_in_package - package.keys():
return False, "Missing a mandatory key in package: %s" % (
keys_in_package - package.keys()
)
for issue in package["issue"]:
keys_in_issue = {"id", "scorev2", "scorev3", "vector", "status"}
if keys_in_issue - issue.keys():
return (
False,
"Missing mandatory keys %s in 'issue' for the package '%s'"
% (keys_in_issue - issue.keys(), package_name),
)
return True, ""
def get_name(value):
"""
Function used for sorting, return the sorting key to use
Argument:
value: raw value
Return:
Package name to use for sorting
"""
return value["name"]
def load_cve_json(filename):
"""
Load the JSON file, return the resulting dictionary
Arguments:
filename: the file to open
Returns:
Parsed file as a dictionary
"""
import json
out = {}
try:
with open(filename, "r") as f:
out = json.load(f)
except FileNotFoundError:
exit_error(1, "Input file (%s) not found" % (filename))
except json.decoder.JSONDecodeError as error:
exit_error(1, "Malformed JSON file: %s" % str(error))
# Validate file
validated, error = validate_cve_json(out)
if not validated:
exit_error(1, error)
out_sorted = sorted(out["package"], key=get_name)
return out_sorted
def calculate_diff(data1, data2):
"""
Calculate a deep diff between two JSON data sets
Arguments:
data1: source data to compare (current)
data2: destination data to compare (upstream)
Returns:
Diff in the DeepDiff tree format
"""
ddiff = DeepDiff(data1, data2, ignore_order=True, view="tree")
return ddiff
def calculate_package_diff(diff):
"""
Parse a difference in packages from the deep diff
Arguments:
diff: the deep diff, tree format
Returns:
removed set: added packages list
added_set: removed packages list
"""
removed_set = []
added_set = []
vprint("Package status:")
if "iterable_item_added" in diff.keys():
for p in diff["iterable_item_added"]:
# Only p.t2 exists
# Assure only "root[XXXX]" items
if not re.search("^root\[[0-9]+\]$", p.path()):
# If we have a new issue
# if re.search("^root\[[0-9]+\]\['issue'\]\[[0-9]+\]$", p):
# print("New issue")
continue
vprint("Added package: %s %s" % (p.t2["name"], p.t2["version"]))
added_set.append(p.t2)
if "iterable_item_removed" in diff.keys():
for p in diff["iterable_item_removed"]:
# Only p.t1 exists
# Assure only "root[XXXX]" items
if not re.search("^root\[[0-9]+\]$", p.path()):
# print("removed: Not found in %s" % (p.t1))
continue
vprint("Removed package: %s %s" % (p.t1["name"], p.t1["version"]))
removed_set.append(p.t1)
if "values_changed" in diff.keys():
# print("Some values changed")
for p in diff["values_changed"]:
# Filter out name changes, this is addition/removal - removal of t1
if re.search("^root\[[0-9]+\]\['name'\]$", p.path()):
vprint("Removed package: %s %s" % (p.up.t1["name"], p.up.t1["version"]))
vprint("Added package: %s %s" % (p.up.t2["name"], p.up.t2["version"]))
removed_set.append(p.up.t1)
added_set.append(p.up.t2)
# TODO: Handle the special case of linux
else:
# If a high level property root[XXX]['somename'] of the item that was changed
if re.search("^root\[[0-9]+\]\['[a-z,A-Z,0-9]+'\]$", p.path()):
# If the parent has been removed, this item is to be ignored
# We take it into account only if paren't hasn't been removed
if not p.up.t1 in removed_set:
vprint("Found changed items for: %s" % (p.up.t1["name"]))
# product table varies when the high level has changed
# Format: [root][XX]['products'][XX]['product']
elif re.search(
"^root\[[0-9]+\]\['products'\]\[[0-9]+\]\['product'\]$", p.path()
):
if p.up.up.up.t1 not in removed_set:
vprint(
"Change of product names for package: %s %s"
% (p.up.up.up.t1["name"], p.up.up.up.t2["name"])
)
# TODO: product table varies when the high level has changed
# TODO: issue table version when the high level has changed
# else:
# print(p)
vprint("")
return (removed_set, added_set)
def calculate_cve_diff(diff):
"""
Parse a difference in CVEs from the deep diff
Arguments:
diff: the deep diff, tree format
Returns:
removed_cves: removed CVEs
added_cves: added CVEs
"""
added_cves = []
removed_cves = []
vprint("CVE status:")
# Look for added/removed CVEs
if "values_changed" in diff.keys():
# Differences like <root[42]['issue'][2562]['status'] t1:'Patched', t2:'Unpatched'>
for p in diff["values_changed"]:
if re.search("^root\[[0-9]+\]\['issue'\]\[[0-9]+\]\['status'\]$", p.path()):
if (p.t1 == "Patched" or p.t1 == "Ignored") and p.t2 == "Unpatched":
# New CVE
vprint(
"Unpatched CVE: %s (%s %s)"
% (
p.up.t2["id"],
p.up.up.up.t2["name"],
p.up.up.up.t2["version"],
)
)
added_cves.append(p.up.t2["id"])
elif p.t1 == "Unpatched" and (p.t2 == "Patched" or p.t2 == "Ignored"):
# Fixed CVE
vprint(
"Fixed CVE: %s (%s %s)"
% (
p.up.t2["id"],
p.up.up.up.t2["name"],
p.up.up.up.t2["version"],
)
)
removed_cves.append(p.up.t2["id"])
else:
vprint(
"Unknown status of CVE: %s (%s %s)"
% (
p.up.t2["id"],
p.up.up.up.t2["name"],
p.up.up.up.t2["version"],
)
)
# Other changes in the issue table
elif re.search("^root\[[0-9]+\]\['issue'\].*$", p.path()):
# The whole issue element has changed
if re.search("^root\[[0-9]+\]\['issue'\]\[[0-9]+\]$", p.path()):
if p.up.up.t1["name"] == p.up.up.t2["name"]:
vprint(
"Changed CVE for package %s %s"
% (p.up.up.t2["name"], p.up.up.t2["version"])
)
else:
# Some fields of the issue changed
if re.search(
"^root\[[0-9]+\]\['issue'\]\[[0-9]+\]\['[a-z,A-Z]+'\]$",
p.path(),
):
# If package names are different, this is a spurious diff
if p.up.up.up.t1["name"] == p.up.up.up.t2["name"]:
vprint(
"Changed CVE for package %s %s"
% (p.up.up.up.t2["name"], p.up.up.up.t2["version"])
)
vprint("")
return (removed_cves, added_cves)
def main(argv):
file1, file2 = parse_args(argv)
data1 = load_cve_json(file1)
data2 = load_cve_json(file2)
diff = calculate_diff(data1, data2)
removed_set, added_set = calculate_package_diff(diff)
removed_cves, added_cves = calculate_cve_diff(diff)
print("Summary:")
print(
"Package report: the new version adds %s packages and removes %d packages"
% (len(added_set), len(removed_set))
)
print(
"CVE report: the new version removes %s CVEs and adds %s CVEs"
% (len(removed_cves), len(added_cves))
)
if __name__ == "__main__":
main(sys.argv[1:])
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# CVE-check example script # CVE-check example script
# Convert the cve-check JSON output to a CSV file # Reporting based on the cve-check JSON format: conversion to CSV and summary
import sys import sys
import getopt import getopt
...@@ -11,6 +11,8 @@ import getopt ...@@ -11,6 +11,8 @@ import getopt
infile = "in.json" infile = "in.json"
outfile = "out.csv" outfile = "out.csv"
show_all = False show_all = False
show_summary = False
to_csv = False
def show_syntax_and_exit(code): def show_syntax_and_exit(code):
...@@ -19,9 +21,13 @@ def show_syntax_and_exit(code): ...@@ -19,9 +21,13 @@ def show_syntax_and_exit(code):
Arguments: Arguments:
code: the error code to return code: the error code to return
""" """
print("Syntax: %s [-h][-i inputfile][-o outputfile] [-a]" % __name__) print("Syntax: %s [-h] [-a] [-s] [-c] [-i inputfile][-o outputfile]" % sys.argv[0])
print("Default files: in.json and out.csv") print("Default files: in.json and out.csv")
print("Use -a or -all to list all issues, otherwise we filter only unpatched ones") print(
"Use -c or --to-csv to generate a CSV report, output file is then needed, out.csv by default"
)
print("Use -a or --all to list all issues, otherwise we filter only unpatched ones")
print("Use -s or --summary to show a summary of the issues")
sys.exit(code) sys.exit(code)
...@@ -42,20 +48,26 @@ def parse_args(argv): ...@@ -42,20 +48,26 @@ def parse_args(argv):
Arguments: Arguments:
argv: program arguments argv: program arguments
""" """
global infile, outfile, show_all global infile, outfile, show_all, show_summary, to_csv
try: try:
opts, args = getopt.getopt(argv, "hi:o:a", ["input", "output"]) opts, args = getopt.getopt(
argv, "hi:o:asc", ["help", "input", "output", "summary", "to-csv"]
)
except getopt.GetoptError: except getopt.GetoptError:
show_syntax_and_exit(1) show_syntax_and_exit(1)
for opt, arg in opts: for opt, arg in opts:
if opt == "-h": if opt in ("-h", "--help"):
show_syntax_and_exit(0) show_syntax_and_exit(0)
elif opt in ("-a", "--all"):
show_all = True
elif opt in ("-i", "--input"): elif opt in ("-i", "--input"):
infile = arg infile = arg
elif opt in ("-c", "--to-csv"):
to_csv = True
elif opt in ("-o", "--output"): elif opt in ("-o", "--output"):
outfile = arg outfile = arg
elif opt in ("-a", "--all"): elif opt in ("-s", "--summary"):
show_all = True show_summary = True
def load_json(filename): def load_json(filename):
...@@ -79,7 +91,7 @@ def load_json(filename): ...@@ -79,7 +91,7 @@ def load_json(filename):
return out return out
def write_csv(filename, data, unpatched_only): def process_data(filename, data, unpatched_only, do_summary, do_csv):
""" """
Write the resulting CSV with one line for each package Write the resulting CSV with one line for each package
Arguments: Arguments:
...@@ -95,6 +107,7 @@ def write_csv(filename, data, unpatched_only): ...@@ -95,6 +107,7 @@ def write_csv(filename, data, unpatched_only):
exit_error(1, "Mandatory 'package' key not found") exit_error(1, "Mandatory 'package' key not found")
lines = "" lines = ""
total_issue_count = 0
for package in data["package"]: for package in data["package"]:
keys_in_package = {"name", "layer", "version", "issue"} keys_in_package = {"name", "layer", "version", "issue"}
if keys_in_package - package.keys(): if keys_in_package - package.keys():
...@@ -107,6 +120,11 @@ def write_csv(filename, data, unpatched_only): ...@@ -107,6 +120,11 @@ def write_csv(filename, data, unpatched_only):
package_name = package["name"] package_name = package["name"]
layer = package["layer"] layer = package["layer"]
package_version = package["version"] package_version = package["version"]
package_summary = "Issues for package %s (version %s):\n\t" % (
package_name,
package_version,
)
issue_count = 0
for issue in package["issue"]: for issue in package["issue"]:
keys_in_issue = {"id", "scorev2", "scorev3", "vector", "status"} keys_in_issue = {"id", "scorev2", "scorev3", "vector", "status"}
...@@ -132,15 +150,27 @@ def write_csv(filename, data, unpatched_only): ...@@ -132,15 +150,27 @@ def write_csv(filename, data, unpatched_only):
scorev3, scorev3,
vector, vector,
) )
package_summary += "%s " % (cve_id)
issue_count += 1
if do_summary and issue_count > 0:
package_summary += "\n\tCount: %d\n" % (issue_count)
print(package_summary)
total_issue_count += issue_count
if do_csv:
with open(filename, "w") as f:
f.write(lines)
with open(filename, "w") as f: if do_summary:
f.write(lines) print("Global issue count: %d" % (total_issue_count))
def main(argv): def main(argv):
parse_args(argv) parse_args(argv)
data = load_json(infile) data = load_json(infile)
write_csv(outfile, data, not show_all) process_data(outfile, data, not show_all, show_summary, to_csv)
if __name__ == "__main__": if __name__ == "__main__":
......