diff --git a/Jenkinsfile b/Jenkinsfile index 3589d35..ed42022 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,4 @@ -node { +void checkout_hifive_vp() { checkout([ $class: 'GitSCM', branches: [[name: '*/develop']], @@ -23,60 +23,102 @@ node { url: 'https://git.minres.com/VP/HIFIVE1-VP.git' ]] ]) - stage('build VP ubuntu/18.04'){ - def ubuntu = docker.image('ubuntu-18.04') - ubuntu.inside('-u jenkins') { - try { - sh("conan profile new default --detect --force") - sh("conan profile update settings.compiler.libcxx=libstdc++11 default") - sh("conan remote add minres https://api.bintray.com/conan/minres/conan-repo") - sh("conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan") - } - catch (exc) { - echo 'Conan configured' - } - sh("rm -rf HIFIVE1-VP/build-ubuntu") - sh("mkdir -p HIFIVE1-VP/build-ubuntu") - sh("cd HIFIVE1-VP && git submodule update --recursive") - sh("cd HIFIVE1-VP/build-ubuntu && MAKE_FLAGS='-j4' cmake .. && make -j4") - fingerprint 'HIFIVE1-VP/build-ubuntu/bin/riscv.vp' - } +} + +void build_hifive_vp() { + try { + sh("conan profile new default --detect --force") + sh("conan profile update settings.compiler.libcxx=libstdc++11 default") + sh("conan remote add minres https://api.bintray.com/conan/minres/conan-repo --force") + sh("conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan --force") + } + catch (exc) { + echo 'Conan configured' + } + sh("rm -rf HIFIVE1-VP/build-ubuntu") + sh("mkdir -p HIFIVE1-VP/build-ubuntu") + sh("cd HIFIVE1-VP && git submodule update --recursive") + sh("cd HIFIVE1-VP/build-ubuntu && MAKE_FLAGS='-j4' cmake .. && make -j4") + fingerprint 'HIFIVE1-VP/build-ubuntu/bin/riscv.vp' +} + +void build_hifive_without_scv() { + try { + sh("conan profile new default --detect --force") + sh("conan profile update settings.compiler.libcxx=libstdc++11 default") + sh("conan remote add minres https://api.bintray.com/conan/minres/conan-repo") + sh("conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan") + } + catch (exc) { + echo 'Conan configured' + } + sh("rm -rf HIFIVE1-VP/build-ubuntu") + sh("mkdir -p HIFIVE1-VP/build-ubuntu") + sh("cd HIFIVE1-VP && git submodule update --recursive") + sh("cd HIFIVE1-VP/build-ubuntu && MAKE_FLAGS='-j4' cmake .. -DENABLE_SCV=FALSE && make -j4") + fingerprint 'HIFIVE1-VP/build-ubuntu/bin/riscv.vp' +} + + +pipeline { + agent none + + options { + // using the Timestamper plugin we can add timestamps to the console log + timestamps() + skipStagesAfterUnstable() } - stage('build VP fedora/28'){ - def centos = docker.image('fedora28') - centos.inside('-u jenkins') { - try { - sh("conan profile new default --detect --force") - sh("conan profile update settings.compiler.libcxx=libstdc++11 default") - sh("conan remote add minres https://api.bintray.com/conan/minres/conan-repo") - sh("conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan") - } - catch (exc) { - echo 'Conan configured' - } - sh("rm -rf HIFIVE1-VP/build-fedora") - sh("mkdir HIFIVE1-VP/build-fedora") - sh("cd HIFIVE1-VP/build-fedora && MAKE_FLAGS='-j4' cmake .. && make -j4") - fingerprint 'HIFIVE1-VP/build-fedora/bin/riscv.vp' - } - } - stage('build VP without SCV'){ - def ubuntu = docker.image('ubuntu-18.04') - ubuntu.inside('-u jenkins') { - try { - sh("conan profile new default --detect --force") - sh("conan profile update settings.compiler.libcxx=libstdc++11 default") - sh("conan remote add minres https://api.bintray.com/conan/minres/conan-repo") - sh("conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan") - } - catch (exc) { - echo 'Conan configured' - } - sh("rm -rf HIFIVE1-VP/build-ubuntu") - sh("mkdir -p HIFIVE1-VP/build-ubuntu") - sh("cd HIFIVE1-VP && git submodule update --recursive") - sh("cd HIFIVE1-VP/build-ubuntu && MAKE_FLAGS='-j4' cmake .. -DENABLE_SCV=FALSE && make -j4") - fingerprint 'HIFIVE1-VP/build-ubuntu/bin/riscv.vp' - } + + stages { + stage('HiFive-VP pipeline') { + parallel { + stage('ubuntu/18.04'){ + agent {docker { image 'ubuntu-18.04' } } + stages { + stage('Checkout on Ubuntu') { + steps { + checkout_hifive_vp() + } + } + stage('Build on Ubuntu') { + steps { + build_hifive_vp() + } + } + } + } + stage('Fedora/28'){ + agent {docker { image 'fedora28' } } + stages { + stage('Checkout on Fedora') { + steps { + checkout_hifive_vp() + } + } + stage('Build on Fedora') { + steps { + build_hifive_vp() + } + } + } + } + stage('Build without SCV'){ + agent {docker { image 'ubuntu-18.04' } } + stages { + stage('Checkout on Ubuntu') { + steps { + checkout_hifive_vp() + } + } + stage('Build without SCV') { + steps { + build_hifive_without_scv() + } + } + } + } + + } + } } }