119 lines
3.7 KiB
Groovy
119 lines
3.7 KiB
Groovy
pipeline {
|
|
|
|
agent {
|
|
dockerfile {
|
|
label 'common'
|
|
filename 'Dockerfile'
|
|
dir 'containers/ci'
|
|
additionalBuildArgs '--memory-swap -1'
|
|
}
|
|
}
|
|
|
|
parameters {
|
|
string(name: 'STABLE_BRANCH', defaultValue: 'master', description: 'La branche stable')
|
|
}
|
|
|
|
stages {
|
|
|
|
stage('Initialize project environment') {
|
|
steps {
|
|
script {
|
|
sh 'make init'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Run dependencies audit') {
|
|
steps {
|
|
script {
|
|
try {
|
|
sh 'make audit'
|
|
} catch(ex) {
|
|
currentBuild.result = "UNSTABLE"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Generate release') {
|
|
environment {
|
|
VERSION_CLASSIFIER = versionClassifier()
|
|
RELEASE_CHANNEL = releaseChannel()
|
|
}
|
|
steps {
|
|
script {
|
|
withCredentials([
|
|
file(credentialsId: 'ANDROID_RELEASE_KEYSTORE', variable: 'ANDROID_RELEASE_KEYSTORE'),
|
|
string(credentialsId: 'ANDROID_RELEASE_STOREPASS', variable: 'ANDROID_RELEASE_STOREPASS'),
|
|
string(credentialsId: 'ANDROID_RELEASE_KEYPASS', variable: 'ANDROID_RELEASE_KEYPASS'),
|
|
string(credentialsId: 'MAPBOX_ACCESS_TOKEN', variable: 'MAPBOX_ACCESS_TOKEN'),
|
|
string(credentialsId: 'SENTRY_DSN', variable: 'SENTRY_DSN'),
|
|
string(credentialsId: 'SENTRY_AUTH_TOKEN', variable: 'SENTRY_AUTH_TOKEN'),
|
|
string(credentialsId: 'SENTRY_PROJECT', variable: 'SENTRY_PROJECT'),
|
|
string(credentialsId: 'SENTRY_ORG', variable: 'SENTRY_ORG'),
|
|
]) {
|
|
sh '''
|
|
# Create .env file
|
|
cp .env.dist .env
|
|
sed -i "s|^SENTRY_DSN=.*|SENTRY_DSN=${SENTRY_DSN}|" .env
|
|
sed -i "s|^MAPBOX_ACCESS_TOKEN=.*|MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN}|" .env
|
|
sed -i "s|^ENVIRONMENT=.*|ENVIRONMENT=production|" .env
|
|
|
|
# Create Sentry release properties
|
|
cp android/sentry.properties.dist android/sentry-release.properties
|
|
sed -i "s|^defaults.org=.*|defaults.org=${SENTRY_ORG}|" android/sentry-release.properties
|
|
sed -i "s|^defaults.project=.*|defaults.project=${SENTRY_PROJECT}|" android/sentry-release.properties
|
|
sed -i "s|^auth.token=.*|auth.token=${SENTRY_AUTH_TOKEN}|" android/sentry-release.properties
|
|
|
|
# Create new keystore and configure gradle to use it
|
|
# See containers/ci/configure-gradle-keystore.sh
|
|
/usr/local/bin/configure-gradle-keystore
|
|
|
|
# Increase Gradle HTTP timeout
|
|
echo 'systemProp.org.gradle.internal.http.connectionTimeout=120000' >> /root/.gradle/gradle.properties
|
|
echo 'systemProp.org.gradle.internal.http.socketTimeout=120000' >> /root/.gradle/gradle.properties
|
|
'''
|
|
retry(3) {
|
|
sh 'make android-release'
|
|
}
|
|
archiveArtifacts artifacts: 'android/app/build/outputs/apk/release/*.apk', fingerprint: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
post {
|
|
always {
|
|
script {
|
|
if (currentBuild.currentResult != 'SUCCESS') {
|
|
emailext (
|
|
subject: "${currentBuild.currentResult} - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
|
|
body: """
|
|
Voir les étapes du job: ${env.BUILD_URL}flowGraphTable
|
|
|
|
Projet: ${env.GIT_URL}
|
|
Branche: ${env.GIT_BRANCH}
|
|
Commit: ${env.GIT_COMMIT}
|
|
""",
|
|
recipientProviders: [developers(), requestor()],
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
def versionClassifier() {
|
|
return env.BRANCH_NAME != params.STABLE_BRANCH ?
|
|
( 'SNAPSHOT+' + sh(script: 'git log -1 --format=%h', returnStdout: true).trim() ) :
|
|
''
|
|
}
|
|
|
|
def releaseChannel() {
|
|
return env.BRANCH_NAME != params.STABLE_BRANCH ?
|
|
env.GIT_BRANCH :
|
|
''
|
|
}
|