diff --git a/ci/Jenkinsfile.linux b/ci/Jenkinsfile.linux index 5f3512e4c9..4023ce6523 100644 --- a/ci/Jenkinsfile.linux +++ b/ci/Jenkinsfile.linux @@ -5,7 +5,7 @@ library 'status-jenkins-lib@linux-use-nix' def isPRBuild = utils.isPRBuild() pipeline { - agent { label 'linux' } + agent none parameters { booleanParam( @@ -28,12 +28,17 @@ pipeline { description: 'Decides whether the mocked status-keycard-go library is built.', defaultValue: false ) + booleanParam( + name: 'NIX_SHELL', + description: 'Run build in Nix shell', + defaultValue: getDefaultNixShell() + ) } options { timestamps() /* Prevent Jenkins jobs from running forever */ - //timeout(time: 25, unit: 'MINUTES') + timeout(time: 25, unit: 'MINUTES') /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '10', @@ -51,7 +56,7 @@ pipeline { environment { TARGET = "linux/${getArch()}" /* Improve make performance */ - MAKEFLAGS = "-j1 V=${params.VERBOSE}" + MAKEFLAGS = "-j4 V=${params.VERBOSE}" /* Avoid weird bugs caused by stale cache. */ QML_DISABLE_DISK_CACHE = "true" /* Control output the filename */ @@ -60,22 +65,50 @@ pipeline { } stages { + stage('environment setup') { + steps { script { + if (env.NIX_SHELL) { + currentBuild.agent = { label 'linux' } + } else { + currentBuild.agent = { + /* Necessary image with Ubuntu 20.04 for older Glibc. */ + docker { + label 'linux' + image 'statusteam/nim-status-client-build:1.3.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' + } + } + QTDIR = "/opt/qt/5.15.2/gcc_64" + PATH = "${env.QTDIR}/bin:${env.PATH}" + } + } } + } + stage('Deps') { steps { script { - nix.shell('make update --debug V=1', pure: true) - nix.shell('make deps --debug V=1', pure: true) + if (env.NIX_SHELL) { + nix.shell('make update --debug V=1', pure: true) + nix.shell('make deps --debug V=1', pure: true) + } else { + sh 'make update' + sh 'make deps' + } } } } stage('status-go') { steps { script { - nix.shell('make status-go --debug V=1', pure: true) + if (env.NIX_SHELL) { + nix.shell('make status-go --debug V=1', pure: true) + } else { + sh 'make status-go' } } } stage('Package') { steps { script { - linux.bundle('--debug=b tgz-linux', 1) + linux.bundle('--debug=b tgz-linux', 1, env.NIX_SHELL) } } } @@ -119,3 +152,11 @@ def getArch() { if (tokens.contains(arch)) { return arch } } } + +def getDefaultNixShell() { + if (env.JOB_BASE_NAME == "package_nix") { + return true + } else { + return false + } +} diff --git a/nix.conf b/nix.conf deleted file mode 100644 index 6810dd132a..0000000000 --- a/nix.conf +++ /dev/null @@ -1,11 +0,0 @@ -# NOTE: If you are in Asia you might want to add https://nix-cache-cn.status.im/ to extra-substituters -extra-substituters = https://nix-cache.status.im/ -substituters = https://cache.nixos.org/ -trusted-public-keys = nix-cache.status.im-1:x/93lOfLU+duPplwMSBR+OlY4+mo+dCN7n0mr4oPwgY= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= -# Some downloads are multiple GB, default is 5 minutes -stalled-download-timeout = 3600 -connect-timeout = 10 -max-jobs = auto -# Helps avoid removing currently used dependencies via garbage collection -keep-derivations = true -keep-outputs = true diff --git a/shell.nix b/shell.nix index 33ffa04617..5dbc265e3b 100644 --- a/shell.nix +++ b/shell.nix @@ -107,5 +107,3 @@ in pkgs.mkShell { xorg.xcbutil ]; } - -