mirror of
https://github.com/status-im/status-mobile.git
synced 2025-01-28 09:25:44 +00:00
329c360a40
1. Don't require all the nodes to be provisioned manually to upload to Google play. 2. Don't require all the nodes to be provisioned manually to send to Slack channel. Pass it as a credential from Jenkins instead. Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
95 lines
3.0 KiB
Plaintext
95 lines
3.0 KiB
Plaintext
// We need release builds for users who want to test apps, diawi removes old builds and limits downloads, hence the need for Artifactory.
|
|
// To see env: echo sh(returnStdout: true, script: 'env')
|
|
|
|
env.LANG="en_US.UTF-8"
|
|
env.LANGUAGE="en_US.UTF-8"
|
|
env.LC_ALL="en_US.UTF-8"
|
|
env.FASTLANE_DISABLE_COLORS=1
|
|
env.REALM_DISABLE_ANALYTICS=1
|
|
|
|
def installJSDeps() {
|
|
def attempt = 1
|
|
def maxAttempts = 10
|
|
def installed = false
|
|
while (!installed && attempt <= maxAttempts) {
|
|
println "#${attempt} attempt to install npm deps"
|
|
sh 'npm install'
|
|
installed = fileExists('node_modules/web3/index.js')
|
|
attemp = attempt + 1
|
|
}
|
|
}
|
|
|
|
timeout(90) {
|
|
node ('fastlane'){
|
|
def apkUrl = ''
|
|
def ipaUrl = ''
|
|
def testPassed = true
|
|
def version
|
|
def build_no
|
|
|
|
load "$HOME/env.groovy"
|
|
|
|
try {
|
|
stage('Git & Dependencies') {
|
|
slackSend color: 'good', message: BRANCH_NAME + ' build started. ' + env.BUILD_URL
|
|
|
|
if (!BRANCH_NAME.startsWith("release/")){
|
|
error "Wrong branch name format: " + BRANCH_NAME + ", but it should be `release/version`"
|
|
}
|
|
|
|
checkout scm
|
|
|
|
sh 'git fetch --tags'
|
|
|
|
sh 'rm -rf node_modules'
|
|
sh 'cp .env.prod .env'
|
|
|
|
sh 'scripts/prepare-for-platform.sh mobile'
|
|
version = readFile("${env.WORKSPACE}/VERSION").trim()
|
|
installJSDeps()
|
|
|
|
sh 'mvn -f modules/react-native-status/ios/RCTStatus dependency:unpack'
|
|
sh 'cd ios && pod install && cd ..'
|
|
}
|
|
|
|
stage('Tag Build') {
|
|
withCredentials([[
|
|
$class: 'UsernamePasswordMultiBinding',
|
|
credentialsId: 'status-im-auto',
|
|
usernameVariable: 'GIT_USER',
|
|
passwordVariable: 'GIT_PASS'
|
|
]]) {
|
|
build_no = sh(
|
|
returnStdout: true,
|
|
script: './scripts/build_no.sh --increment'
|
|
).trim()
|
|
}
|
|
}
|
|
|
|
stage('Tests') {
|
|
sh 'lein test-cljs'
|
|
}
|
|
|
|
stage('Build') {
|
|
sh 'lein prod-build'
|
|
}
|
|
|
|
stage('Build & TestFlight (iOS)') {
|
|
withCredentials([
|
|
string(credentialsId: "slave-pass-${env.NODE_NAME}", variable: 'KEYCHAIN_PASSWORD'),
|
|
string(credentialsId: "SLACK_URL", variable: 'SLACK_URL'),
|
|
string(credentialsId: 'FASTLANE_PASSWORD', variable: 'FASTLANE_PASSWORD'),
|
|
string(credentialsId: 'APPLE_ID', variable: 'APPLE_ID'),
|
|
string(credentialsId: 'fastlane-match-password', variable:'MATCH_PASSWORD')]) {
|
|
sh "plutil -replace CFBundleShortVersionString -string ${version} ios/StatusIm/Info.plist"
|
|
sh "plutil -replace CFBundleVersion -string ${build_no} ios/StatusIm/Info.plist"
|
|
sh 'fastlane ios release'
|
|
}
|
|
}
|
|
|
|
stage('Slack Notification') {
|
|
slackSend color: 'good', message: 'Release build ' + version + ' succesfully aploade to iTunes Connect'
|
|
}
|
|
}
|
|
}
|