Add Dockerfile/Jenkinsfile for Holly
parent
8361bd1027
commit
ba19208469
|
|
@ -0,0 +1,9 @@
|
||||||
|
FROM gcc:11.1
|
||||||
|
RUN apt-get clean && \
|
||||||
|
apt-get update -qq -y && \
|
||||||
|
apt-get install curl python3 python3-pip libncurses5 -y
|
||||||
|
RUN pip3 install pre-commit ecdsa
|
||||||
|
WORKDIR /work
|
||||||
|
ADD utils/bootstrap.py bootstrap.py
|
||||||
|
RUN gcc --version
|
||||||
|
RUN python3 bootstrap.py
|
||||||
|
|
@ -0,0 +1,116 @@
|
||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
dockerfile {
|
||||||
|
label 'docker'
|
||||||
|
filename 'utils/holly/Dockerfile'
|
||||||
|
additionalBuildArgs '-t prusa-firmware-mmu'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters {
|
||||||
|
string(name: 'VERSION_SUFFIX', defaultValue: '<default>', description: 'Specify custom version suffix for the build (e.g. "-RC1+1010"). Set to "<default>" to use the default one. Leave empty to make a final-version build without any suffix.')
|
||||||
|
string(name: 'VERSION_SUFFIX_SHORT', defaultValue: '<default>', description: 'Specify custom version suffix for the build (e.g. "-RC1"). Set to "<default>" to use the default one. Leave empty to make a final-version build without any suffix.')
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Prepare Build Stages') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
// required configurations
|
||||||
|
def configurations = [
|
||||||
|
[build_type: "release"],
|
||||||
|
]
|
||||||
|
|
||||||
|
// prepare version suffix
|
||||||
|
def commit_nr = sh(script: 'git rev-list HEAD --count', returnStdout: true).trim()
|
||||||
|
def short_suffix
|
||||||
|
def full_suffix
|
||||||
|
if (env.CHANGE_ID) {
|
||||||
|
// This is a PR build
|
||||||
|
short_suffix = "-BETA+${commit_nr}"
|
||||||
|
full_suffix = "${short_suffix}.PR${env.CHANGE_ID}.B${env.BUILD_NUMBER}"
|
||||||
|
} else if (env.BRANCH_NAME.startsWith("RELEASE-")) {
|
||||||
|
// This is an RC build
|
||||||
|
short_suffix = "-RC+${commit_nr}"
|
||||||
|
full_suffix = "${short_suffix}.B${env.BUILD_NUMBER}"
|
||||||
|
} else {
|
||||||
|
// This is build of an ordinary branch (not a release branch)
|
||||||
|
short_suffix = "-BETA+${commit_nr}"
|
||||||
|
def branch_spec = env.BRANCH_NAME.replaceAll("_", "-")
|
||||||
|
full_suffix = "${short_suffix}.BRANCH-${branch_spec}.B${env.BUILD_NUMBER}"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.VERSION_SUFFIX != '<default>') {
|
||||||
|
full_suffix = params.VERSION_SUFFIX
|
||||||
|
}
|
||||||
|
if (params.VERSION_SUFFIX_SHORT != '<default>') {
|
||||||
|
short_suffix = params.VERSION_SUFFIX_SHORT
|
||||||
|
}
|
||||||
|
|
||||||
|
// create the build stages
|
||||||
|
configurations.each { config ->
|
||||||
|
stage("Build - ${config.build_type}") {
|
||||||
|
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||||
|
sh """
|
||||||
|
ln -fs /.dependencies
|
||||||
|
python3 utils/build.py \
|
||||||
|
--build-type ${config.build_type} \
|
||||||
|
--generate-bbf \
|
||||||
|
--generate-dfu \
|
||||||
|
--no-store-output \
|
||||||
|
--version-suffix=${full_suffix} \
|
||||||
|
--version-suffix-short=${short_suffix} \
|
||||||
|
-DCUSTOM_COMPILE_OPTIONS:STRING=-Werror
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Check Formatting') {
|
||||||
|
when {
|
||||||
|
expression { env.CHANGE_TARGET }
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh """
|
||||||
|
export XDG_CACHE_HOME=\$PWD/.precommit
|
||||||
|
pre-commit install
|
||||||
|
pre-commit run \
|
||||||
|
--source remotes/origin/${env.CHANGE_TARGET} \
|
||||||
|
--origin HEAD \
|
||||||
|
--show-diff-on-failure \
|
||||||
|
--hook-stage manual
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Test') {
|
||||||
|
steps {
|
||||||
|
sh """
|
||||||
|
python3 utils/bootstrap.py
|
||||||
|
export PATH=\$PWD/.dependencies/cmake-3.15.5/bin:\$PWD/.dependencies/ninja-1.9.0:\$PATH
|
||||||
|
mkdir -p build-test
|
||||||
|
LD_LIBRARY_PATH=/usr/local/lib32 \$PWD/.dependencies/cmake-3.15.5/bin/ctest --build-and-test . build-test \
|
||||||
|
-DCMAKE_MAKE_PROGRAM=\$PWD/.dependencies/ninja-1.9.0/ninja \
|
||||||
|
--build-generator Ninja \
|
||||||
|
--build-target tests \
|
||||||
|
--test-command ctest
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
// archive build products
|
||||||
|
archiveArtifacts artifacts: 'build/products/*', fingerprint: true
|
||||||
|
// archive test products
|
||||||
|
archiveArtifacts artifacts: 'build-test/Testing/Temporary/LastTest.log'
|
||||||
|
}
|
||||||
|
cleanup {
|
||||||
|
deleteDir()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue