mirror of
https://github.com/status-im/status-go.git
synced 2025-01-18 10:42:07 +00:00
Jakub Sokołowski
9dd80e7f1e
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>
90 lines
2.3 KiB
Groovy
90 lines
2.3 KiB
Groovy
library 'status-jenkins-lib@v1.6.4'
|
|
|
|
pipeline {
|
|
agent { label 'linux' }
|
|
|
|
parameters {
|
|
string(
|
|
name: 'BRANCH',
|
|
defaultValue: 'develop',
|
|
description: 'Name of branch to build.'
|
|
)
|
|
booleanParam(
|
|
name: 'RELEASE',
|
|
defaultValue: false,
|
|
description: 'Enable to create a new release on GitHub and DigitalOcean Space.',
|
|
)
|
|
}
|
|
|
|
options {
|
|
disableConcurrentBuilds()
|
|
/* Go requires a certain directory structure */
|
|
checkoutToSubdirectory('src/github.com/status-im/status-go')
|
|
/* manage how many builds we keep */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '5',
|
|
daysToKeepStr: '30',
|
|
))
|
|
}
|
|
|
|
environment {
|
|
REPO = "${env.WORKSPACE}/src/github.com/status-im/status-go"
|
|
GOPATH = "${env.WORKSPACE}"
|
|
PATH = "/usr/local/go/bin:${env.PATH}:${env.GOPATH}/bin"
|
|
/* This will override the var in Makefile */
|
|
RELEASE_DIR = "${env.WORKSPACE}/pkg"
|
|
}
|
|
|
|
stages {
|
|
stage('Build') {
|
|
parallel {
|
|
stage('iOS') { steps { script {
|
|
ios = jenkins.Build('status-go/platforms/ios')
|
|
} } }
|
|
stage('Android') { steps { script {
|
|
android = jenkins.Build('status-go/platforms/android')
|
|
} } }
|
|
stage('Linux') { steps { script {
|
|
linux = jenkins.Build('status-go/platforms/linux')
|
|
} } }
|
|
stage('Docker') { steps { script {
|
|
dock = jenkins.Build('status-go/platforms/docker')
|
|
} } }
|
|
} // parallel
|
|
} // stage(Build)
|
|
|
|
stage('Archive') {
|
|
steps { script {
|
|
sh "rm -fr ${env.RELEASE_DIR}"
|
|
sh "mkdir ${env.RELEASE_DIR}"
|
|
[ios, android, linux].each { platformBuild ->
|
|
jenkins.copyArts(platformBuild)
|
|
}
|
|
dir(env.RELEASE_DIR) {
|
|
/* generate sha256 checksums for upload */
|
|
sh 'sha256sum * | tee checksum.sha256'
|
|
archiveArtifacts('*')
|
|
}
|
|
} }
|
|
} // stage(Archive)
|
|
|
|
stage('Release') {
|
|
when { expression { params.RELEASE == true } }
|
|
steps { script {
|
|
dir (env.REPO) { version = utils.getVersion() }
|
|
github.publishReleaseFiles(
|
|
repo: 'status-go',
|
|
version: version,
|
|
desc: ':warning: Fill me in!',
|
|
)
|
|
} }
|
|
} // stage(Release)
|
|
} // stages
|
|
|
|
post {
|
|
always { dir(env.REPO) {
|
|
sh 'make clean-release'
|
|
} }
|
|
}
|
|
}
|