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>
91 lines
3.3 KiB
Plaintext
91 lines
3.3 KiB
Plaintext
library 'status-jenkins-lib@v1.6.8'
|
|
|
|
/* Options section can't access functions in objects. */
|
|
def isPRBuild = utils.isPRBuild()
|
|
|
|
pipeline {
|
|
agent {
|
|
dockerfile {
|
|
label 'linux'
|
|
dir 'ci/cpp'
|
|
filename 'Dockerfile-linux'
|
|
/* allows jenkins use cat and mounts '/dev/fuse' for linuxdeployqt */
|
|
args '--entrypoint="" --cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse'
|
|
}
|
|
}
|
|
|
|
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 = 'linux-cpp'
|
|
/* Control output the filename */
|
|
STATUS_CLIENT_APPIMAGE = "pkg/${utils.pkgFilename(ext: 'AppImage')}"
|
|
CONAN_USER_HOME = "${env.WORKSPACE}/build/conan/conan_home"
|
|
CONAN_NON_INTERACTIVE = 1
|
|
}
|
|
|
|
// TODO: Move all stages to the Makefile as targets "*-linux-using-docker"
|
|
stages {
|
|
stage('CMake Build') {
|
|
steps {
|
|
sh "conan install ${env.WORKSPACE}/ --profile=${env.WORKSPACE}/vendor/conan-configs/linux.ini -s build_type=Release --build=missing -if=${env.WORKSPACE}/build/conan -of=${env.WORKSPACE}/build"
|
|
// TODO: This fails compiling status-go with Jenkins user but not when run with docker's user. Fix go installation to work for all users or build docker with jenkin's
|
|
sh "CC=gcc-10 CXX=g++-10 qt-cmake ${env.WORKSPACE}/ -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${env.WORKSPACE}/build/conan/conan_toolchain.cmake"
|
|
sh "cmake --build ${env.WORKSPACE}/build"
|
|
}
|
|
}
|
|
|
|
// stage('Run Tests') {
|
|
// steps {
|
|
// sh "CTEST_OUTPUT_ON_FAILURE=1 QT_QPA_PLATFORM=offscreen ctest --test-dir ${env.WORKSPACE}/build"
|
|
// }
|
|
// }
|
|
|
|
stage('Package') {
|
|
steps {
|
|
sh "linuxdeploy --plugin qt --executable=${env.WORKSPACE}/build/status-desktop --appdir ${env.WORKSPACE}/build/AppDir --desktop-file=${env.WORKSPACE}/status.desktop --icon-file=${env.WORKSPACE}/status.svg --custom-apprun=${env.WORKSPACE}/AppRun-cpp"
|
|
sh "cmake --install ${env.WORKSPACE}/build --prefix=${env.WORKSPACE}/build/install"
|
|
sh "cp ${env.WORKSPACE}/build/install/lib/* ${env.WORKSPACE}/build/AppDir/usr/lib/"
|
|
// TODO enable after deploying appimage plugin in the corresponding docker
|
|
//sh "linuxdeploy --appdir ${env.WORKSPACE}/build/AppDir --output=appimage"
|
|
// sh "mkdir pkg && cp \"\$(find ${env.WORKSPACE}/build/AppDir -maxdepth 2 -type f -iname \"*.AppImage\")\" ${env.STATUS_CLIENT_APPIMAGE}"
|
|
}
|
|
}
|
|
|
|
stage('Upload') {
|
|
steps { script {
|
|
/* TODO: Enable after generating the AppImage. */
|
|
env.PKG_URL = "${currentBuild.absoluteUrl}/consoleText"
|
|
} }
|
|
}
|
|
}
|
|
|
|
post {
|
|
success { script { github.notifyPR(true) } }
|
|
failure { script { github.notifyPR(false) } }
|
|
cleanup { sh './scripts/clean-git.sh' }
|
|
}
|
|
}
|