status-desktop/ci/Jenkinsfile.linux
Patryk Osmaczko ee462ea178 fix(@desktop/input): deploy Qt plugin to support fcitx
Qt provides support for various input methods through plugins.
Since the fcitx plugin is not delivered with Qt, it needs to be
built and deployed by us.

Fixes: #4436
2022-01-26 18:11:39 +01:00

94 lines
2.3 KiB
Plaintext

library 'status-jenkins-lib@v1.3.3'
pipeline {
agent {
docker {
label 'linux'
image 'statusteam/nim-status-client-build:1.1.3'
/* allows jenkins use cat and mounts '/dev/fuse' for linuxdeployqt */
args '--entrypoint="" --cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse'
}
}
parameters {
string(
name: 'BUILD_TYPE',
description: 'Specify build type. Values: pr / nightly / release',
defaultValue: 'pr',
)
}
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',
))
}
environment {
TARGET = 'linux'
/* Improve make performance */
MAKEFLAGS = '-j4'
/* Disable colors in Nim compiler logs */
NIMFLAGS = '--colors:off'
/* Makefile assumes the compiler folder is included */
QTDIR = "/opt/qt/5.14.0/gcc_64"
/* Control output the filename */
STATUS_CLIENT_APPIMAGE = "pkg/${utils.pkgFilename(ext: 'AppImage')}"
STATUS_CLIENT_TARBALL = "pkg/${utils.pkgFilename(ext: 'tar.gz')}"
}
stages {
stage('Deps') {
steps {
/* trigger fetching of git submodules */
sh 'make check-pkg-target-linux'
/* 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 { script {
linux.bundle('tgz-linux')
} }
}
stage('Parallel Upload') {
parallel {
stage('Upload') {
steps { script {
env.PKG_URL = s3.uploadArtifact(env.STATUS_CLIENT_TARBALL)
jenkins.setBuildDesc(AppImage: env.PKG_URL)
} }
}
stage('Archive') {
steps { script {
archiveArtifacts("${env.STATUS_CLIENT_TARBALL}*")
} }
}
}
}
}
post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
always { cleanWs() }
}
}