diff --git a/ci/Jenkinsfile.android b/ci/Jenkinsfile.android index fd836eed0d..012fba4680 100644 --- a/ci/Jenkinsfile.android +++ b/ci/Jenkinsfile.android @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.5.5' +library 'status-jenkins-lib@v1.6.6' /* Options section can't access functions in objects. */ def isPRBuild = utils.isPRBuild() @@ -36,7 +36,7 @@ pipeline { LANG = "en_US.UTF-8" LC_ALL = "en_US.UTF-8" LANGUAGE = "en_US.UTF-8" - TARGET = 'android' + TARGET = "android${utils.isE2EBuild() ? "-e2e" : ""}" BUILD_ENV = 'prod' NIX_CONF_DIR = "${env.WORKSPACE}/nix" FASTLANE_DISABLE_COLORS = 1 @@ -75,20 +75,12 @@ pipeline { stage('Upload') { steps { script { def urls = apks.collect { s3.uploadArtifact(it) } - /* return only the universal APK */ - if (urls.size() > 1) { + if (urls.size() > 1) { /* Return only the universal APK. */ env.PKG_URL = urls.find { it.contains('universal') } - } else { /* if no universal is available pick first */ + } else { /* If no universal is available pick first. */ env.PKG_URL = urls.first() } jenkins.setBuildDesc(APK: env.PKG_URL) - /* e2e builds get tested in SauceLabs */ - if (utils.isE2EBuild()) { - env.SAUCE_URL = android.uploadToSauceLabs() - } - if (utils.isNightlyBuild()) { - env.DIAWI_URL = android.uploadToDiawi() - } } } } } diff --git a/ci/Jenkinsfile.combined b/ci/Jenkinsfile.combined index 017f7c321b..a4e687fe72 100644 --- a/ci/Jenkinsfile.combined +++ b/ci/Jenkinsfile.combined @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.5.5' +library 'status-jenkins-lib@v1.6.6' pipeline { agent { label 'linux' } @@ -8,6 +8,8 @@ pipeline { disableConcurrentBuilds() /* Prevent Jenkins jobs from running forever */ timeout(time: 40, unit: 'MINUTES') + /* Allow copying of artifacts from this job. */ + copyArtifactPermission('/status-mobile/e2e/*') /* Limit builds retained */ buildDiscarder(logRotator( numToKeepStr: '10', @@ -105,7 +107,7 @@ pipeline { e2eApk = utils.getEnv(apke2e, 'SAUCE_URL') build( job: 'status-mobile/e2e/status-app-nightly', - parameters: [string(name: 'APK_NAME', value: e2eApk)], + parameters: [string(name: 'APK_URL', value: e2eApk)], wait: false ) } } diff --git a/ci/Jenkinsfile.ios b/ci/Jenkinsfile.ios index 37930c57c2..43a7c1be62 100644 --- a/ci/Jenkinsfile.ios +++ b/ci/Jenkinsfile.ios @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.5.5' +library 'status-jenkins-lib@v1.6.6' /* Options section can't access functions in objects. */ def isPRBuild = utils.isPRBuild() @@ -72,15 +72,11 @@ pipeline { } } stage('Upload') { + when { expression { !utils.isReleaseBuild() } } steps { script { - env.PKG_URL = s3.uploadArtifact(api) + env.DIAWI_URL = ios.uploadToDiawi() + env.PKG_URL = env.DIAWI_URL jenkins.setBuildDesc(IPA: env.PKG_URL) - /* e2e builds get tested in SauceLabs */ - if (utils.isE2EBuild()) { - env.SAUCE_URL = ios.uploadToSauceLabs() - } else if (!utils.isReleaseBuild()) { - env.DIAWI_URL = ios.uploadToDiawi() - } } } } } diff --git a/nix/shells.nix b/nix/shells.nix index 9400376d6f..382d6a5a6a 100644 --- a/nix/shells.nix +++ b/nix/shells.nix @@ -13,23 +13,18 @@ let default = callPackage ./shell.nix { }; # Combines with many other shells - node-sh = mkShell { - shellHook = '' - export STATUS_MOBILE_HOME=$(git rev-parse --show-toplevel) - "$STATUS_MOBILE_HOME/nix/scripts/node_modules.sh" ${pkgs.deps.nodejs-patched} - ''; - }; + nodejs-sh = targets.mobile.ios.nodejs-sh; # An attrset for easier merging with default shell shells = { inherit default; - nodejs = node-sh; + nodejs = nodejs-sh; # for calling clojure targets in CI or Makefile clojure = mkShell { buildInputs = with pkgs; [ clojure flock maven openjdk ]; - inputsFrom = [ node-sh ]; + inputsFrom = [ nodejs-sh ]; # CLASSPATH from clojure deps with 'src' appended to find local sources. shellHook = with pkgs; '' export CLASS_PATH="$(find ${deps.clojure} -iname '*.jar' | tr '\n' ':')src" @@ -47,7 +42,7 @@ let # for running gradle by hand gradle = mkShell { buildInputs = with pkgs; [ gradle maven goMavenResolver ]; - inputsFrom = [ node-sh ]; + inputsFrom = [ nodejs-sh ]; shellHook = '' export STATUS_GO_ANDROID_LIBDIR="DUMMY" export STATUS_NIX_MAVEN_REPO="${pkgs.deps.gradle}" @@ -61,8 +56,8 @@ let buildInputs = with pkgs; [ openjdk8 apksigner ]; }; - # for targets that need 'adb' and other SDK/NDK tools - android-env = pkgs.androidShell; + # for targets needing 'adb', 'apkanalyzer' and other SDK/NDK tools + android-sdk = pkgs.androidShell; # helpers for use with target argument ios = targets.mobile.ios.shell;