pipeline { agent any environment { GOPATH = "${WORKSPACE}" GO111MODULE = "on" PROJ_DIR = "${WORKSPACE}/src/github.com/33cn/plugin" } options { timeout(time: 2,unit: 'HOURS') retry(1) timestamps() gitLabConnection('gitlab33') gitlabBuilds(builds: ['check', 'build', 'test', 'deploy']) checkoutToSubdirectory "src/github.com/33cn/plugin" } stages { stage('check') { steps { dir("${PROJ_DIR}"){ gitlabCommitStatus(name: 'check'){ sh "git branch;git status" sh "make auto_ci branch=${env.gitlabSourceBranch}" } } } } stage('build') { steps { dir("${env.PROJ_DIR}"){ gitlabCommitStatus(name: 'build'){ sh 'make checkgofmt' sh 'make linter' } } } } stage('test'){ agent { docker{ image 'suyanlong/chain33-run:latest' } } environment { GOPATH = "${WORKSPACE}" PROJ_DIR = "${WORKSPACE}/src/github.com/33cn/plugin" } steps { dir("${env.PROJ_DIR}"){ gitlabCommitStatus(name: 'test'){ sh 'make test' //sh 'export CC=clang-5.0 && make msan' } } } } stage('deploy') { steps { dir("${PROJ_DIR}"){ gitlabCommitStatus(name: 'deploy'){ sh 'make build_ci' sh "cd build && mkdir ${env.BUILD_NUMBER} && cp ci/* ${env.BUILD_NUMBER} -r && cp chain33* Dockerfile* docker* *.sh ${env.BUILD_NUMBER}/ && cd ${env.BUILD_NUMBER}/ && ./docker-compose-pre.sh run ${env.BUILD_NUMBER} all " } } } post { always { dir("${PROJ_DIR}"){ sh "cd build/${env.BUILD_NUMBER} && ./docker-compose-pre.sh down ${env.BUILD_NUMBER} all && cd .. && rm -rf ${env.BUILD_NUMBER} && cd .. && make clean " } } } } } post { always { echo 'One way or another, I have finished' // clean up our workspace deleteDir() } success { echo 'I succeeeded!' echo "email user: ${gitlabUserEmail}" mail to: "${gitlabUserEmail}", subject: "Successed Pipeline: ${currentBuild.fullDisplayName}", body: "this is success with ${env.BUILD_URL}" } failure { echo 'I failed ' echo "email user: ${gitlabUserEmail}" mail to: "${gitlabUserEmail}", subject: "Failed Pipeline: ${currentBuild.fullDisplayName}", body: "Something is wrong with ${env.BUILD_URL}" } } }