library 'status-react-jenkins@master' pipeline { agent { label 'linux' } options { timestamps() disableConcurrentBuilds() /* Prevent Jenkins jobs from running forever */ timeout(time: 45, unit: 'MINUTES') /* Limit builds retained */ buildDiscarder(logRotator( numToKeepStr: '10', daysToKeepStr: '30', artifactNumToKeepStr: '10', )) } stages { stage('Prep') { steps { script { println "Current JOB: ${env.JOB_NAME}" /* just for a shorter access */ btype = utils.getBuildType() } } } stage('Build') { parallel { stage('iOS') { steps { script { ios = jenkins.Build('status-react/combined/mobile-ios') } } } stage('Android') { steps { script { apk = jenkins.Build('status-react/combined/mobile-android') } } } stage('Android e2e') { steps { script { apke2e = jenkins.Build('status-react/combined/mobile-android-e2e') } } } } } stage('Archive') { steps { script { sh('rm -f pkg/*') jenkins.copyArts(ios) //jenkins.copyArts(iose2e) jenkins.copyArts(apk) jenkins.copyArts(apke2e) dir('pkg') { /* generate sha256 checksums for upload */ sh "sha256sum * | tee ${utils.pkgFilename(btype, 'sha256')}" archiveArtifacts('*') } } } } stage('Upload') { steps { script { /* object for easier URLs handling */ urls = [ /* mobile */ Apk: utils.pkgUrl(apk), Apke2e: utils.pkgUrl(apke2e), iOS: utils.pkgUrl(ios), /*iOSe2e: utils.pkgUrl(iose2e),*/ Diawi: utils.utils.getEnv(ios, 'DIAWI_URL'), /* upload the sha256 checksums file too */ SHA: s3.uploadArtifact(utils.pkgFind('sha256')), ] /* add URLs to the build description */ jenkins.setBuildDesc(urls) /* Create JSON file with newest build URLs */ switch (btype) { /* legacy naming, should have named it nightly.json */ case 'nightly': s3.updateBucketJSON(urls, 'latest.json'); break } } } } stage('Publish') { steps { script { switch (btype) { case 'nightly': build(job: 'misc/status.im', wait: false); break case 'release': gh.publishReleaseMobile(); break } } } } stage('Run e2e') { when { expression { btype == 'nightly' } } steps { script { e2eApk = utils.getEnv(apke2e, 'SAUCE_URL') build( job: 'end-to-end-tests/status-app-nightly', parameters: [string(name: 'APK_NAME', value: e2eApk)], wait: false ) } } } } }