mirror of
https://github.com/status-im/status-react.git
synced 2025-01-11 11:34:45 +00:00
Jakub Sokołowski
d946d473c6
Because our CI Apple account still has 2FA disabled in order for it to be usable in Jenkin it is now failing with an error that seems unrelated to 2FA. The recommended way of doing Apple authentication for CI are App Store Connect API JWTs. The API appears to support both pushing builds as well as updating metadata and other tasks like refreshing of provisioning profiles. Fixes: https://github.com/status-im/status-react/issues/11713 Issue: https://github.com/fastlane/fastlane/issues/18098 Docs: https://docs.fastlane.tools/app-store-connect-api/ Signed-off-by: Jakub Sokołowski <jakub@status.im>
129 lines
3.2 KiB
Plaintext
129 lines
3.2 KiB
Plaintext
library 'status-react-jenkins@v1.2.11'
|
|
|
|
pipeline {
|
|
agent { label 'linux' }
|
|
|
|
options {
|
|
timestamps()
|
|
/* Prevent Jenkins jobs from running forever */
|
|
timeout(time: 20, unit: 'MINUTES')
|
|
/* Limit builds retained */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '10',
|
|
daysToKeepStr: '20',
|
|
artifactNumToKeepStr: '10',
|
|
))
|
|
/* Allows combined build to copy */
|
|
copyArtifactPermission('/status-react/*')
|
|
}
|
|
|
|
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'
|
|
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 {
|
|
btype = utils.getBuildType()
|
|
print "Running ${btype} build!"
|
|
jenkins.abortPreviousRunningBuilds()
|
|
/* Cleanup and Prep */
|
|
commonPrep(btype)
|
|
}
|
|
}
|
|
}
|
|
stage('Parallel Assemble') {
|
|
parallel {
|
|
stage('Checks') { stages {
|
|
stage('Lint') {
|
|
steps {
|
|
script {
|
|
/* We want the build result to be uploaded */
|
|
catchError(
|
|
message: 'Linting check failed!',
|
|
buildResult: 'FAILURE',
|
|
stageResult: 'FAILURE'
|
|
) {
|
|
sh 'make lint'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Tests') {
|
|
steps {
|
|
script {
|
|
sh 'make test'
|
|
}
|
|
}
|
|
}
|
|
} }
|
|
stage('Build') { stages {
|
|
stage('Bundle') {
|
|
steps {
|
|
script { apks = android.bundle() }
|
|
}
|
|
}
|
|
} }
|
|
}
|
|
}
|
|
stage('Parallel Upload') {
|
|
parallel {
|
|
stage('Archive') {
|
|
steps { script {
|
|
apks.each { archiveArtifacts it }
|
|
} }
|
|
}
|
|
stage('Upload') {
|
|
steps {
|
|
script {
|
|
def urls = apks.collect { s3.uploadArtifact(it) }
|
|
/* return only the universal APK */
|
|
if (urls.size() > 1) {
|
|
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)
|
|
/* e2e builds get tested in SauceLabs */
|
|
if (utils.isE2EBuild()) {
|
|
env.SAUCE_URL = android.uploadToSauceLabs()
|
|
}
|
|
if (utils.isNightlyBuild()) {
|
|
env.DIAWI_URL = android.uploadToDiawi()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Cleanup') {
|
|
steps {
|
|
sh 'make purge'
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success { script { github.notifyPR(true) } }
|
|
failure { script { github.notifyPR(false) } }
|
|
always { sh 'make _fix-node-perms' }
|
|
}
|
|
}
|