mirror of
https://github.com/status-im/status-react.git
synced 2025-01-10 11:06:25 +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>
117 lines
3.1 KiB
Plaintext
117 lines
3.1 KiB
Plaintext
library 'status-jenkins-lib@v1.7.9'
|
|
|
|
pipeline {
|
|
agent { label params.AGENT_LABEL }
|
|
|
|
parameters {
|
|
string(
|
|
name: 'NIX_CACHE_HOST',
|
|
description: 'FQDN of Nix binary cache host.',
|
|
defaultValue: params.NIX_CACHE_HOST ?: 'cache-01.do-ams3.nix.ci.statusim.net'
|
|
)
|
|
string(
|
|
name: 'NIX_CACHE_USER',
|
|
description: 'Username for Nix binary cache host.',
|
|
defaultValue: params.NIX_CACHE_USER ?: 'nix-cache'
|
|
)
|
|
}
|
|
|
|
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 .profile;"
|
|
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', sandbox: false, 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-mobile-*' \
|
|
| xargs nix copy \
|
|
--to ssh-ng://${params.NIX_CACHE_USER}@${params.NIX_CACHE_HOST}
|
|
""",
|
|
pure: false
|
|
)
|
|
}
|
|
} }
|
|
}
|
|
}
|
|
post {
|
|
always { script {
|
|
nix.shell('nix-store --optimize', pure: false)
|
|
nix.shell('nix/scripts/clean.sh', pure: false)
|
|
} }
|
|
}
|
|
}
|