179 lines
5.3 KiB
Plaintext
179 lines
5.3 KiB
Plaintext
|
|
@Library('xmos_jenkins_shared_library@v0.25.0')
|
||
|
|
|
||
|
|
def runningOn(machine) {
|
||
|
|
println "Stage running on:"
|
||
|
|
println machine
|
||
|
|
}
|
||
|
|
|
||
|
|
// run pytest with common flags for project. any passed in though extra args will
|
||
|
|
// be appended
|
||
|
|
def localRunPytest(String extra_args="") {
|
||
|
|
catchError{
|
||
|
|
sh "python -m pytest --junitxml=pytest_result.xml -rA -v --durations=0 -o junit_logging=all ${extra_args}"
|
||
|
|
}
|
||
|
|
junit "pytest_result.xml"
|
||
|
|
}
|
||
|
|
|
||
|
|
getApproval()
|
||
|
|
|
||
|
|
pipeline {
|
||
|
|
agent none
|
||
|
|
environment {
|
||
|
|
REPO = 'lib_src'
|
||
|
|
VIEW = getViewName(REPO)
|
||
|
|
PYTHON_VERSION = "3.10.5"
|
||
|
|
VENV_DIRNAME = ".venv"
|
||
|
|
XMOSDOC_VERSION = "v4.0"
|
||
|
|
}
|
||
|
|
options {
|
||
|
|
skipDefaultCheckout()
|
||
|
|
timestamps()
|
||
|
|
}
|
||
|
|
parameters {
|
||
|
|
string(
|
||
|
|
name: 'TOOLS_VERSION',
|
||
|
|
defaultValue: '15.2.1',
|
||
|
|
description: 'The XTC tools version'
|
||
|
|
)
|
||
|
|
}
|
||
|
|
stages {
|
||
|
|
stage('Build and Test') {
|
||
|
|
when {
|
||
|
|
expression { !env.GH_LABEL_DOC_ONLY.toBoolean() }
|
||
|
|
}
|
||
|
|
agent {
|
||
|
|
label 'x86_64&&docker' // These agents have 24 cores so good for parallel xsim runs
|
||
|
|
}
|
||
|
|
stages {
|
||
|
|
stage('Get repo') {
|
||
|
|
steps {
|
||
|
|
sh "mkdir ${REPO}"
|
||
|
|
// source checks require the directory
|
||
|
|
// name to be the same as the repo name
|
||
|
|
dir("${REPO}") {
|
||
|
|
// checkout repo
|
||
|
|
checkout scm
|
||
|
|
sh 'git submodule update --init --recursive --depth 1'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stage ("Create Python environment") {
|
||
|
|
steps {
|
||
|
|
dir("${REPO}") {
|
||
|
|
createVenv('requirements.txt')
|
||
|
|
withVenv {
|
||
|
|
sh 'pip install -r requirements.txt'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stage('Library checks') {
|
||
|
|
steps {
|
||
|
|
dir("${REPO}") {
|
||
|
|
sh 'git clone git@github.com:xmos/infr_apps.git'
|
||
|
|
sh 'git clone git@github.com:xmos/infr_scripts_py.git'
|
||
|
|
// These are needed for xmake legacy build and also changelog check
|
||
|
|
sh 'git clone git@github.com:xmos/lib_logging.git'
|
||
|
|
sh 'git clone git@github.com:xmos/lib_xassert.git'
|
||
|
|
withVenv {
|
||
|
|
sh 'pip install -e infr_scripts_py'
|
||
|
|
sh 'pip install -e infr_apps'
|
||
|
|
dir("tests") {
|
||
|
|
withEnv(["XMOS_ROOT=.."]) {
|
||
|
|
localRunPytest('-s test_lib_checks.py -vv')
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stage('Test xmake build') {
|
||
|
|
steps {
|
||
|
|
runningOn(env.NODE_NAME)
|
||
|
|
dir("${REPO}") {
|
||
|
|
withTools(params.TOOLS_VERSION) {
|
||
|
|
withVenv {
|
||
|
|
dir("tests") {
|
||
|
|
localRunPytest('-k "legacy" -vv')
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stage('Run doc python') {
|
||
|
|
steps {
|
||
|
|
runningOn(env.NODE_NAME)
|
||
|
|
dir("${REPO}") {
|
||
|
|
withTools(params.TOOLS_VERSION) {
|
||
|
|
withVenv {
|
||
|
|
sh "sh doc/build_docs_ci.sh $XMOSDOC_VERSION"
|
||
|
|
archiveArtifacts artifacts: "doc_build.zip", allowEmptyArchive: true
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stage('Tests XS2') {
|
||
|
|
steps {
|
||
|
|
runningOn(env.NODE_NAME)
|
||
|
|
dir("${REPO}") {
|
||
|
|
withTools(params.TOOLS_VERSION) {
|
||
|
|
withVenv {
|
||
|
|
sh 'mkdir -p build'
|
||
|
|
dir("build") {
|
||
|
|
sh 'rm CMakeCache.txt'
|
||
|
|
sh 'cmake --toolchain ../xmos_cmake_toolchain/xs2a.cmake ..'
|
||
|
|
sh 'make test_ds3_voice test_us3_voice test_unity_gain_voice -j'
|
||
|
|
}
|
||
|
|
dir("tests") {
|
||
|
|
localRunPytest('-n auto -k "xs2" -vv')
|
||
|
|
}
|
||
|
|
dir("build") {
|
||
|
|
sh 'rm CMakeCache.txt' // Cleanup XS2 cmake cache for next stage
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
stage('Tests XS3') {
|
||
|
|
steps {
|
||
|
|
runningOn(env.NODE_NAME)
|
||
|
|
dir("${REPO}") {
|
||
|
|
withTools(params.TOOLS_VERSION) {
|
||
|
|
withVenv {
|
||
|
|
dir("tests") {
|
||
|
|
localRunPytest('-m prepare') // Do all pre work like building and generating golden ref where needed
|
||
|
|
|
||
|
|
// FF3 HiFi tests for OS3 and DS3
|
||
|
|
localRunPytest('-m main -n auto -k "hifi_ff3" -vv')
|
||
|
|
|
||
|
|
// ASRC and SSRC tests across all in/out freqs and deviations (asrc only)
|
||
|
|
localRunPytest('-m main -n auto -k "mrhf" -vv')
|
||
|
|
archiveArtifacts artifacts: "mips_report*.csv", allowEmptyArchive: true
|
||
|
|
|
||
|
|
// VPU enabled ff3 and rat tests
|
||
|
|
localRunPytest('-m main -k "vpu" -vv') // xdist not working yet so no -n auto
|
||
|
|
|
||
|
|
// Profile the ASRC
|
||
|
|
localRunPytest('-m main -k "profile_asrc" -vv')
|
||
|
|
sh 'tree'
|
||
|
|
archiveArtifacts artifacts: "gprof_results/*.png", allowEmptyArchive: true
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
post {
|
||
|
|
cleanup {
|
||
|
|
xcoreCleanSandbox()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|