@@ -10,11 +10,11 @@ pipeline {
1010 /* Image with Ubuntu 22.04 and QT 6.9.2 */
1111 docker {
1212 label ' linuxcontainer'
13- image ' harbor.status.im/status-im/status-desktop-build:1.0.5-qt6.9.2'
14- /* allows jenkins use cat and mounts '/dev/fuse' for linuxdeployqt */
13+ image ' harbor.status.im/status-im/status-desktop-build:1.0.7-qt6.9.2'
14+ /* allows jenkins use cat and mounts '/dev/fuse' for linuxdeployqt and flatpak-builder */
15+ /* flatpak-builder requires --privileged to mount /proc inside bwrap sandbox */
1516 args ' --entrypoint="" ' +
16- ' --cap-add=SYS_ADMIN ' +
17- ' --security-opt=apparmor:unconfined ' +
17+ ' --privileged ' +
1818 ' --device=/dev/fuse ' +
1919 ' --volume=/nix:/nix ' +
2020 ' --volume=/etc/nix:/etc/nix '
@@ -57,7 +57,7 @@ pipeline {
5757 options {
5858 timestamps()
5959 /* Prevent Jenkins jobs from running forever */
60- timeout(time : 30 , unit : ' MINUTES' )
60+ timeout(time : 45 , unit : ' MINUTES' )
6161 /* manage how many builds we keep */
6262 buildDiscarder(logRotator(
6363 numToKeepStr : ' 10' ,
@@ -87,8 +87,14 @@ pipeline {
8787 VERSION = sh(script : " ./scripts/version.sh" , returnStdout : true ). trim()
8888 /* Control output the filename */
8989 APP_TYPE = " ${ utils.getAppType() + (params.USE_NWAKU ? '-experimental' : '')} "
90+ /* AppImage/Tarball output files */
9091 STATUS_CLIENT_APPIMAGE = " pkg/${ utils.pkgFilename(ext: 'AppImage', arch: getArch(), version: env.VERSION, type: env.APP_TYPE)} "
9192 STATUS_CLIENT_TARBALL = " pkg/${ utils.pkgFilename(ext: 'tar.gz', arch: getArch(), version: env.VERSION, type: env.APP_TYPE)} "
93+ /* Flatpak output files */
94+ STATUS_CLIENT_FLATPAK = " pkg/${ utils.pkgFilename(ext: 'flatpak', arch: getArch(), version: env.VERSION, type: env.APP_TYPE)} "
95+ /* Flatpak build directories */
96+ FLATPAK_BUILD_DIR = " ${ env.WORKSPACE_TMP} /flatpak-build"
97+ FLATPAK_REPO_DIR = " ${ env.WORKSPACE_TMP} /flatpak-repo"
9298 /* prevent sharing cache dir across different jobs */
9399 GO_GENERATE_FAST_DIR = " ${ env.WORKSPACE_TMP} /go-generate-fast"
94100 SENTRY_PRODUCTION = " ${ utils.isReleaseBuild() ? 'true' : 'false'} "
@@ -128,27 +134,47 @@ pipeline {
128134 }
129135
130136 stage(' Package' ) {
131- steps { script {
132- linux. bundle(' tgz-linux' )
133- } }
137+ parallel {
138+ stage(' Tarball' ) {
139+ steps { script {
140+ linux. bundle(' tgz-linux' )
141+ } }
142+ }
143+ stage(' Flatpak' ) {
144+ steps { script {
145+ sh ' scripts/build-flatpak.sh'
146+ } }
147+ }
148+ }
134149 }
135150
136151 stage(' Parallel Upload' ) {
137152 parallel {
138- stage(' Upload' ) {
153+ stage(' Upload Tarball ' ) {
139154 steps { script {
140155 env. PKG_URL = s5cmd. upload(env. STATUS_CLIENT_TARBALL )
141- jenkins. setBuildDesc(AppImage : env. PKG_URL )
156+ } }
157+ }
158+ stage(' Upload Flatpak' ) {
159+ steps { script {
160+ env. FLATPAK_URL = s5cmd. upload(env. STATUS_CLIENT_FLATPAK )
142161 } }
143162 }
144163 stage(' Archive' ) {
145164 steps { script {
146165 archiveArtifacts(" ${ env.STATUS_CLIENT_TARBALL} *" )
166+ archiveArtifacts(" ${ env.STATUS_CLIENT_FLATPAK} *" )
147167 } }
148168 }
149169 }
150170 }
151171
172+ stage(' Post Upload' ) {
173+ steps { script {
174+ jenkins. setBuildDesc(Tarball : env. PKG_URL , Flatpak : env. FLATPAK_URL )
175+ } }
176+ }
177+
152178 stage(' E2E' ) {
153179 when { expression { utils. isPRBuild() && ! (params. USE_NWAKU ?: false ) } }
154180 steps { script {
@@ -166,10 +192,7 @@ pipeline {
166192 post {
167193 success { script { github. notifyPR(true ) } }
168194 failure { script { github. notifyPR(false ) } }
169- cleanup {
170- cleanWs(disableDeferredWipeout : true )
171- dir(env. WORKSPACE_TMP ) { deleteDir() }
172- }
195+ cleanup { cleanWs(disableDeferredWipeout : true ) }
173196 }
174197}
175198
0 commit comments