pipeline { agent { label 'macos' } parameters { booleanParam( name: 'BUILD_TYPE', description: 'Specify build type. Values: pr / nightly / release', defaultValue: 'pr', ) } options { timestamps() /* Prevent Jenkins jobs from running forever */ timeout(time: 35, unit: 'MINUTES') /* Limit builds retained */ buildDiscarder(logRotator( numToKeepStr: '90', daysToKeepStr: '60', artifactNumToKeepStr: '60', )) } environment { NODE_VERSION = 'v10.14.1' BUILD_PLATFORM = 'ios' LANG = 'en_US.UTF-8' LANGUAGE = 'en_US.UTF-8' LC_ALL = 'en_US.UTF-8' FASTLANE_DISABLE_COLORS=1 REALM_DISABLE_ANALYTICS=1 BUNDLE_PATH = "${HOME}/.bundle" } stages { stage('Prep') { steps { script { nvm(env.NODE_VERSION) { print "Running ${params.BUILD_TYPE} build!" /* Necessary to load methods */ mobile = load 'ci/mobile.groovy' cmn = load 'ci/common.groovy' /* Cleanup and Prep */ mobile.prep(cmn.getBuildType()) /* Run at start to void mismatched numbers */ cmn.buildNumber() } } } } stage('Lint') { steps { nvm(env.NODE_VERSION) { script { cmn.runLint() } } } } stage('Tests') { steps { nvm(env.NODE_VERSION) { script { cmn.runTests() } } } } stage('Build') { steps { nvm(env.NODE_VERSION) { script { mobile.leinBuild('ios') } } } } stage('Compile') { steps { nvm(env.NODE_VERSION) { script { api = mobile.ios.compile(cmn.getBuildType()) } } } } stage('Archive') { steps { script { archiveArtifacts api } } } stage('Upload') { steps { script { /* e2e builds get tested in SauceLabs */ if (params.BUILD_TYPE == 'e2e') { env.SAUCE_URL = mobile.ios.uploadToSauceLabs() } else { env.DIAWI_URL = mobile.ios.uploadToDiawi() } } } } } }