status-desktop/ci/Jenkinsfile.macos
Michael Bradley, Jr 10d82124fe refactor: embed Infura key at compile time
Allow environmental override at runtime. Also, in the Makefile set a free-tier
default token so that setting up an Infura account isn't strictly necessary for
community contributors to build the app, even though in our docs it should be
recommended they do so.

Core contributors should setup their own free-tier Infura account, create a
key, and set it in the environment variable INFURA_TOKEN in their environment
used to build the desktop app locally.

There is one aspect of this work that is incomplete. Ideally, in the handler
for the `login` event the relevant settings in the database should always be
updated with the resolved Infura key. However, when calling
`getSetting[string](Setting.Networks_Networks)` in the handler it causes a
segfault every time. Neither the reason for the crash nor a workaround have
been worked out at this time.
2020-12-09 12:10:12 -06:00

97 lines
2.2 KiB
Plaintext

library 'status-react-jenkins@v1.2.4'
pipeline {
agent {
label 'macos'
}
options {
timestamps()
/* Prevent Jenkins jobs from running forever */
timeout(time: 15, unit: 'MINUTES')
/* manage how many builds we keep */
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
))
}
environment {
TARGET = 'macos'
/* Improve make performance */
MAKEFLAGS = '-j4'
/* Disable colors in Nim compiler logs */
NIMFLAGS = '--colors:off'
/* Qt location is pre-defined */
QTDIR = '/usr/local/qt/clang_64'
PATH = "${env.QTDIR}/bin:${env.PATH}"
/* Control output the filename */
STATUS_CLIENT_DMG = "pkg/${utils.pkgFilename('dmg')}"
}
stages {
stage('Deps') {
steps {
/* avoid re-compiling Nim by using cache */
cache(maxCacheSize: 250, caches: [[
$class: 'ArbitraryFileCache',
includes: '**/*',
path: 'vendor/nimbus-build-system/vendor/Nim/bin'
]]) {
sh 'make deps'
}
}
}
stage('status-go') {
steps { sh 'make status-go' }
}
stage('Package') {
steps {
withCredentials([
string(
credentialsId: 'macos-keychain-identity',
variable: 'MACOS_CODESIGN_IDENT'
),
string(
credentialsId: 'macos-keychain-pass',
variable: 'MACOS_KEYCHAIN_PASS'
),
file(
credentialsId: 'macos-keychain-file',
variable: 'MACOS_KEYCHAIN_FILE'
),
string(
credentialsId: utils.getInfuraTokenCred(),
variable: 'INFURA_TOKEN'
)
]) {
sh 'make pkg-macos'
}
}
}
stage('Parallel Upload') {
parallel {
stage('Upload') {
steps { script {
env.PKG_URL = s3.uploadArtifact(env.STATUS_CLIENT_DMG)
jenkins.setBuildDesc(Dmg: env.PKG_URL)
} }
}
stage('Archive') {
steps { script {
archiveArtifacts(env.STATUS_CLIENT_DMG)
} }
}
}
}
}
post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
always { cleanWs() }
}
}