blob: 7cc80b3fac1111c9e3617b3d7b92bdc95722ea10 [file] [log] [blame]
pipeline {
agent {
kubernetes {
defaultContainer 'builder'
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: builder
image: ${params.TF_A_SYSTEM}
resources:
requests:
cpu: '4'
memory: '4Gi'
command:
- cat
tty: true
"""
}
}
parameters {
string(name: 'TF_A_FLAGS',
defaultValue: '-j',
description: 'Arguments passed verbatim to make')
choice(name: 'TF_A_TOOLCHAIN',
description: 'Toolchain to build TF-A with.',
choices: [
'arm-gnu-aarch64-12.3.rel1',
'arm-gnu-aarch64-13.2.rel1',
'arm-gnu-aarch64-13.3.rel1',
'arm-gnu-aarch64-14.2.rel1',
])
choice(name: 'TF_A_SYSTEM',
description: 'System Docker image to build TF-A within.',
choices: [
'ubuntu:20.04',
'ubuntu:22.04',
'ubuntu:24.04',
])
string(name: 'TF_A_GIT_URL',
description: 'Git repository URL.',
defaultValue: 'https://review.trustedfirmware.org/TF-A/trusted-firmware-a')
string(name: 'TF_A_GIT_REFSPEC',
description: 'Git refspec used when fetching.',
defaultValue: '+refs/heads/*:refs/remotes/origin/*')
string(name: 'TF_A_GIT_REFNAME',
description: 'Git refname to check out and build.',
defaultValue: 'remotes/origin/master')
}
stages {
stage('Prepare System') {
when {
expression {
params.TF_A_SYSTEM.startsWith('ubuntu:')
}
}
steps {
sh '''
set -eux
apt-get update
apt-get install -y --no-install-recommends \
build-essential device-tree-compiler
'''
}
}
stage('Prepare Toolchain') {
when {
expression {
params.TF_A_TOOLCHAIN == 'arm-gnu-aarch64-14.2.rel1'
}
}
steps {
sh """
set -eux
mkdir -p "/opt/${params.TF_A_TOOLCHAIN}"
curl -fsSL https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-x86_64-aarch64-none-elf.tar.xz |
tar -xJf - -C "/opt/${params.TF_A_TOOLCHAIN}" --strip-components=1
"""
}
}
stage('Checkout') {
steps {
checkout([ $class: 'GitSCM',
branches: [[name: params.TF_A_GIT_REFNAME]],
userRemoteConfigs: [[
url: params.TF_A_GIT_URL,
refspec: params.TF_A_GIT_REFSPEC,
]],
extensions: [
[ $class: 'CloneOption', shallow: true, depth: 1 ],
[ $class: 'SubmoduleOption', recursiveSubmodules: true ],
]
])
}
}
stage('Build') {
environment {
PATH = "/opt/${params.TF_A_TOOLCHAIN}/bin:${env.PATH}"
TF_A_FLAGS = "${params.TF_A_FLAGS}"
}
steps {
sh 'make ${TF_A_FLAGS} > build.log 2>&1'
}
}
}
post {
always {
archiveArtifacts(artifacts: "build.log, build/**", fingerprint: true)
cleanWs(deleteDirs: true)
}
}
}