mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-09 22:06:25 +00:00
Jakub Sokołowski
349c83347d
This depends on installing Qt via Brew, but that creates a version mismatch, since it's 5.15.8 and not 5.15.2, which is not optimal but works for now. In the long term we should probably look into using Nix, or maybe aqt will support M1 Macs, but this is not great. Depends on: - https://github.com/status-im/infra-ci/commit/54408b41 - https://github.com/status-im/infra-ci/commit/39d4fdef Resolves: https://github.com/status-im/status-desktop/issues/9984 Signed-off-by: Jakub Sokołowski <jakub@status.im>
115 lines
3.3 KiB
Plaintext
115 lines
3.3 KiB
Plaintext
library 'status-jenkins-lib@v1.6.8'
|
|
|
|
pipeline {
|
|
agent { label 'linux' }
|
|
|
|
options {
|
|
timestamps()
|
|
disableConcurrentBuilds()
|
|
/* Prevent Jenkins jobs from running forever */
|
|
timeout(time: 60, unit: 'MINUTES')
|
|
/* Limit builds retained */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '10',
|
|
daysToKeepStr: '30',
|
|
artifactNumToKeepStr: '10',
|
|
))
|
|
}
|
|
|
|
parameters {
|
|
booleanParam(
|
|
name: 'PUBLISH',
|
|
description: 'Trigger publishing of build results to GitHub.',
|
|
defaultValue: getPublishDefault(params.PUBLISH),
|
|
)
|
|
}
|
|
|
|
stages {
|
|
stage('Build') {
|
|
parallel {
|
|
stage('Linux/x86_64') { steps { script {
|
|
linux_x86_64 = jenkins.Build('status-desktop/platforms/linux/x86_64')
|
|
} } }
|
|
stage('Windows/x86_64') { steps { script {
|
|
windows_x86_64 = jenkins.Build('status-desktop/platforms/windows/x86_64')
|
|
} } }
|
|
stage('MacOS/x86_64') { steps { script {
|
|
macos_x86_64 = jenkins.Build('status-desktop/platforms/macos/x86_64')
|
|
} } }
|
|
stage('MacOS/arch64') { steps { script {
|
|
macos_aarch64 = jenkins.Build('status-desktop/platforms/macos/aarch64')
|
|
} } }
|
|
}
|
|
}
|
|
stage('Archive') {
|
|
steps { script {
|
|
sh('rm -f pkg/*')
|
|
jenkins.copyArts(linux_x86_64)
|
|
jenkins.copyArts(windows_x86_64)
|
|
jenkins.copyArts(macos_x86_64)
|
|
jenkins.copyArts(macos_aarch64)
|
|
sha = "pkg/${utils.pkgFilename(ext: 'sha256')}"
|
|
dir('pkg') {
|
|
/* generate sha256 checksums for upload */
|
|
sh "sha256sum * | tee ../${sha}"
|
|
archiveArtifacts('*')
|
|
}
|
|
} }
|
|
}
|
|
stage('Upload') {
|
|
steps { script {
|
|
/* object for easier URLs handling */
|
|
urls = [
|
|
/* mobile */
|
|
'Linux': utils.pkgUrl(linux_x86_64),
|
|
'Windows': utils.pkgUrl(windows_x86_64),
|
|
'MacOS/x86_64': utils.pkgUrl(macos_x86_64),
|
|
'MacOS/aarch64': utils.pkgUrl(macos_aarch64),
|
|
/* upload the sha256 checksums file too */
|
|
SHA: s3.uploadArtifact(sha),
|
|
]
|
|
/* add URLs to the build description */
|
|
jenkins.setBuildDesc(urls)
|
|
} }
|
|
}
|
|
stage('Publish') {
|
|
when { expression { params.PUBLISH } }
|
|
steps { script {
|
|
github.publishReleaseFiles(repo: 'status-desktop');
|
|
} }
|
|
}
|
|
}
|
|
post {
|
|
failure { script {
|
|
withCredentials([
|
|
string(
|
|
credentialsId: 'discord-status-desktop-webhook',
|
|
variable: 'DISCORD_WEBHOOK'
|
|
),
|
|
]) {
|
|
discordSend(
|
|
title: "${env.JOB_NAME}#${env.BUILD_NUMBER}",
|
|
description: """
|
|
CI Desktop build Failure!
|
|
Branch: `${GIT_BRANCH}`
|
|
Commit: `${GIT_COMMIT.take(8)}`
|
|
""",
|
|
link: env.BUILD_URL,
|
|
result: currentBuild.currentResult,
|
|
webhookURL: env.DISCORD_WEBHOOK
|
|
)
|
|
}
|
|
} }
|
|
}
|
|
}
|
|
|
|
/* Helper that makes PUBLISH default to 'false' unless:
|
|
* - The build is for a release branch
|
|
* - A user explicitly specified a value
|
|
* Since release builds create and re-create GitHub drafts every time. */
|
|
def Boolean getPublishDefault(Boolean previousValue) {
|
|
if (env.JOB_NAME.startsWith('status-desktop/release')) { return true }
|
|
if (previousValue != null) { return previousValue }
|
|
return false
|
|
}
|