pipeline {
agent any
tools {
go 'go-1.15.6'
}
environment {
GO115MODULE = 'on'
CGO_ENABLED = 0
GOPATH = '/tmp/gopath'
}
stages {
stage('Pre Test') {
steps {
echo 'Installing dependencies'
sh 'go version'
sh 'go get -u golang.org/x/lint/golint'
}
}
stage('Compile') {
steps {
sh './do.sh build'
}
}
stage('Test') {
parallel{
stage('go vet') {
steps {
echo 'Running vetting'
sh './do.sh _vet'
}
}
stage('test') {
environment {
PATH="${env.PATH}:${env.GOPATH}/bin"
}
steps {
echo 'Running test'
sh './do.sh _test'
sh "go get github.com/tebeka/go2xunit"
sh "go2xunit < tests.out -output tests.xml"
junit "tests.xml"
// convert coverage
sh "go get github.com/t-yuki/gocover-cobertura"
sh "gocover-cobertura < coverage.out > coverage.xml"
cobertura coberturaReportFile: 'coverage.xml'
}
}
stage('lint') {
environment {
PATH="${env.PATH}:${env.GOPATH}/bin"
}
steps {
sh './do.sh _lint'
}
}
}
}
}
post {
always {
mail (bcc: '',
body: "Project: ${env.JOB_NAME}
Build Number: ${env.BUILD_NUMBER}
Build URL: ${env.BUILD_URL}", cc: '', charset: 'UTF-8', from: 'jenkins@jenkins.deepak.science', mimeType: 'text/html', replyTo: 'dmallubhotla+jenkins@gmail.com', subject: "${env.JOB_NAME} #${env.BUILD_NUMBER}: Build ${currentBuild.currentResult}", to: "dmallubhotla+ci@gmail.com")
}
}
}