124 lines
3.8 KiB
Groovy
124 lines
3.8 KiB
Groovy
properties([
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '3',
|
|
daysToKeepStr: '7',
|
|
))
|
|
])
|
|
|
|
env.LANG="en_US.UTF-8"
|
|
env.LANGUAGE="en_US.UTF-8"
|
|
env.LC_ALL="en_US.UTF-8"
|
|
env.FASTLANE_DISABLE_COLORS=1
|
|
|
|
def installJSDeps() {
|
|
def attempt = 1
|
|
def maxAttempts = 10
|
|
def installed = false
|
|
while (!installed && attempt <= maxAttempts) {
|
|
println "#${attempt} attempt to install npm deps"
|
|
sh 'scripts/prepare-for-platform.sh mobile'
|
|
sh 'npm install'
|
|
installed = fileExists('node_modules/web3/index.js')
|
|
attemp = attempt + 1
|
|
}
|
|
}
|
|
|
|
timeout(90) {
|
|
node ('fastlane') {
|
|
load "$HOME/env.groovy"
|
|
|
|
try {
|
|
stage('Git & Dependencies') {
|
|
slackSend color: 'good', message: BRANCH_NAME + '(' + env.CHANGE_BRANCH + ') build started. ' + env.BUILD_URL
|
|
|
|
checkout scm
|
|
|
|
try {
|
|
sh 'git rebase origin/develop'
|
|
} catch (e) {
|
|
sh 'git rebase --abort'
|
|
throw e
|
|
}
|
|
|
|
sh 'rm -rf node_modules'
|
|
sh 'cp .env.jenkins .env'
|
|
|
|
installJSDeps()
|
|
|
|
sh 'mvn -f modules/react-native-status/ios/RCTStatus dependency:unpack'
|
|
sh 'cd ios && pod install && cd ..'
|
|
}
|
|
stage('Code style checks') {
|
|
sh 'lein cljfmt check'
|
|
}
|
|
|
|
stage('Tests') {
|
|
sh 'lein test-cljs'
|
|
}
|
|
|
|
stage('Build') {
|
|
sh 'lein prod-build'
|
|
}
|
|
|
|
// Android
|
|
stage('Build (Android)') {
|
|
sh 'cd android && ./gradlew react-native-android:installArchives && ./gradlew assembleRelease'
|
|
}
|
|
|
|
stage('Deploy (Android)') {
|
|
withCredentials([
|
|
string(credentialsId: 'diawi-token', variable: 'DIAWI_TOKEN'),
|
|
string(credentialsId: 'GIT_HUB_TOKEN', variable: 'GITHUB_TOKEN'),
|
|
string(credentialsId: 'SLACK_JENKINS_WEBHOOK', variable: 'SLACK_URL')
|
|
]) {
|
|
sh 'fastlane android upload_diawi'
|
|
}
|
|
}
|
|
|
|
// iOS
|
|
stage('Build (iOS)') {
|
|
withCredentials([
|
|
string(credentialsId: "slave-pass-${env.NODE_NAME}", variable: 'KEYCHAIN_PASSWORD'),
|
|
string(credentialsId: 'fastlane-match-password', variable:'MATCH_PASSWORD')]) {
|
|
sh 'fastlane ios adhoc'
|
|
}
|
|
}
|
|
|
|
stage('Deploy (iOS)') {
|
|
withCredentials([
|
|
string(credentialsId: 'diawi-token', variable: 'DIAWI_TOKEN'),
|
|
string(credentialsId: 'GIT_HUB_TOKEN', variable: 'GITHUB_TOKEN'),
|
|
string(credentialsId: 'SLACK_JENKINS_WEBHOOK', variable: 'SLACK_URL')
|
|
]) {
|
|
sh 'fastlane ios upload_diawi'
|
|
}
|
|
}
|
|
|
|
// Android for e2e
|
|
stage('Build (Android) for e2e tests') {
|
|
sh 'cd android && mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/app-release.original.apk && ENVFILE=.env.e2e ./gradlew assembleRelease'
|
|
}
|
|
|
|
stage('Upload apk for e2e tests') {
|
|
if (env.CHANGE_ID != null) {
|
|
env.SAUCE_LABS_APK = env.CHANGE_ID + '.apk'
|
|
withCredentials([
|
|
string(credentialsId: 'SAUCE_ACCESS_KEY', variable: 'SAUCE_ACCESS_KEY'),
|
|
string(credentialsId: 'SAUCE_USERNAME', variable: 'SAUCE_USERNAME'),
|
|
string(credentialsId: 'diawi-token', variable: 'DIAWI_TOKEN'),
|
|
string(credentialsId: 'GIT_HUB_TOKEN', variable: 'GITHUB_TOKEN'),
|
|
string(credentialsId: 'SLACK_JENKINS_WEBHOOK', variable: 'SLACK_URL')
|
|
]) {
|
|
sh 'fastlane android saucelabs'
|
|
sh 'fastlane android upload_diawi'
|
|
}
|
|
}
|
|
}
|
|
|
|
} catch (e) {
|
|
slackSend color: 'bad', message: BRANCH_NAME + ' failed to build. ' + env.BUILD_URL
|
|
throw e
|
|
}
|
|
}
|
|
}
|