Photo par Nattipat Vesvarute

Gérez automatiquement la version de votre application mobile avec les GitHub Actions

Automatisez le versioning de votre application

Créé par Damien Aicheh le 15/07/2021 · 7 mins

Lors du développement d’une application, vous devez toujours gérer les versions de votre application. Pour livrer une nouvelle version de votre application, une façon de le faire serait:

  • Mettre à jour la version de votre application dans le code
  • Commiter votre code
  • Ajoutez un nouveau tag de version à votre répertoire Git
  • Démarrez votre workflow pour générer votre nouveau package d’application

Ce type de processus est trop long et sujet aux erreurs, alors que la seule chose que vous souhaitez est d’avoir la même version entre votre tag Git et votre package d’application livré. Alors pourquoi ne pas simplement lire la balise Git ?

Présentation de nouvelles GitHub Actions

Pour résoudre ce problème, j’ai développé un nouvel ensemble de GitHub Actions gratuites à utiliser dans votre workflow. Ces actions permettent d’extraire la version d’un tag de répertoire Git et de l’utiliser à votre projet comme vous le souhaitez.

Les voici:

Usage

Pour utiliser l’une de ces actions, rien de plus simple, suivez l’un des liens ci-dessus, puis cliquez sur le bouton Use latest version. Cela ouvrira une boîte de dialogue avec le code yaml pour l’utiliser.

Use action

Extraire la version du tag

La première action est la plus importante : extraire-version-de-tag-action. Pour l’utiliser dans votre workflow, vous devez d’abord définir actions/checkout@v2 avec la propriété fetch-depth à 0. Cela garantira que toutes les informations des tags seront disponibles.

- name: Checkout
  uses: actions/checkout@v2
  with:
    fetch-depth: 0 # Mandatory to use the extract version from tag action

- name: Extract version from tag
  uses: damienaicheh/extract-version-from-tag-action@v1.0.0

Cela extraira la version du dernier tag que vous avez poussé sur votre répertoire Git, à partir de la branche que vous avez sélectionnée pour créer votre workflow. Ensuite, l’action affectera chaque partie de votre tag dans une variable globale.

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 action 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 workflow.yml.

De plus l’action 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 l’action extract-version-from-tag-action gère également les tags définies sans le préfixe v.

Cette action peut être utilisée quelle que soit la technologie que vous utilisez pour vos GitHub Actions.

Mettez à jour la version de votre application mobile

Il est maintenant temps d’utiliser les trois autres GitHub Actions pour mettre à jour vos versions d’applications iOS et Android quelle que soit la technologie mobile que vous avez utilisée.

  • update-ios-version-info-plist-action pour le Info.plist
  • update-android-version-manifest-action pour le AndroidManifest.xml
  • update-android-version-gradle-action pour le build.gradle dans le dossier app

Ces actions peuvent être utilisées avec ou sans l’action extract-version-from-tag-action avant.

Supposons que vous utilisiez l’action extraire-version-de-tag-action auparavant, vous pourriez utiliser les variables dans ces 3 actions comme ceci :

Pour iOS pour mettre à jour l’Info.plist:


- name: Update Info.plist
  uses: damienaicheh/update-ios-version-info-plist-action@v1.0.0
  with:
    info-plist-path: './path_to_your/Info.plist'
    bundle-short-version-string: '${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}'
    bundle-version: ${{ env.NUMBER_OF_COMMITS }}
    print-file: true

Pour Android:

Si vous devez mettre à jour l’AndroidManifest.xml:


- name: Update AndroidManifest.xml
  uses: damienaicheh/update-android-version-manifest-action@v1.0.0
  with:
    android-manifest-path: './path_to_your/AndroidManifest.xml'
    version-code: ${{ env.NUMBER_OF_COMMITS }}
    version-name: '${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}'
    print-file: true

Si vous devez mettre à jour le build.gradle dans le dossier app:


- name: Update gradle version for Android
  uses: damienaicheh/update-android-version-gradle-action@v1.0.0
  with:
    build-gradle-path: './path_to_your/build.gradle'
    version-code: ${{ env.NUMBER_OF_COMMITS }}
    version-name: '${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}'
    print-file: true

Le détail de chacun des paramètres d’entrée de ces actions est également disponible directement sur leur répertoire ou sur le GitHub Marketplace.

Personnaliser la version

Notez que pour ces 3 actions vous pouvez définir la valeur des propriétés de différentes manières par exemple :


version-name: '${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}'

vous pouvez les concaténer avec n’importe quelle variable que vous avez définie précédemment :


version-name: '${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}-${{ env.PRE_RELEASE }}-(${{ env.NUMBER_OF_COMMITS }})'

ou utilisez-le simplement comme ceci :

version-name: '1.2.3'

Touche finale

Ces actions sont un premier point de départ pour aider les développeurs à gérer leurs versions d’applications avec les GitHub Actions. N’hésitez pas à contribuer à ce projet si vous le souhaitez.

Happy coding!

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !