library 'status-jenkins-lib@v1.7.0' pipeline { agent { label 'linux && x86_64 && nix-2.11' } parameters { string( name: 'BRANCH', defaultValue: 'develop', description: 'Name of branch to build.' ) } options { timestamps() /* Prevent Jenkins jobs from running forever */ timeout(time: 30, unit: 'MINUTES') disableConcurrentBuilds() /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '5', daysToKeepStr: '30', )) } environment { TARGET = 'tests' DB_CONT = 'status-go-test-db' TMPDIR = "${WORKSPACE_TMP}" GOPATH = "${WORKSPACE_TMP}/go" GOCACHE = "${WORKSPACE_TMP}/gocache" PATH = "${PATH}:${GOPATH}/bin" REPO_SRC = "${GOPATH}/src/github.com/status-im/status-go" } stages { stage('Prep') { steps { /* Go needs to find status-go in GOPATH. */ sh "mkdir -p \$(dirname ${REPO_SRC})" sh "ln -s ${WORKSPACE} ${REPO_SRC}" } } stage('Vendor Check') { steps { script { nix.shell('make install-modvendor', pure: false) nix.shell('make vendor', pure: false) /* fail build if vendoring hasn't been done */ nix.shell('git diff --exit-code --no-color --stat vendor/') } } } stage('Migration') { steps { script { nix.shell('make migration-check', pure: false) } } } stage('Lint') { steps { script { nix.shell('make lint', pure: true) } } } stage('Canary') { steps { script { nix.shell('make canary-test', pure: true) } } } stage('Unit Tests') { steps { script { db = docker.image('postgres:9.6-alpine').withRun([ "--name=${DB_CONT}", '--env=POSTGRES_HOST_AUTH_METHOD=trust', '--publish=5432:5432', ].join(' ')) { c -> nix.shell('make test-unit V=1', pure: false) } } } post { cleanup { /* Leftover DB containers. */ sh "docker rm ${DB_CONT} || true" } } } } // stages post { always { script { env.PKG_URL = "${currentBuild.absoluteUrl}/consoleText" } junit '**/report.xml' } success { script { github.notifyPR(true) } } failure { script { github.notifyPR(false) } } cleanup { dir(env.TMPDIR) { deleteDir() } } } // post } // pipeline