diff --git a/ci/Jenkinsfile.linux b/ci/Jenkinsfile.linux index 26dc757195..0e0c503eed 100644 --- a/ci/Jenkinsfile.linux +++ b/ci/Jenkinsfile.linux @@ -6,15 +6,7 @@ def isPRBuild = utils.isPRBuild() def isNightlyBuild = utils.isNightlyBuild() pipeline { - agent { - /* Necessary image with Ubuntu 20.04 for older Glibc. */ - docker { - label 'linux' - image 'statusteam/nim-status-client-build:1.5.0-qt5.15.2' - /* allows jenkins use cat and mounts '/dev/fuse' for linuxdeployqt */ - args '--entrypoint="" --cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse' - } - } + agent { label 'linux && x86_64 && nix-2.19' } parameters { booleanParam( @@ -77,21 +69,21 @@ pipeline { stages { stage('Deps') { - steps { - sh 'make update' - sh 'make deps' - } + steps { script { + nix.shell('make update', pure: true) + nix.shell('make deps', pure: true) + } } } stage('status-go') { - steps { - sh 'make status-go' - } + steps { script { + nix.shell('make status-go', pure: true) + } } } stage('Package') { steps { script { - linux.bundle('tgz-linux') + linux.bundle('tgz-linux', nixShell=true) } } } diff --git a/ci/Jenkinsfile.linux-nix b/ci/Jenkinsfile.linux-nix deleted file mode 100644 index 93530de41b..0000000000 --- a/ci/Jenkinsfile.linux-nix +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env groovy -library 'status-jenkins-lib@v1.9.7' - -/* Options section can't access functions in objects. */ -def isPRBuild = utils.isPRBuild() -def isNightlyBuild = utils.isNightlyBuild() - -pipeline { - agent { label 'linux && x86_64 && nix-2.14' } - - parameters { - booleanParam( - name: 'RELEASE', - description: 'Decides whether release credentials are used.', - defaultValue: params.RELEASE ?: false - ) - booleanParam( - name: 'INCLUDE_DEBUG_SYMBOLS', - description: 'Decides whether binaries are built with debug symbols.', - defaultValue: params.INCLUDE_DEBUG_SYMBOLS ?: false - ) - choice( - name: 'VERBOSE', - description: 'Level of verbosity based on nimbus-build-system setup.', - choices: ['0', '1', '2'] - ) - string( - name: 'NIMFLAGS', - description: 'Extra Nim flags. Examples: --verbosity:2 --passL:"-v" --passC:"-v"', - defaultValue: '--colors:off' - ) - booleanParam( - name: 'USE_MOCKED_KEYCARD_LIB', - description: 'Decides whether the mocked status-keycard-go library is built.', - defaultValue: false - ) - } - - options { - timestamps() - /* Prevent Jenkins jobs from running forever */ - timeout(time: 25, unit: 'MINUTES') - /* manage how many builds we keep */ - buildDiscarder(logRotator( - numToKeepStr: '10', - daysToKeepStr: '30', - artifactNumToKeepStr: '1', - )) - /* Allows combined build to copy */ - copyArtifactPermission('/status-desktop/*') - /* Abort old PR builds. */ - disableConcurrentBuilds( - abortPrevious: isPRBuild - ) - } - - environment { - PLATFORM = "linux-nix/${getArch()}" - /* Improve make performance */ - MAKEFLAGS = "-j4 V=${params.VERBOSE}" - /* Avoid weird bugs caused by stale cache. */ - QML_DISABLE_DISK_CACHE = "true" - /* Control output the filename */ - STATUS_CLIENT_APPIMAGE = "pkg/${utils.pkgFilename(ext: 'nix.AppImage', arch: getArch())}" - STATUS_CLIENT_TARBALL = "pkg/${utils.pkgFilename(ext: 'nix.tar.gz', arch: getArch())}" - /* prevent sharing cache dir across different jobs */ - GO_GENERATE_FAST_DIR = "${env.WORKSPACE_TMP}/go-generate-fast" - } - - stages { - stage('Deps') { - steps { script { - nix.shell('make update', pure: true) - nix.shell('make deps', pure: true) - } } - } - - stage('status-go') { - steps { script { - nix.shell('make status-go', pure: true) - } } - } - - stage('Package') { - steps { script { - linux.bundle('tgz-linux', 0, true) - } } - } - - 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) } } - cleanup { sh './scripts/clean-git.sh' } - } -} - -def getArch() { - def tokens = Thread.currentThread().getName().split('/') - for (def arch in ['x86_64', 'aarch64']) { - if (tokens.contains(arch)) { return arch } - } -}