mirror of
https://github.com/status-im/status-mobile.git
synced 2025-01-12 01:34:31 +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>
127 lines
2.9 KiB
Plaintext
127 lines
2.9 KiB
Plaintext
library 'status-react-jenkins@v1.2.11'
|
|
|
|
pipeline {
|
|
agent { label 'macos-xcode-12.3' }
|
|
|
|
parameters {
|
|
string(
|
|
name: 'BUILD_TYPE',
|
|
description: 'Specify build type. Values: pr / e2e / nightly / release',
|
|
defaultValue: 'pr',
|
|
)
|
|
}
|
|
|
|
options {
|
|
timestamps()
|
|
/* Prevent Jenkins jobs from running forever */
|
|
timeout(time: 25, unit: 'MINUTES')
|
|
/* Limit builds retained */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '10',
|
|
daysToKeepStr: '20',
|
|
artifactNumToKeepStr: '10',
|
|
))
|
|
/* Allows combined build to copy */
|
|
copyArtifactPermission('/status-react/*')
|
|
}
|
|
|
|
environment {
|
|
LANG = "en_US.UTF-8"
|
|
LC_ALL = "en_US.UTF-8"
|
|
LANGUAGE = "en_US.UTF-8"
|
|
TARGET = 'ios'
|
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
|
/* See nix/README.md */
|
|
NIX_IGNORE_SYMLINK_STORE = 1
|
|
FASTLANE_DISABLE_COLORS = 1
|
|
BUNDLE_PATH = "${HOME}/.bundle"
|
|
}
|
|
|
|
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('JSBundle') {
|
|
steps {
|
|
script { ios.jsbundle() }
|
|
}
|
|
}
|
|
stage('Bundle') {
|
|
steps {
|
|
script { api = ios.bundle() }
|
|
}
|
|
}
|
|
} }
|
|
}
|
|
}
|
|
stage('Parallel Upload') {
|
|
parallel {
|
|
stage('Archive') {
|
|
steps {
|
|
archiveArtifacts api
|
|
}
|
|
}
|
|
stage('Upload') {
|
|
steps {
|
|
script {
|
|
env.PKG_URL = s3.uploadArtifact(api)
|
|
jenkins.setBuildDesc(IPA: env.PKG_URL)
|
|
/* e2e builds get tested in SauceLabs */
|
|
if (utils.isE2EBuild()) {
|
|
env.SAUCE_URL = ios.uploadToSauceLabs()
|
|
} else {
|
|
env.DIAWI_URL = ios.uploadToDiawi()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Cleanup') {
|
|
steps {
|
|
sh 'make watchman-clean'
|
|
sh 'make purge'
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success { script { github.notifyPR(true) } }
|
|
failure { script { github.notifyPR(false) } }
|
|
always { sh 'make _fix-node-perms' }
|
|
}
|
|
}
|