relay/Jenkinsfile
Tyr Mactire 73e3f41856
use go-lib in git.ptzo.gdn (#163)
Reviewed-on: https://git.ptzo.gdn/feditools/relay/pulls/163
Co-authored-by: Tyr Mactire <tyr@pettingzoo.co>
Co-committed-by: Tyr Mactire <tyr@pettingzoo.co>
2022-11-27 00:23:47 +00:00

93 lines
2.3 KiB
Groovy

pipeline {
environment {
BUILD_IMAGE = 'gobuild:1.19'
BUILD_ARGS = '-e HOME=${WORKSPACE} -v /var/lib/jenkins/go/pkg:/go/pkg'
PATH = '/go/bin:~/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin'
composeFile = "deployments/docker-compose-integration.yaml"
networkName = "network-${env.BUILD_TAG}"
registryCredential = 'docker-io-feditools'
scannerHome = tool 'SonarScanner 4.0'
}
agent any
stages {
stage('Start External Test Requirements'){
steps{
script{
retry(2) {
sh """NETWORK_NAME="${networkName}" docker-compose -f ${composeFile} pull
NETWORK_NAME="${networkName}" docker-compose -p ${env.BUILD_TAG} -f ${composeFile} up -d"""
}
parallel(
postgres: {
retry(30) {
sleep 1
sh "docker run -t --rm --network=${networkName} subfuzion/netcat -z postgres 5432"
}
}
)
}
}
}
stage('Test') {
agent {
docker {
image "${BUILD_IMAGE}"
args "--network ${networkName} ${BUILD_ARGS}"
reuseNode true
}
}
steps {
script {
withCredentials([
file(credentialsId: 'tls-localhost-crt', variable: 'MB_TLS_CERT'),
file(credentialsId: 'tls-localhost-key', variable: 'MB_TLS_KEY')
]) {
sh "go test --tags=postgres -race -json -coverprofile=coverage.out -covermode=atomic ./... > test-report.out"
}
}
}
}
stage('SonarQube analysis') {
steps {
withSonarQubeEnv('PupHaus') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
stage('Build Snapshot') {
agent {
docker {
image "${BUILD_IMAGE}"
args "--network ${networkName} ${BUILD_ARGS}"
reuseNode true
}
}
when {
anyOf {
changeRequest()
branch 'devel'
}
}
steps {
script {
sh '/go/bin/goreleaser build --rm-dist --snapshot'
}
}
}
}
post {
always {
sh """NETWORK_NAME="${networkName}" docker-compose -p ${env.BUILD_TAG} -f ${composeFile} down"""
}
}
}