133 lines
5.9 KiB
Groovy
133 lines
5.9 KiB
Groovy
pipeline {
|
|
agent {
|
|
docker {
|
|
label 'main'
|
|
image docker.build("storj-ci", "--pull https://github.com/storj/ci.git").id
|
|
args '-u root:root --cap-add SYS_PTRACE -v "/tmp/gomod":/go/pkg/mod'
|
|
}
|
|
}
|
|
options {
|
|
timeout(time: 26, unit: 'MINUTES')
|
|
}
|
|
environment {
|
|
NPM_CONFIG_CACHE = '/tmp/npm/cache'
|
|
}
|
|
stages {
|
|
stage('Build') {
|
|
steps {
|
|
checkout scm
|
|
|
|
sh 'mkdir -p .build'
|
|
|
|
sh 'service postgresql start'
|
|
|
|
sh 'cockroach start-single-node --insecure --store=\'/tmp/crdb\' --listen-addr=localhost:26257 --http-addr=localhost:8080 --cache 512MiB --max-sql-memory 512MiB --background'
|
|
}
|
|
}
|
|
|
|
stage('Verification') {
|
|
parallel {
|
|
stage('Lint') {
|
|
steps {
|
|
sh 'check-copyright'
|
|
sh 'check-large-files'
|
|
sh 'check-imports ./...'
|
|
sh 'check-peer-constraints'
|
|
sh 'storj-protobuf --protoc=$HOME/protoc/bin/protoc lint'
|
|
sh 'storj-protobuf --protoc=$HOME/protoc/bin/protoc check-lock'
|
|
sh 'check-atomic-align ./...'
|
|
sh 'check-errs ./...'
|
|
sh './scripts/check-dependencies.sh'
|
|
sh 'staticcheck ./...'
|
|
sh 'golangci-lint --config /go/ci/.golangci.yml -j=2 run'
|
|
sh 'go-licenses check ./...'
|
|
sh './scripts/check-libuplink-size.sh'
|
|
}
|
|
}
|
|
|
|
stage('Tests') {
|
|
environment {
|
|
COVERFLAGS = "${ env.BRANCH_NAME != 'master' ? '' : '-coverprofile=.build/coverprofile -coverpkg=./...'}"
|
|
}
|
|
steps {
|
|
sh 'go vet ./...'
|
|
sh 'go test -parallel 4 -p 6 -vet=off $COVERFLAGS -timeout 20m -json -race ./... 2>&1 | tee .build/tests.json | xunit -out .build/tests.xml'
|
|
// TODO enable this later
|
|
// sh 'check-clean-directory'
|
|
}
|
|
|
|
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: 'filter-cover-profile < .build/coverprofile > .build/clean.coverprofile', returnStatus: true
|
|
sh script: 'gocov convert .build/clean.coverprofile > .build/cover.json', returnStatus: true
|
|
sh script: 'gocov-xml < .build/cover.json > .build/cobertura.xml', returnStatus: true
|
|
cobertura coberturaReportFile: '.build/cobertura.xml'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Testsuite') {
|
|
environment {
|
|
STORJ_COCKROACH_TEST = 'cockroach://root@localhost:26257/testcockroach?sslmode=disable'
|
|
STORJ_POSTGRES_TEST = 'postgres://postgres@localhost/teststorj?sslmode=disable'
|
|
COVERFLAGS = "${ env.BRANCH_NAME != 'master' ? '' : '-coverprofile=.build/coverprofile -coverpkg=./...'}"
|
|
}
|
|
steps {
|
|
sh 'cockroach sql --insecure --host=localhost:26257 -e \'create database testcockroach;\''
|
|
sh 'psql -U postgres -c \'create database teststorj;\''
|
|
dir('testsuite'){
|
|
sh 'go vet ./...'
|
|
sh 'go test -parallel 4 -p 6 -vet=off $COVERFLAGS -timeout 20m -json -race ./... 2>&1 | tee ../.build/testsuite.json | xunit -out ../.build/testsuite.xml'
|
|
}
|
|
// TODO enable this later
|
|
// sh 'check-clean-directory'
|
|
}
|
|
|
|
post {
|
|
always {
|
|
sh script: 'cat .build/testsuite.json | tparse -all -top -slow 100', returnStatus: true
|
|
archiveArtifacts artifacts: '.build/testsuite.json'
|
|
junit '.build/testsuite.xml'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Integration [storj/storj]') {
|
|
environment {
|
|
STORJ_POSTGRES_TEST = 'postgres://postgres@localhost/teststorj2?sslmode=disable'
|
|
}
|
|
steps {
|
|
sh 'psql -U postgres -c \'create database teststorj2;\''
|
|
dir('testsuite'){
|
|
sh 'go vet storj.io/storj/...'
|
|
sh 'go test -parallel 4 -p 6 -vet=off -timeout 20m -json storj.io/storj/... 2>&1 | tee ../.build/testsuite-storj.json | xunit -out ../.build/testsuite-storj.xml'
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
sh script: 'cat .build/testsuite-storj.json | tparse -all -top -slow 100', returnStatus: true
|
|
archiveArtifacts artifacts: '.build/testsuite-storj.json'
|
|
junit '.build/testsuite-storj.xml'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
sh "chmod -R 777 ." // ensure Jenkins agent can delete the working directory
|
|
deleteDir()
|
|
}
|
|
}
|
|
}
|