Configuration ci cd

This commit is contained in:
bastien
2026-07-10 16:00:20 +02:00
parent 5366fa3794
commit 412f7958fe
8 changed files with 535 additions and 0 deletions
+121
View File
@@ -0,0 +1,121 @@
def call(Map config = [:]) {
def packageName = config.get('name', 'flutter-app')
def apiVersion = config.get('api', '36')
def dockerImage = "jenkins/build-flutter-android:${apiVersion}"
// URLs configurables depuis le Jenkinsfile si besoin
def debugApiBaseUrl = config.get('debugApiBaseUrl', 'http://192.168.1.37:8000/api/v1')
def releaseApiBaseUrl = config.get('releaseApiBaseUrl', 'https://laundry-dev.abpcode.fr//api/v1')
pipeline {
agent any
environment {
PUB_CACHE = "${WORKSPACE}/.pub-cache"
GRADLE_USER_HOME = "${WORKSPACE}/.gradle"
}
stages {
stage('Prepare docker') {
steps {
script {
writeFile file: 'Dockerfile', text: libraryResource("dockerfiles/flutter/android/${apiVersion}/Dockerfile")
docker.build(dockerImage, "--pull=false .")
}
}
}
stage('Checkout') {
steps {
cleanWs()
checkout scm
}
}
stage('Flutter doctor') {
steps {
script {
docker.image(dockerImage).inside('-u root') {
sh 'git config --global --add safe.directory "$WORKSPACE" || true'
sh 'flutter --version'
sh 'flutter doctor -v'
}
}
}
}
stage('Dependencies') {
steps {
script {
docker.image(dockerImage).inside('-u root') {
sh 'git config --global --add safe.directory "$WORKSPACE" || true'
sh 'flutter pub get'
}
}
}
}
stage('Analyze') {
steps {
script {
docker.image(dockerImage).inside('-u root') {
sh 'git config --global --add safe.directory "$WORKSPACE" || true'
sh 'flutter analyze'
}
}
}
}
stage('Test') {
steps {
script {
docker.image(dockerImage).inside('-u root') {
sh 'git config --global --add safe.directory "$WORKSPACE" || true'
sh 'flutter test'
}
}
}
}
stage('Build Android') {
steps {
script {
docker.image(dockerImage).inside('-u root') {
sh 'git config --global --add safe.directory "$WORKSPACE" || true'
if (env.TAG_NAME) {
sh """
flutter build apk --release \
--dart-define=API_BASE_URL=${releaseApiBaseUrl}
"""
} else {
sh """
flutter build apk --debug \
--dart-define=API_BASE_URL=${debugApiBaseUrl}
"""
}
}
}
}
}
stage('Publish') {
steps {
script {
if (env.TAG_NAME) {
env.deployment = 'prod'
env.version = "${env.TAG_NAME}-${env.BUILD_NUMBER}"
sh "cp build/app/outputs/flutter-apk/app-release.apk ./${packageName}-${env.deployment}-${env.version}.apk"
} else {
env.deployment = 'debug'
env.version = "${env.BUILD_NUMBER}"
sh "cp build/app/outputs/flutter-apk/app-debug.apk ./${packageName}-${env.deployment}-${env.version}.apk"
}
archiveArtifacts artifacts: "${packageName}-${env.deployment}-${env.version}.apk", fingerprint: true
}
}
}
}
}
}