status-desktop/ci/Jenkinsfile.macos
Jakub Sokołowski a802dcf916
ci: bump macos job timeout to 25 minutes
For some release builds the notarization step fails because Apple
backend takes too long to return results. But the timeout triggered is
the Jenkins job timeout and no the notarization timeout.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-07-01 11:52:49 +02:00

105 lines
2.5 KiB
Plaintext

library 'status-jenkins-lib@v1.3.4'
pipeline {
agent {
label 'macos && x86_64'
}
parameters {
booleanParam(
name: 'RELEASE',
description: 'Decides whether binaries are built with debug symbols.',
defaultValue: params.RELEASE ?: false
)
choice(
name: 'VERBOSE',
description: 'Level of verbosity based on nimbus-build-system setup.',
choices: ['0', '1', '2']
)
}
options {
timestamps()
/* Prevent Jenkins jobs from running forever */
timeout(time: 25, unit: 'MINUTES')
/* manage how many builds we keep */
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '3',
))
}
environment {
TARGET = 'macos'
/* Improve make performance */
MAKEFLAGS = "-j4 V=${params.VERBOSE}"
/* 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(ext: 'dmg')}"
/* Apple Team ID for Notarization */
MACOS_NOTARIZE_TEAM_ID = "DTX7Z4U3YA"
}
stages {
stage('Deps') {
steps {
/* trigger fetching of git submodules */
sh 'make check-pkg-target-macos'
/* TODO: Re-add caching of Nim compiler. */
withCredentials([
usernamePassword( /* For fetching HomeBrew bottles. */
credentialsId: "status-im-auto-pkgs",
usernameVariable: 'GITHUB_USER',
passwordVariable: 'GITHUB_TOKEN'
)
]) {
sh 'make deps'
}
}
}
stage('status-go') {
steps { sh 'make status-go' }
}
stage('Package') {
steps { script {
macos.bundle()
} }
}
stage('Notarize') {
when { expression { utils.isReleaseBuild() } }
steps { script {
macos.notarize()
} }
}
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() }
}
}