mirror of
https://github.com/status-im/status-react.git
synced 2025-01-10 02:56:07 +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>
106 lines
3.0 KiB
Plaintext
106 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 ('macos'){
|
|
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 (Android)') {
|
|
sh 'cd android && ./gradlew react-native-android:installArchives && ./gradlew assembleRelease -PreleaseVersion=' + version
|
|
}
|
|
|
|
stage('Deploy (Android)') {
|
|
withCredentials([
|
|
string(
|
|
credentialsId: "SUPPLY_JSON_KEY_DATA",
|
|
variable: 'GOOGLE_PLAY_JSON_KEY'
|
|
),
|
|
string(
|
|
credentialsId: "SLACK_URL",
|
|
variable: 'SLACK_URL'
|
|
)
|
|
]) {
|
|
sh ('bundle exec fastlane android release')
|
|
}
|
|
}
|
|
} catch (e) {
|
|
slackSend color: 'bad', message: 'Release build failed uploading to the Play Market. ' + env.BUILD_URL
|
|
throw e
|
|
}
|
|
|
|
stage('Slack Notification') {
|
|
slackSend color: 'good', message: 'Release build ' + version + ' succesfully aploade to the Play Market'
|
|
}
|
|
}
|
|
}
|