status-desktop/ci/cpp/Jenkinsfile.windows
Jakub Sokołowski 349c83347d
ci: allow running MacOS builds on M1 Macs
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>
2023-04-07 14:25:34 +02:00

84 lines
2.1 KiB
Plaintext

library 'status-jenkins-lib@v1.6.8'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent {
docker {
label 'linux'
image 'stateoftheartio/qt6:6.3-mingw-aqt'
}
}
parameters {
booleanParam(
name: 'RELEASE',
description: 'Decides whether binaries are built with debug symbols.',
defaultValue: params.RELEASE ?: false
)
}
options {
timestamps()
/* Prevent Jenkins jobs from running forever */
timeout(time: 20, unit: 'MINUTES')
/* manage how many builds we keep */
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '3',
))
/* Abort old PR builds. */
disableConcurrentBuilds(
abortPrevious: isPRBuild
)
}
environment {
TARGET = 'windows-cpp'
/* Control output the filename */
STATUS_CLIENT_ZIP = "pkg/${utils.pkgFilename(ext: 'zip')}"
}
// TODO: Move all stages to the Makefile as targets "*-windows-using-docker"
stages {
stage('CMake Build') {
steps {
sh "qt-cmake ${env.WORKSPACE} -G Ninja -B ${env.WORKSPACE}/build -DCMAKE_BUILD_TYPE=Release"
sh "cmake --build ${env.WORKSPACE}/build"
}
}
stage('Package') {
steps {
sh "windeployqt --qmldir ${env.WORKSPACE} --dir ${env.WORKSPACE}/build/deploy --libdir ${env.WORKSPACE}/build/deploy/libs --plugindir ${env.WORKSPACE}/build/deploy/plugins ${env.WORKSPACE}/build/*.exe"
sh "zip -r ${STATUS_CLIENT_ZIP} build/deploy/"
}
}
stage('Parallel Upload') {
parallel {
stage('Upload') {
steps { script {
exe_url = s3.uploadArtifact(env.STATUS_CLIENT_ZIP)
env.PKG_URL = exe_url
jenkins.setBuildDesc(Zip: zip_url, Exe: exe_url)
} }
}
stage('Archive') {
steps { script {
archiveArtifacts(env.STATUS_CLIENT_ZIP)
} }
}
}
}
}
post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
cleanup { sh './scripts/clean-git.sh' }
}
}