mirror of
https://github.com/status-im/status-mobile.git
synced 2025-01-11 01:07:00 +00:00
Jakub Sokołowski
2493b8ad4b
For an unknown reason the original Diawi plugin for Fastlane has been removed from GitHub and RubyGems pages and can no longer be used. This replaces it with a Node.js script which does the same job. I tried using `diawi` and `diawi-nodejs-uploader` but both had issues, one of them being depending on far too many useless packages. Resolves: https://github.com/status-im/status-mobile/issues/15951 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.9'
|
|
|
|
/* 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' }
|
|
}
|
|
}
|