status-go/_assets/ci/Jenkinsfile.tests
Jakub Sokołowski 9dd80e7f1e
ci: use Nix shell to provide Android SDK for builds
Installing the SDK via Ansible is prone to error and not exactly
reproduceable. This way we can also track the exact tooling version as
used in Status Mobile app:
https://github.com/status-im/status-mobile/blob/develop/nix/pkgs.nix

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-12-05 15:48:27 +01:00

73 lines
1.6 KiB
Plaintext

library 'status-jenkins-lib@v1.6.4'
pipeline {
agent { label 'linux && x86_64 && go-1.18' }
parameters {
string(
name: 'BRANCH',
defaultValue: 'develop',
description: 'Name of branch to build.'
)
}
options {
timestamps()
disableConcurrentBuilds()
/* manage how many builds we keep */
buildDiscarder(logRotator(
numToKeepStr: '5',
daysToKeepStr: '30',
))
}
environment {
TARGET = 'linux'
GOPATH = "${WORKSPACE_TMP}/go"
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('Lint') {
steps { script {
nix.shell('make install-lint', pure: false)
nix.shell('make lint', pure: false)
} }
}
stage('Canary') {
steps { script {
nix.shell('make canary-test', pure: false)
} }
}
stage('Unit Tests') {
steps { script {
docker.image('postgres:9.6-alpine').withRun(
'-e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432'
) { c ->
nix.shell('make test-unit V=1', pure: false)
}
} }
}
} // stages
} // pipeline