create Jenkins pipeline

This commit is contained in:
Stanislaw Kaushanski 2021-06-02 11:13:19 +02:00
parent 3a3afcfd6f
commit c72b02f99f
3 changed files with 109 additions and 1 deletions

106
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,106 @@
void checkout_project() {
checkout([
$class: 'GitSCM',
branches: [
[name: '*/master']
],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'CleanBeforeCheckout'],
[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: true, reference: '', trackingSubmodules: false]
],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: 'gitea-jenkins', url: 'https://git.minres.com/SystemC/SystemC-Components-Test.git']
]
])
}
void setup_conan_centos() {
sh"""
conan profile new default --detect --force
conan profile update settings.compiler.libcxx=libstdc++ default
"""
}
void setup_conan_ubuntu() {
sh"""
conan profile new default --detect --force
conan profile update settings.compiler.libcxx=libstdc++11 default
"""
}
void build_project() {
sh"""
mkdir build; cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j10 VERBOSE=1
"""
}
void test_project() {
sh 'cd build; ctest -C Debug -V -j10 '
}
pipeline {
agent none
options {
// using the Timestamper plugin we can add timestamps to the console log
timestamps()
skipStagesAfterUnstable()
}
stages {
stage('SCC test pipeline') {
parallel {
stage('U18.04') {
agent {docker { image 'ubuntu-18.04' } }
stages {
stage('Ubuntu18.04: checkout') { steps { checkout_project() }}
stage('Ubuntu18.04: Conan') { steps { setup_conan_ubuntu() }}
stage('Ubuntu18.04: Build') { steps { build_project() }}
stage('Ubuntu18.04: Test') { steps { test_project() }}
}
}
stage('U20.04') {
agent {docker { image 'ubuntu-20.04' } }
stages {
stage('Ubuntu20.04: checkout') { steps { checkout_project() }}
stage('Ubuntu20.04: Conan') { steps { setup_conan_ubuntu() }}
stage('Ubuntu20.04: Build') { steps { build_project() }}
stage('Ubuntu20.04: Test') { steps { test_project() }}
}
}
stage('COS7') {
agent {docker { image 'centos7' } }
stages {
stage('CentOS7: checkout') { steps { checkout_project() }}
stage('CentOS7: conan') { steps { setup_conan_centos() }}
stage('CentOS7: build') { steps { build_project() }}
stage('CentOS7: test') { steps { test_project() }}
}
}
stage('COS8') {
agent {docker { image 'centos8' } }
stages {
stage('CentOS8: checkout') { steps { checkout_project() }}
stage('CentOS8: conan') { steps { setup_conan_ubuntu() }}
stage('CentOS8: build') { steps { build_project() }}
stage('CentOS8: test') { steps { test_project() }}
}
}
}
}
}
post {
success {
echo 'SCC tests PASSED!'
}
failure {
mail to: 'stas@minres.com',
subject: "SCC Test Pipeline Failed: ${currentBuild.fullDisplayName}",
body: "Something is wrong with ${env.BUILD_URL}"
}
}
}

View File

@ -7,7 +7,7 @@ proc ModulesHelp { } {
puts stderr "\tThis module loads PATHs and variables for SCC tests." puts stderr "\tThis module loads PATHs and variables for SCC tests."
} }
set distro [exec /bin/lsb_release -i -s] set distro [exec /usr/bin/lsb_release -i -s]
if { $distro == "CentOS" && ![info exists ::env(PROJECT)] && ![info exists ::env(PCP_DIR)] } { if { $distro == "CentOS" && ![info exists ::env(PROJECT)] && ![info exists ::env(PCP_DIR)] } {
puts stderr "Don't forget to execute 'scl enable devtoolset-7 llvm-toolset-7 bash'" puts stderr "Don't forget to execute 'scl enable devtoolset-7 llvm-toolset-7 bash'"
} }

View File

@ -11,3 +11,5 @@
[options] [options]
fmt:header_only=True fmt:header_only=True
systemc:shared=True
systemc-cci:shared=True