gerrit integration
Change-Id: I2fdce157a11a086a40d9f7e6c97cab3620b43585 Reviewed-on: https://review.gerrithub.io/c/storj/storj/+/458670 Tested-by: <robot@storj.io> Reviewed-by: Jeff Wendling <jeff@storj.io> Reviewed-by: Stefan Benten <mail@stefan-benten.de>
This commit is contained in:
parent
9d670b33b3
commit
2b30887455
117
Jenkinsfile.gerrit
Normal file
117
Jenkinsfile.gerrit
Normal file
@ -0,0 +1,117 @@
|
||||
pipeline {
|
||||
agent {
|
||||
dockerfile {
|
||||
filename 'Dockerfile.jenkins'
|
||||
args '-u root:root -v "/tmp/gomod":/go/pkg/mod'
|
||||
}
|
||||
}
|
||||
options {
|
||||
timeout(time: 10, unit: 'MINUTES')
|
||||
}
|
||||
stages {
|
||||
stage('Start') {
|
||||
steps { gerritReview message: 'Building' }
|
||||
}
|
||||
|
||||
stage('Build') {
|
||||
steps {
|
||||
checkout scm
|
||||
|
||||
sh 'mkdir .build'
|
||||
|
||||
// make a backup of the mod file in case, for later linting
|
||||
sh 'cp go.mod .build/go.mod.orig'
|
||||
// download dependencies
|
||||
sh 'go mod download'
|
||||
|
||||
sh 'go install -v -race ./...'
|
||||
sh 'make install-sim'
|
||||
|
||||
sh 'service postgresql start'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Verification') {
|
||||
parallel {
|
||||
stage('Lint') {
|
||||
steps {
|
||||
sh 'go run ./scripts/check-copyright.go'
|
||||
sh 'go run ./scripts/check-imports.go -race ./...'
|
||||
sh 'go run ./scripts/check-peer-constraints.go -race -fail=false'
|
||||
sh 'go run ./scripts/protobuf.go --protoc=$HOME/protoc/bin/protoc lint'
|
||||
sh 'go run ./scripts/protobuf.go --protoc=$HOME/protoc/bin/protoc check-lock'
|
||||
sh 'bash ./scripts/check-dbx-version.sh'
|
||||
sh 'golangci-lint -j=4 run'
|
||||
sh 'go run scripts/check-mod-tidy.go -mod .build/go.mod.orig'
|
||||
sh 'make check-satellite-config-lock'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Tests') {
|
||||
environment {
|
||||
STORJ_POSTGRES_TEST = 'postgres://postgres@localhost/teststorj?sslmode=disable'
|
||||
COVERFLAGS = "${ env.BRANCH_NAME != 'master' ? '' : '-coverprofile=.build/coverprofile -coverpkg=-coverpkg=storj.io/storj/bootstrap/...,storj.io/storj/internal/...,storj.io/storj/lib/...,storj.io/storj/pkg/...,storj.io/storj/satellite/...,storj.io/storj/storage/...,storj.io/storj/storagenode/...,storj.io/storj/uplink/...,storj.io/storj/versioncontrol/...'}"
|
||||
}
|
||||
steps {
|
||||
sh 'psql -U postgres -c \'create database teststorj;\''
|
||||
sh 'go run scripts/use-ports.go -from 1024 -to 10000 &'
|
||||
sh 'go test -vet=off $COVERFLAGS -timeout 9m -json -race ./... 2>&1 | tee .build/tests.json | go run ./scripts/xunit.go -out .build/tests.xml'
|
||||
sh 'go run scripts/check-clean-directory.go'
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
sh script: 'cat .build/tests.json | tparse -all -top -slow 100', returnStatus: true
|
||||
archiveArtifacts artifacts: '.build/tests.json'
|
||||
junit '.build/tests.xml'
|
||||
|
||||
script {
|
||||
if(fileExists(".build/coverprofile")){
|
||||
sh script: 'go run ./scripts/cover-remove-generated.go < .build/coverprofile > .build/clean.coverprofile', returnStatus: true
|
||||
sh script: 'gocov convert .build/clean.coverprofile > .build/cover.json', returnStatus: true
|
||||
|
||||
sh script: 'gocov-html < .build/cover.json > .build/cover.html', returnStatus: true
|
||||
publishHTML target: [
|
||||
allowMissing: false,
|
||||
alwaysLinkToLastBuild: false,
|
||||
keepAll: false,
|
||||
reportDir: '.build',
|
||||
reportFiles: 'cover.html',
|
||||
reportName: 'Coverage Details'
|
||||
]
|
||||
|
||||
sh script: 'gocov-xml < .build/cover.json > .build/cobertura.xml', returnStatus: true
|
||||
cobertura coberturaReportFile: '.build/cobertura.xml'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Integration') {
|
||||
environment {
|
||||
// use different hostname to avoid port conflicts
|
||||
STORJ_NETWORK_HOST4 = '127.0.0.2'
|
||||
STORJ_NETWORK_HOST6 = '127.0.0.2'
|
||||
|
||||
STORJ_SIM_POSTGRES = 'postgres://postgres@localhost/teststorj2?sslmode=disable'
|
||||
}
|
||||
|
||||
steps {
|
||||
sh 'psql -U postgres -c \'create database teststorj2;\''
|
||||
sh 'make test-sim'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
success { gerritReview labels: [Verified: 1], message: 'Success' }
|
||||
failure { gerritReview labels: [Verified: -1], message: 'Failure' }
|
||||
always {
|
||||
sh "chmod -R 777 ." // ensure Jenkins agent can delete the working directory
|
||||
deleteDir()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user