mirror of
https://github.com/status-im/status-mobile.git
synced 2025-02-26 07:15:53 +00:00
It only blocks CI builds for no good reason when branch has not been rebased recently, which has no real benefit as GitHub already enforces not merging outdated PRs. It's just annoying and wastes time. Depends on: https://github.com/status-im/status-jenkins-lib/pull/68 Signed-off-by: Jakub Sokołowski <jakub@status.im>
94 lines
2.3 KiB
Plaintext
94 lines
2.3 KiB
Plaintext
library 'status-jenkins-lib@v1.7.8'
|
|
|
|
/* Options section can't access functions in objects. */
|
|
def isPRBuild = utils.isPRBuild()
|
|
|
|
pipeline {
|
|
agent { label 'linux && x86_64 && nix-2.11' }
|
|
|
|
options {
|
|
timestamps()
|
|
/* Prevent Jenkins jobs from running forever */
|
|
timeout(time: 30, unit: 'MINUTES')
|
|
/* Limit builds retained */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '10',
|
|
daysToKeepStr: '20',
|
|
artifactNumToKeepStr: '10',
|
|
))
|
|
/* Allows combined build to copy */
|
|
copyArtifactPermission('/status-mobile/*')
|
|
/* Abort old PR builds. */
|
|
disableConcurrentBuilds(
|
|
abortPrevious: isPRBuild
|
|
)
|
|
}
|
|
|
|
parameters {
|
|
string(
|
|
name: 'BUILD_TYPE',
|
|
description: 'Specify build type. Values: pr / e2e / nightly / release',
|
|
defaultValue: 'pr',
|
|
)
|
|
}
|
|
|
|
environment {
|
|
LANG = "en_US.UTF-8"
|
|
LC_ALL = "en_US.UTF-8"
|
|
LANGUAGE = "en_US.UTF-8"
|
|
TARGET = "android${utils.isE2EBuild() ? "-e2e" : ""}"
|
|
BUILD_ENV = 'prod'
|
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
|
FASTLANE_DISABLE_COLORS = 1
|
|
/* coverage report identification */
|
|
COVERALLS_SERVICE_NAME = "jenkins"
|
|
COVERALLS_SERVICE_JOB_ID = "${JOB_NAME}#${BUILD_NUMBER}"
|
|
}
|
|
|
|
stages {
|
|
stage('Prep') {
|
|
steps {
|
|
script {
|
|
utils.symlinkEnv()
|
|
println("Build Number: ${utils.genBuildNumber()}")
|
|
}
|
|
}
|
|
}
|
|
stage('Bundle') {
|
|
steps {
|
|
script { apks = android.bundle() }
|
|
}
|
|
}
|
|
stage('Sign') {
|
|
steps {
|
|
script { apks = android.sign(apks) }
|
|
}
|
|
}
|
|
stage('Parallel Upload') {
|
|
parallel {
|
|
stage('Archive') {
|
|
steps { script {
|
|
apks.each { archiveArtifacts it }
|
|
} }
|
|
}
|
|
stage('Upload') {
|
|
steps { script {
|
|
def urls = apks.collect { s3.uploadArtifact(it) }
|
|
if (urls.size() > 1) { /* Return only the universal APK. */
|
|
env.PKG_URL = urls.find { it.contains('universal') }
|
|
} else { /* If no universal is available pick first. */
|
|
env.PKG_URL = urls.first()
|
|
}
|
|
jenkins.setBuildDesc(APK: env.PKG_URL)
|
|
} }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success { script { github.notifyPR(true) } }
|
|
failure { script { github.notifyPR(false) } }
|
|
always { sh 'make purge' }
|
|
}
|
|
}
|