mirror of
https://github.com/status-im/status-react.git
synced 2025-01-10 02:56:07 +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>
106 lines
2.8 KiB
Plaintext
106 lines
2.8 KiB
Plaintext
library 'status-react-jenkins@v1.2.11'
|
|
|
|
pipeline {
|
|
agent { label params.AGENT_LABEL }
|
|
|
|
environment {
|
|
/* See nix/README.md */
|
|
NIX_IGNORE_SYMLINK_STORE = 1
|
|
/* we source .bash_profile to be able to use nix-store */
|
|
NIX_SSHOPTS = "-o StrictHostKeyChecking=no source .bash_profile;"
|
|
/* where our /nix/store is hosted */
|
|
NIX_CACHE_USER = 'nix-cache'
|
|
NIX_CACHE_HOST = 'master-01.do-ams3.ci.misc.statusim.net'
|
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
|
}
|
|
|
|
options {
|
|
timestamps()
|
|
disableConcurrentBuilds()
|
|
/* Prevent Jenkins jobs from running forever */
|
|
timeout(time: 300, unit: 'MINUTES')
|
|
/* Limit builds retained */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '20',
|
|
daysToKeepStr: '30',
|
|
))
|
|
}
|
|
|
|
stages {
|
|
stage('Setup') {
|
|
steps { script {
|
|
nix.shell('nix-env -i openssh', pure: false)
|
|
/* some build targets don't build on MacOS */
|
|
uname = sh(script: 'uname', returnStdout: true)
|
|
} }
|
|
}
|
|
stage('Build status-go') {
|
|
steps { script {
|
|
def platforms = ['mobile.android', 'mobile.ios']
|
|
if (uname != "Darwin") {
|
|
platforms.removeAll { it == "ios" }
|
|
}
|
|
platforms.each { os ->
|
|
nix.build(
|
|
attr: "targets.status-go.${os}.buildInputs",
|
|
sandbox: false,
|
|
link: false
|
|
)
|
|
}
|
|
} }
|
|
}
|
|
stage('Build android jsbundle') {
|
|
steps { script {
|
|
/* build/fetch things required to produce a js-bundle for android
|
|
* (e.g. maven and node repos) */
|
|
nix.build(
|
|
attr: 'targets.mobile.android.jsbundle',
|
|
sandbox: false,
|
|
pure: false,
|
|
link: false
|
|
)
|
|
} }
|
|
}
|
|
stage('Build android deps') {
|
|
steps { script {
|
|
/* build/fetch things required to build jsbundle and android */
|
|
nix.build(
|
|
attr: 'targets.mobile.android.release.buildInputs',
|
|
sandbox: false,
|
|
pure: false,
|
|
link: false
|
|
)
|
|
} }
|
|
}
|
|
stage('Build nix shell deps') {
|
|
steps { script {
|
|
/* build/fetch things required to instantiate shell.nix for TARGET=all */
|
|
nix.build(
|
|
attr: 'shells.default.buildInputs',
|
|
sandbox: false,
|
|
link: false
|
|
)
|
|
} }
|
|
}
|
|
stage('Upload') {
|
|
steps { script {
|
|
sshagent(credentials: ['nix-cache-ssh']) {
|
|
nix.shell("""
|
|
find /nix/store/ -mindepth 1 -maxdepth 1 -type d \
|
|
-not -name '*.links' -and -not -name '*-status-react-*' \
|
|
| xargs nix-copy-closure -v --to ${NIX_CACHE_USER}@${NIX_CACHE_HOST}
|
|
""",
|
|
pure: false
|
|
)
|
|
}
|
|
} }
|
|
}
|
|
}
|
|
post {
|
|
always { script {
|
|
nix.shell('nix-store --optimize', pure: false)
|
|
nix.shell('nix/scripts/clean.sh', pure: false)
|
|
} }
|
|
}
|
|
}
|