#!/usr/bin/env groovy node('linux') { env.GOPATH = "${env.WORKSPACE}" env.PATH = "${env.PATH}:${env.GOPATH}/bin" cloneDir = 'src/github.com/status-im/status-go' paramBranch = env.branch ? env.branch : '*/develop' dir(cloneDir) { try { deleteDir() } catch (err) { echo "failure while cleaning the directory" } } checkout( changelog: false, poll: true, scm: [$class: 'GitSCM', branches: [[name: paramBranch]], doGenerateSubmoduleConfigurations: false, extensions: [ [$class: 'RelativeTargetDirectory', relativeTargetDir: cloneDir] ], submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/status-im/status-go']]] ) def remoteOriginRegex = ~/^remotes\/origin\// dir(cloneDir) { gitSHA = sh(returnStdout: true, script: 'git rev-parse HEAD').trim() gitShortSHA = gitSHA.take(8) gitBranch = sh(returnStdout: true, script: 'git name-rev --name-only HEAD').trim() - remoteOriginRegex } stage('Debug') { sh 'env' println(gitBranch) println(gitSHA) } stage('Test') { dir(cloneDir) { sh 'make setup' sh 'make ci' } } stage('Build') { sh 'go get github.com/karalabe/xgo' parallel ( 'statusgo-android': { dir(cloneDir) { sh 'make statusgo-android' } }, 'statusgo-ios-simulator': { dir(cloneDir) { sh ''' make statusgo-ios-simulator cd build/bin/statusgo-ios-9.3-framework/ zip -r status-go-ios.zip Statusgo.framework ''' } } ) } stage('Deploy') { dir(cloneDir) { // For branch builds, replace the old artifact. For develop keep all of them. def version = sh( script: "git describe --exact-match --tag 2>/dev/null || git describe --always", returnStdout: true ).trim() def server = Artifactory.server 'artifacts' 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) slackSend color: 'good', message: 'status-go `' + version + '` was built successfully. ' + env.BUILD_URL } } }