- Azure
- Azure DevOps
- iOS
- Android
- Git
Lors du développement d’une application, vous devez toujours gérer différents environnements et versions pour votre application. Pour livrer une nouvelle version de votre projet, une façon de le faire serait:
Ce type de process est trop long et sujet aux erreurs, alors que la seule chose que vous voulez est d’avoir la même version entre votre tag Git et votre package d’application livré. Alors pourquoi ne pas simplement lire le tag Git ?
Pour résoudre ce problème, j’ai développé un nouvel ensemble de tasks Azure DevOps appelé Mobile Versioning
, facile à utiliser dans votre pipeline et gratuit. Ce groupe de tasks permet d’extraire la version d’un tag de votre répertoire Git et d’appliquer cette version à votre application mobile comme vous le souhaitez.
Tout d’abord, accédez à votre Azure DevOps et installez l’extension Mobile Versioning dans votre organisation.
Ce groupe contient plusieurs tasks, la plus importante est la ExtractVersionFromTag
. Pour l’utiliser dans votre azure-pipelines.yml
il vous suffit de l’appeler comme ceci:
- task: ExtractVersionFromTag@1
inputs:
projectFolderPath: '$(Build.SourcesDirectory)' # Optional. Default is: $(Build.SourcesDirectory)
tagPrefixMatch: 'my_prefix' # Optional. Used to filter tags with a prefix. Ex: dev_
Cela extraira la version du dernier tag que vous avez poussé sur votre répertoire Git, sur la branche que vous avez sélectionnée pour builder votre pipeline.
Par exemple, si vous avez un tag avec une valeur de v1.2.3
ou 1.2.3
, cela affectera automatiquement les variables globales $(MAJOR)
à 1, $(MINOR)
à 2 et $(PATCH)
à 3. De plus, cette task calculera le nombre de commits depuis le premier commit de votre branche jusqu’au tag et assignera cette valeur à $(NUMBER_OF_COMMITS)
et si vous ne voulez que le nombre de commits depuis votre tag, vous pouvez utiliser $(NUMBER_OF_COMMITS_SINCE_TAG)
. Ces 4 variables seront alors utilisables dans votre azure-pipelines.yml
.
L’extension prend également en charge les tags de pré-version, donc si vous avez une version alpha comme celle-ci: v1.2.3-alpha6
l’alpha6 sera assigné à la variable $(PRE_RELEASE)
et vous pouvez l’utiliser comme les précédentes.
Par convention, les tags Git sont définis comme suit: v(Major).(Minor).(Patch)
. Mais la task ExtractVersionFromTag
gère également les tags définies sans le préfixe v
.
Cette task peut être utilisée quelle que soit la technologie que vous utilisez pour vos pipelines Azure DevOps.
Les tasks de Mobile Versioning
fournissent actuellement 3 tasks pour aider les développeurs mobiles à mettre à jour automatiquement les versions de leurs applications iOS et Android quelle que soit la technologie mobile que vous avez utilisée.
UpdateiOSVersionInfoPlist
pour le Info.plist
UpdateAndroidVersionManifest
pour le AndroidManifest.xml
UpdateAndroidVersionGradle
pour le build.gradle
dans le dossier app
Ces tasks peuvent être utilisées avec ou sans utiliser la task ExtractVersionFromTag
avant.
Pour mettre à jour automatiquement la version de votre application, il vous suffit d’ajouter ces tasks après avoir utilisé la task ExtractVersionFromTag
:
Pour iOS pour mettre à jour le Info.plist
:
- task: UpdateiOSVersionInfoPlist@1
inputs:
infoPlistPath: 'your_project/Info.plist'
bundleShortVersionString: '$(MAJOR).$(MINOR).$(PATCH)-$(PRE_RELEASE)' # Optional. Default is: $(MAJOR).$(MINOR).$(PATCH)
bundleVersion: '$(NUMBER_OF_COMMITS)' # Optional. Default is: $(NUMBER_OF_COMMITS)
Pour Android:
Si vous devez mettre à jour le AndroidManifest.xml
:
- task: UpdateAndroidVersionManifest@1
inputs:
androidManifestPath: 'your_project/AndroidManifest.xml'
versionName: '$(MAJOR).$(MINOR).$(PATCH)-$(PRE_RELEASE)' # Optional. Default is: $(MAJOR).$(MINOR).$(PATCH)
versionCode: '$(NUMBER_OF_COMMITS)' # Optional. Default is: $(NUMBER_OF_COMMITS)
Si vous devez mettre à jour le build.gradle
dans le dossier app
:
- task: UpdateAndroidVersionGradle@1
inputs:
buildGradlePath: 'your_project/app/build.gradle'
versionName: '$(MAJOR).$(MINOR).$(PATCH)-$(PRE_RELEASE)' # Optional. Default is: $(MAJOR).$(MINOR).$(PATCH)
versionCode: '$(NUMBER_OF_COMMITS)' # Optional. Default is: $(NUMBER_OF_COMMITS)
Notez que pour ces 3 tasks, vous pouvez remplacer la valeur par défaut des propriétés par exemple au lieu de:
bundleShortVersionString: '$(MAJOR).$(MINOR).$(PATCH)'
vous pouvez la concaténer avec une variable que vous avez précédemment définie:
bundleShortVersionString: '$(MAJOR).$(MINOR).$(PATCH)-$(PRE_RELEASE)-($(NUMBER_OF_COMMITS))'
ou l’utiliser simplement comme ceci:
bundleShortVersionString: '1.2.3'
Ce projet est un premier point de départ pour aider les développeurs à gérer les versions de leurs applications. N’hésitez pas à contribuer à ce projet si vous le souhaitez.
Vous trouverez des exemples d’utilisation sur le répertoire Github du projet.
Happy coding !