Aller au contenu

Intégration continue

Actuellement, nous proposons deux produits :

  • Repeato Studio : Une application de bureau qui vous permet de créer et de modifier facilement des tests et des lots de tests ➡ Documentation
  • Repeato CLI : Une application d’exécution de tests Node.js sans interface, qui vous permet d’exécuter des lots de tests sur un serveur. ➡ Documentation

Nous ne proposons actuellement aucun service cloud pour exécuter vos tests.

Cependant, vous pouvez utiliser notre exécuteur de tests pour exécuter des tests sur des services tiers tels que Github Actions, Bitrise, Codemagic ou CircleCI.

Comme ces services prennent uniquement en charge les appareils virtuels, nous vous recommandons également d’enregistrer vos tests sur ces mêmes appareils virtuels. Vous bénéficierez ainsi d’une stabilité et de performances optimales.

Avant de configurer votre pipeline de tests à distance, vous devrez vous assurer que votre espace de travail de test est envoyé vers un serveur distant (tel que GitHub).

→ Voici comment commencer à versionner votre espace de travail avec Git.

Même si Repeato CLI peut s’exécuter sur pratiquement n’importe quel serveur, nous proposons actuellement 4 guides de configuration (d’autres à venir) :

Ajoutez une étape « Repeato Test Runner » à votre workflow dans le Bitrise Workflow Editor. Vous pouvez également exécuter directement l’étape « Repeato Test Runner » avec Bitrise CLI.

Cette étape vérifie la configuration système, installe et démarre le test runner Repeato CLI headless. Après l’exécution des tests, elle définit les variables d’environnement utilisables dans les étapes suivantes.

  1. Ajoutez l’étape Repeato Test Runner à votre workflow, parmi les étapes de celui-ci.
  2. Assurez-vous que votre espace de travail de test est récupéré.
  3. Définissez le Workspace Path pour pointer vers le répertoire de l’espace de travail Repeato.
  4. Définissez le Batch Id. L’identifiant du lot de tests que vous souhaitez exécuter.
  5. Définissez le Repeato Access Token(peut être créé ici).

Veuillez vous assurer que le AVD ou l’émulateur iOS est correctement configuré. De plus, la version de votre application Android/iOS doit être installée sur l’émulateur avant l’exécution du lot de tests. Nous recommandons d’exécuter les tests sur le même appareil ou émulateur que celui utilisé initialement pour les créer. Vous bénéficierez ainsi d’une stabilité et de performances optimales.

Pour les simulateurs iOS, aucune étape ne démarre le simulateur, car la xcodebuild test commande de l’étape de test iOS démarre le simulateur par défaut.

repeato-workspace
repeato-workspace

L’émulateur a besoin d’un certain temps pour démarrer. Plus tôt vous placez l’étape dans votre workflow, plus vous pouvez effectuer de tâches, comme le clonage ou la mise en cache, avant que l’émulateur ne commence à fonctionner. Nous vous recommandons également d’ajouter Wait for Android emulator Step (dans le cas d’Android) à votre workflow, car elle empêche le gestionnaire AVD de se lancer trop tôt. Assurez-vous d’ajouter l’ Wait for Android emulator étape AVANT l’ Repeato Test Runner Step afin que notre étape puisse utiliser AVD Manager.

Voici notre pipeline de démonstration sur Bitrise, que nous avons configuré pour tester notre étape (bitrise.yml peut être téléchargé ici):

Workflow d’automatisation des tests Bitrise

  1. AVD Manager
  2. Cloner le dépôt Git
  3. Installation de Flutter pour compiler notre application basée sur Flutter.
  4. Récupération du cache Bitrise
  5. Envoi vers le cache Bitrise
  6. Attendre l’émulateur Androind
  7. Script - Comme notre prochaine et dernière étape Repeato nécessite un émulateur entièrement prêt et configuré, nous utilisons des commandes pour compiler l’APK (flutter build apk --split-per-abi) et l’envoyer à l’émulateur à l’aide de adb install (assurez-vous d’envoyer/installer l’APK compatible avec les paramètres de votre émulateur x86_64 or arm64 etc…). Vous devrez peut-être configurer une étape différente pour effectuer la compilation et l’envoyer à l’appareil (selon votre application). Assurez-vous également que, avant l’étape suivante, workspace-tests est cloné (s’il se trouve dans un dépôt distinct) — consultez la Useful links section ci-dessous.
  8. Étape Repeato Test Runner
  9. Déployer sur Bitrise.io – Artefacts L’étape Repeato copie le fichier batch-reports zip et le fichier XML JUnit dans le répertoire de téléversement Bitrise ($BITRISE_DEPLOY_DIR ). Vous pouvez utiliser cette étape pour téléverser les rapports dans la section des artefacts de test. Vous pouvez également utiliser FTP Upload ou une étape Deploy to S3 pour téléverser les rapports.
  10. Exporter les résultats des tests vers le module complémentaire Test Reports Cette étape exporte les résultats vers le module complémentaire Test Reports. Elle crée le fichier test-info.json requis et déploie les résultats des tests dans le répertoire approprié pour l’exportation.

Ce guide explique comment intégrer Repeato CLI avec GitHub Actions et remplacer l’espace de travail de démonstration par défaut par votre propre espace de travail Repeato.


Avant de commencer, assurez-vous de disposer des éléments suivants :
Section intitulée « Avant de commencer, assurez-vous de disposer des éléments suivants : »
  • Un compte GitHub
  • Repeato Studio installé
  • Un espace de travail Repeato
  • Un fichier APK Android
  • Un jeton d’accès Repeato

  1. Ouvrez Repeato Studio
  2. Cliquez sur Espace de travail dans le menu supérieur
  3. Copiez le Workspace Path

Exemple :

C:\Users\UserName\RepeatoWorkspace

Étape 2 : initialiser Git dans l’espace de travail Repeato

Section intitulée « Étape 2 : initialiser Git dans l’espace de travail Repeato »

Ouvrez Terminal / invite de commandes et accédez à votre espace de travail.

Exécutez : cd [workspace-path]

Exemple : cd C:\Users\UserName\RepeatoWorkspace

Initialiser Git :

  • git init
  • ```git add .`
  • git commit -m "Initial commit" Cette commande transforme votre espace de travail Repeato en dépôt Git.

  1. Ouvrir GitHub
  2. Cliquez sur Nouveau dépôt
  3. Créer un nouveau dépôt

Exemple de nom de dépôt :

repeato-workspace

N’ajoutez pas de fichier README lors de la création du dépôt.


Étape 4 : Envoyer l’espace de travail vers GitHub

Section intitulée « Étape 4 : Envoyer l’espace de travail vers GitHub »

Copiez l’URL de votre dépôt GitHub.

Exemple : https://github.com/yourusername/repeato-workspace.git

Exécutez :

git branch -M main
git remote add origin https://github.com/yourusername/repeato-workspace.git
git push -u origin main

Étape 5 : Ajouter le jeton d’accès Repeato dans GitHub

Section intitulée « Étape 5 : Ajouter le jeton d’accès Repeato dans GitHub »
  1. Connectez-vous au centre client Repeato

  2. Accédez à : Account → Access Tokens

  3. Cliquez sur l’ icône de copie à côté de votre jeton.

  4. Ouvrez votre dépôt GitHub.

  5. Accédez à : Settings → Secrets and variables → Actions

  6. Cliquez sur Nouveau secret de dépôt

Ajoutez les éléments suivants :

Nom du secret-REPEATO_ACCESS_TOKEN

Valeur du secret- Collez le jeton d’accès Repeato copié.

  1. Cliquez sur Ajouter le secret.

Votre GitHub Action pourra désormais s’authentifier auprès de Repeato CLI.

Si votre workflow contient :

env:
REPEATO_ACCESS_TOKEN: ${{ secrets.REPEATO_ACCESS_TOKEN }}

GitHub utilisera automatiquement le jeton enregistré dans les secrets du dépôt.

**Important :**Ne collez pas directement le jeton d’accès dans le fichier YAML. Enregistrez-le toujours dans les secrets GitHub pour des raisons de sécurité.


Dans votre dépôt GitHub, créez cette structure de dossiers : .github/workflows/

Créez un fichier : workflow.yml


Étape 7 : Ajouter la configuration du workflow GitHub

Section intitulée « Étape 7 : Ajouter la configuration du workflow GitHub »

Collez la configuration suivante dans workflow.yml.

name: Integration with REPEATO CLI
on: [push, workflow_dispatch]
permissions:
contents: write
jobs:
repeato-cli:
name: Build and run repeato tests using Repeato CLI
runs-on: ubuntu-latest
steps:
# Configure Node.js. Version 20 required by @repeato/cli-testrunner >= 1.9 (sharp dependency)
- uses: actions/setup-node@v4
with:
node-version: '20'
# Validate Repeato access token
- name: Validate Repeato access token
env:
REPEATO_ACCESS_TOKEN: ${{ secrets.REPEATO_ACCESS_TOKEN }}
run: |
if [ -z "$REPEATO_ACCESS_TOKEN" ]; then
echo "REPEATO_ACCESS_TOKEN secret is not set."
exit 1
fi
# Check out the app source code
- uses: actions/checkout@v4
# Check out the Repeato test workspace
- name: Checkout workspace repo
uses: actions/checkout@v4
with:
repository: repeato-qa/demo-workspace
path: workspace-tests
clean: false
# Enable KVM for hardware-accelerated Android emulation on Ubuntu
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
mkdir -p ~/.android/avd
# Start emulator and run the tests via npx @repeato/cli-testrunner
- name: run tests
uses: reactivecircus/android-emulator-runner@d7b53ddc6e44254e1f4cf4a6ad67345837027a66
timeout-minutes: 20
env:
REPEATO_ACCESS_TOKEN: ${{ secrets.REPEATO_ACCESS_TOKEN }}
ANDROID_AVD_HOME: /home/runner/.android/avd
with:
api-level: 29
arch: x86_64
target: google_apis
profile: pixel_3a
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -no-metrics
disable-animations: true
script: |
adb kill-server
adb start-server
npx @repeato/cli-testrunner --workspaceDir "${GITHUB_WORKSPACE}/workspace-tests" --batchId 0 --accessToken "$REPEATO_ACCESS_TOKEN" --outputDir "${GITHUB_WORKSPACE}/batch-report"
# Upload the batch test report (screenshots + results) even on failure, for debugging
- name: Upload test report
if: always()
uses: actions/upload-artifact@v4
with:
name: batch-report
path: batch-report/

Remplacez cette ligne : repository: yourusername/repeato-workspace


Exécutez :

git add .
git commit -m "Added Repeato GitHub workflow"
git push

  1. Ouvrez votre dépôt GitHub
  2. Cliquez sur Actions

Vous devriez voir :Integration with REPEATO CLI s’exécuter automatiquement.

Le workflow va :

  • Lancer l’émulateur Android
  • Télécharger l’espace de travail Repeato
  • Exécuter les tests Repeato
  • Générer le rapport de test
  • Téléverser l’artefact du rapport de lot

  • Remplacez l’URL du dépôt GitHub par celle de votre propre dépôt.
  • Remplacez repeato-workspace par le nom réel de votre dépôt d’espace de travail, s’il est différent.
  • Vérifiez que REPEATO_ACCESS_TOKEN est ajouté aux secrets GitHub.
  • La version de Node.js 20 est requise pour les versions plus récentes de Repeato CLI.

Codemagic est un service cloud d’intégration et de livraison continues (CI/CD) qui permet aux développeurs de compiler, tester et déployer leurs applications mobiles sur plusieurs plateformes. Il fait partie de l’ écosystème Flutter et prend en charge les applications Flutter et React Native. Codemagic peut aider les développeurs à automatiser de nombreuses tâches liées à la création d’applications mobiles, notamment les tests, la compilation et le déploiement vers les boutiques d’applications.

Voici les étapes à suivre :

  1. Accédez à www.codemagic.io, et créez un compte si vous n’en avez pas déjà un
  2. Créez un projet Codemagic et sélectionnez votre dépôt Git.
  3. Choisissez la plateforme pour laquelle vous souhaitez compiler (iOS, Android ou les deux).
  4. Configurez les paramètres de compilation, notamment le type de compilation, le numéro de version et l’identifiant de bundle.
  5. Ajoutez les variables d’environnement ou les secrets requis.
  6. Testez votre workflow : créez une compilation et attendez qu’elle se termine.

Voici ce que fait le workflow dès que vous envoyez des modifications vers votre dépôt Git :

  1. Workflow de compilation :

Configuration de l’environnement 2. Configuration/installation de Flutter 3. Flutter Compilation de l’APK 4. Ajout de l’APK généré aux artefacts de compilation

Workflow d’exécution des tests

  1. Configurer l’environnement avec les versions de Node et de Flutter
  2. Lancer l’émulateur
  3. Installer l’application dans l’émulateur
  4. Exécuter les Repeato tests
  5. Publier les Repeato rapports de test dans lebucket S3
  6. Envoyer éventuellement une notification sur Slack à la fin de la compilation
  7. Si la compilation échoue, vous recevrez une notification et pourrez rechercher la cause du problème.
workflows:
build-workflow:
name: Build Workflow
instance_type: mac_pro
max_build_duration: 120
environment:
node: 16.19.0
flutter: 3.0.1
groups:
- standard
scripts:
- name: Set up local.properties
script: |
#!/usr/bin/env zsh
echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties"
- name: Get Flutter packages
script: flutter packages pub get
- name: Build apk with Flutter
script: flutter build apk
publishing:
scripts:
- name: List exported files
script: |
ls -la $CM_EXPORT_DIR
artifacts:
- build/**/outputs/apk/**/*.apk
test-android-workflow:
name: Test Workflow
instance_type: mac_pro
max_build_duration: 120
environment:
node: 16.19.0
flutter: 3.0.1
groups:
- standard
scripts:
- name: Set up local.properties
script: |
#!/usr/bin/env zsh
echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties"
- name: Launch emulator
script: |
emulator @emulator & # Use `emulator -list-avds` to list all emulators
adb wait-for-device # wait for the emulator to finish loading
- name: Install app
script: |
adb install app.apk
- name: Wait for 20 seconds
script: sleep $((20*1))
- name: Run Repeato tests
script: |
npx @repeato/cli-testrunner \
--workspaceDir "demo-workspace" \
--logLevel "DEBUG" \
--batchId 0 \
--accessToken "$REPEATO_ACCESS_TOKEN" \
--waitDurationBetweenSteps 2000 \
--timeoutFactor 1.5 \
--outputDir "$CM_EXPORT_DIR/batch-report"
publishing:
scripts:
- name: List exported files
script: |
ls -la $CM_EXPORT_DIR
ls -la $CM_EXPORT_DIR/batch-report
- name: Publish to S3 bucket
script: |
sudo pip3 install awscli --upgrade
aws s3 sync "$CM_EXPORT_DIR/batch-report" s3://repeato-batch-result-demo/batch-report
echo "open report here: https://repeato-batch-result-demo.s3.eu-central-1.amazonaws.com/batch-report/index.html"
slack:
channel: '#dev'
notify_on_build_start: false # To receive a notification when a build starts
notify:
success: true
failure: true
  • Repeato CLI n’est actuellement officiellement pris en charge que sur les machines Mac de Codemagic.

Appcircle est une plateforme cloud d’intégration et de livraison continues (CI/CD) qui aide à automatiser les processus de compilation, de test et de déploiement des applications mobiles. Elle propose un ensemble complet d’outils et de fonctionnalités pour automatiser et simplifier ces processus.

Avec Appcircle auto-hébergé, vous pouvez également héberger l’infrastructure CI/CD sur vos propres serveurs ou dans un environnement cloud privé, ce qui vous offre un contrôle et une propriété complets de l’infrastructure.

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un compte actif sur Appcircle et Repeato
  • L’accès à votre projet dans Appcircle et Repeato
  • Le code source de votre application mobile stocké dans un système de contrôle de version (par ex. GitHub, Bitbucket, GitLab)
  1. Dans Appcircle, accédez à la page de compilation de votre projet et sélectionnez l’onglet « Workflows ».
  2. Pour intégrer Repeato au workflow, cliquez sur « Manage Workflow » et ajoutez « Repeato Test Runner » depuis la liste des étapes disponibles.
  3. Ajoutez l’étape « Xcodebuild for iOS Simulator » pour iOS ou « Wait for Android Emulator » pour Android, avant l’étape « Repeato Test Runner ».
  4. Ajoutez l’étape « Test Reports » après l’étape « Repeato Test Runner ». Les résultats des tests pourront ainsi être affichés sur la page de compilation.
  5. Configurez l’étape Repeato en fournissant les paramètres nécessaires, tels que « Batch ID », « Access Token » et « CLI Version », avec les informations fournies par Repeato.
  6. Configurez les champs restants, « Workspace Path » et « Log Level », avec les informations nécessaires.
  7. Enregistrez la configuration du workflow.

Remarque importante: pour l’étape « Test Reports », veillez à activer l’option « Always run this step even if the previous steps fail ». Cela garantit la réception des rapports pour les tests réussis comme pour les tests échoués.

  1. Déclenchez le workflow manuellement ou configurez des déclencheurs automatiques, par exemple lors d’un commit ou d’une fusion, selon vos préférences.
  2. Appcircle lancera le workflow, qui comprend les étapes de compilation, de test et de déploiement.
  3. L’étape Repeato du workflow exécutera les cas de test et les workflows spécifiés à l’aide de l’API Repeato.
  4. Appcircle fournira des journaux et des rapports détaillés pour chaque étape, y compris les résultats des tests Repeato.

Obtenez encore plus d’informations et de conseils sur le site web d’Appcircle

FR