diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..363eda9 --- /dev/null +++ b/Jenkinsfile @@ -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}" + } + } +} \ No newline at end of file diff --git a/Modulefile b/Modulefile index aea43b5..2d31046 100644 --- a/Modulefile +++ b/Modulefile @@ -7,7 +7,7 @@ proc ModulesHelp { } { 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)] } { puts stderr "Don't forget to execute 'scl enable devtoolset-7 llvm-toolset-7 bash'" } diff --git a/conanfile.txt b/conanfile.txt index 9e85b22..368105a 100644 --- a/conanfile.txt +++ b/conanfile.txt @@ -11,3 +11,5 @@ [options] fmt:header_only=True + systemc:shared=True + systemc-cci:shared=True \ No newline at end of file