- job: | |
name: tf-a-main | |
node: docker-amd64-tf-a-jammy | |
project-type: multijob | |
concurrent: true | |
disabled: false | |
description: Main CI job for Trusted Firmware. | |
properties: | |
- throttle: | |
option: project | |
enabled: true | |
max-total: 5 | |
- build-discarder: | |
days-to-keep: 14 | |
num-to-keep: 60 | |
parameters: | |
- string: | |
name: TF_GERRIT_PROJECT | |
default: 'TF-A/trusted-firmware-a' | |
- string: | |
name: TF_GERRIT_BRANCH | |
default: 'refs/heads/integration' | |
- string: | |
name: TF_GERRIT_REFSPEC | |
default: '+refs/heads/integration:refs/remotes/origin/integration' | |
- string: | |
name: TFTF_GERRIT_PROJECT | |
default: 'TF-A/tf-a-tests' | |
- string: | |
name: TFTF_GERRIT_BRANCH | |
default: 'refs/heads/master' | |
- string: | |
name: TFTF_GERRIT_REFSPEC | |
default: '+refs/heads/master:refs/remotes/origin/master' | |
- string: | |
name: SPM_REFSPEC | |
default: '+refs/heads/master:refs/remotes/origin/master' | |
description: | | |
SPM(Hafnium) refspec to use. The master branch is used by default. | |
- string: | |
name: RMM_REFSPEC | |
default: '+refs/heads/main:refs/remotes/origin/main' | |
description: | | |
tf-rmm refspec to use. The main branch is used by default. | |
- string: | |
name: CI_REFSPEC | |
default: '+refs/heads/master:refs/remotes/origin/master' | |
- string: | |
name: JOBS_REFSPEC | |
default: 'refs/heads/master' | |
description: | | |
tf-a-job-configs refspec to use. The master branch is used by default. | |
- string: | |
name: MBEDTLS_URL | |
default: 'https://github.com/Mbed-TLS/mbedtls/archive/mbedtls-3.6.3.tar.gz' | |
- string: | |
name: LAVA_RETRIES | |
default: 2 | |
description: | | |
Number of tries submitting job to LAVA in case it fails (stopgap measure against nondeterministic failures) | |
- string: | |
name: USE_TUXSUITE_FVP | |
default: 1 | |
description: | | |
Whether to submit FVP tests via TuxSuite (instead of LAVA) | |
- string: | |
name: SHARE_FOLDER | |
default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}' | |
description: 'Folder containing shared repositories for downstream pipeline jobs' | |
wrappers: | |
- credentials-binding: | |
- ssh-user-private-key: | |
credential-id: TFA_CI_BOT_USER_SSH_KEY | |
key-file-variable: CI_BOT_KEY | |
username-variable: CI_BOT_USERNAME | |
passphrase-variable: '' | |
- workspace-cleanup | |
- timestamps | |
builders: | |
- shell: | |
!include-raw: scripts/clone.sh | |
- shell: | | |
#!/bin/bash | |
set -e | |
cat << EOF > tf-a-env.param | |
GERRIT_PROJECT=${TF_GERRIT_PROJECT} | |
GERRIT_BRANCH=${TF_GERRIT_BRANCH} | |
GERRIT_REFSPEC=${TF_GERRIT_REFSPEC} | |
QA_SERVER_PROJECT=${JOB_NAME} | |
QA_SERVER_VERSION=${BUILD_NUMBER} | |
SHARE_FOLDER=${SHARE_FOLDER} | |
EOF | |
cat << EOF > tf-a-tests-env.param | |
GERRIT_PROJECT=${TFTF_GERRIT_PROJECT} | |
GERRIT_BRANCH=${TFTF_GERRIT_BRANCH} | |
GERRIT_REFSPEC=${TFTF_GERRIT_REFSPEC} | |
QA_SERVER_PROJECT=${JOB_NAME} | |
QA_SERVER_VERSION=${BUILD_NUMBER} | |
SHARE_FOLDER=${SHARE_FOLDER} | |
EOF | |
- multijob: | |
name: Run static checks on the code | |
condition: COMPLETED | |
projects: | |
- name: tf-a-static-checks | |
current-parameters: true | |
kill-phase-on: NEVER | |
property-file: tf-a-env.param | |
- multijob: | |
name: Build Trusted Firmware | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tf-l1-build-fvp tf-l2-build-fvp | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: | | |
TEST_GROUPS=tf-l1-build-fvp tf-l2-build-fvp | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l1-build-juno tf-l2-build-juno | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l1-build-juno tf-l2-build-juno | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l1-build-plat | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l1-build-plat | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l1-build-clang | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l1-build-clang | |
property-file: tf-a-env.param | |
- multijob: | |
name: TFTF Tests for FVP | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tftf-l2-fwu | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tftf-l2-fwu | |
property-file: tf-a-tests-env.param | |
- name: tf-a-ci-gateway | |
alias: tftf-l1-fvp tftf-l2-fvp-auxiliary | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tftf-l1-fvp tftf-l2-fvp-auxiliary | |
property-file: tf-a-tests-env.param | |
- name: tf-a-ci-gateway | |
alias: tftf-l2-fvp tftf-l2-fvp-dynamiq | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tftf-l2-fvp tftf-l2-fvp-dynamiq | |
property-file: tf-a-tests-env.param | |
- name: tf-a-ci-gateway | |
alias: tftf-l2-extensive-tests-fvp | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tftf-l2-extensive-tests-fvp | |
property-file: tf-a-tests-env.param | |
- multijob: | |
name: Boot up to the Linux shell prompt | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-aarch32 | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-aarch32 | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-rootfs | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-rootfs | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-spm-mm | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-spm-mm | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: spm-l2-boot-tests | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=spm-l2-boot-tests | |
property-file: tf-a-env.param | |
- multijob: | |
name: Boot up to the Linux shell prompt - Part 2 | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-misc | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-misc | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-latest | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-latest | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-cortex | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-cortex | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-gicv2 | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-gicv2 | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-bl2_el3 | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-bl2_el3 | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: qemu-boot-tests | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=qemu-boot-tests | |
property-file: tf-a-env.param | |
- multijob: | |
name: Juno Boot Tests | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-juno | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-juno | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tftf-l1-juno | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tftf-l1-juno | |
property-file: tf-a-env.param | |
- multijob: | |
name: Miscellaneous tests | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tf-l3-boot-tests-css | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-css | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l3-boot-tests-spm-mm | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-spm-mm | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l3-boot-tests-ras | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-ras | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l3-boot-tests-misc | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-misc | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l3-boot-tests-n1sdp | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l3-boot-tests-n1sdp | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: spm-l3-boot-tests | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=spm-l3-boot-tests | |
property-file: tf-a-env.param | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-partner-boards | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-partner-boards | |
property-file: tf-a-env.param | |
# Platform-specific self-tests. | |
# These tests run from the BL31 image then halt the target. | |
- name: tf-a-ci-gateway | |
alias: tf-l2-boot-tests-arm-plats | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l2-boot-tests-arm-plats | |
property-file: tf-a-env.param | |
- multijob: | |
name: Run doc build check | |
condition: COMPLETED | |
projects: | |
- name: tf-a-ci-gateway | |
alias: tf-l1-check-docs | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TEST_GROUPS=tf-l1-check-docs | |
property-file: tf-a-env.param | |
- multijob: | |
name: Generate visualizations | |
condition: COMPLETED | |
projects: | |
- name: tf-a-sloc-visualization | |
current-parameters: true | |
kill-phase-on: NEVER | |
property-file: tf-a-env.param | |
- name: tf-a-test-category-visualization | |
current-parameters: true | |
kill-phase-on: NEVER | |
property-file: tf-a-env.param | |
- name: tf-a-test-result-visualization | |
current-parameters: true | |
kill-phase-on: NEVER | |
predefined-parameters: TARGET_BUILD=${JOB_NAME}/${BUILD_NUMBER} | |
property-file: tf-a-env.param | |
# Run the unstable TF-A Tests at the end but do not let their results | |
# participate in the job's success/failure. | |
- trigger-builds: | |
- project: tf-a-ci-gateway | |
current-parameters: True | |
property-file: tf-a-tests-env.param | |
property-file-fail-on-missing: True | |
predefined-parameters: TEST_GROUPS=tftf-unstable | |
block: True | |
block-thresholds: | |
build-step-failure-threshold: never | |
unstable-threshold: never | |
failure-threshold: never | |
# If all tests passed, catch up the master branch with integration | |
- conditional-step: | |
condition-kind: current-status | |
condition-best: SUCCESS | |
condition-worst: SUCCESS | |
steps: | |
- shell: |- | |
#!/bin/bash | |
# | |
if echo ${JENKINS_PUBLIC_URL} | grep -q "ci.trustedfirmware.org"; then | |
# Only do it on the OpenCI production site | |
echo "It's running on the OpenCI procution site" | |
if [ $MULTIJOB_FAILED -eq 0 ]; then | |
echo "Proceed with integration->master fast-forward merge" | |
bash "${WORKSPACE}/tf-a-ci-scripts/script/scratch_scripts/fast-forward-master.sh" | |
else | |
echo "Do not proceed with integration->master merge as sub-jobs failed" | |
fi | |
else | |
echo "It's NOT on the OpenCI production site" | |
fi |