#!/usr/bin/env groovy @NonCPS def getVersion(branch, sha, buildNumber) { version = branch.replaceAll(/\//, '-') if (sha?.trim()) { version = version + '-g' + sha } if (buildNumber?.trim()) { version = version + '-' + buildNumber } return version } node('linux') { paramBranch = env.branch ? ('*/' + env.branch) : '*/develop' checkout( changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: paramBranch]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/status-im/status-go']]] ) def remoteOriginRegex = ~/^remotes\/origin\// gitSHA = sh(returnStdout: true, script: 'git rev-parse HEAD').trim() gitShortSHA = gitSHA.take(7) gitBranch = sh(returnStdout: true, script: 'git name-rev --name-only HEAD').trim() - remoteOriginRegex stage('Debug') { sh 'env' println(gitBranch) println(gitSHA) } // TODO(adam): enable when unit tests start passing // stage('Test') { // sh 'make ci' // } stage('Build') { sh 'go get github.com/karalabe/xgo' parallel ( 'statusgo-android': { if (env.platform == 'android') { sh 'make statusgo-android' } else { print 'Skipping Android' } }, 'statusgo-ios-simulator': { if (env.platform == 'ios-simulator') { sh ''' make statusgo-ios-simulator cd build/bin/statusgo-ios-9.3-framework/ zip -r status-go-ios.zip Statusgo.framework ''' } else { print 'Skipping ios-simulator' } } ) } stage('Deploy') { // For branch builds, replace the old artifact. For develop keep all of them. def version = gitBranch == 'develop' ? getVersion(gitBranch, gitShortSHA, '') : getVersion(gitBranch, gitShortSHA, env.BUILD_ID) def server = Artifactory.server 'artifactory' def uploadSpec = """{ "files": [ { "pattern": "build/bin/statusgo-android-16.aar", "target": "libs-release-local/status-im/status-go/${version}/status-go-${version}.aar" }, { "pattern": "build/bin/statusgo-ios-9.3-framework/status-go-ios.zip", "target": "libs-release-local/status-im/status-go-ios-simulator/${version}/status-go-ios-simulator-${version}.zip" } ] }""" def buildInfo = Artifactory.newBuildInfo() buildInfo.env.capture = false buildInfo.name = 'status-go (' + gitBranch + '-' + gitShortSHA + ')' server.upload(uploadSpec, buildInfo) server.publishBuildInfo(buildInfo) } }