Aller au contenu principal

Workflows

Enchaînez plusieurs commandes en une seule exécution automatisée avec un fichier de workflow :

ascelerate run-workflow release.txt
ascelerate run-workflow release.txt --yes # ignore toutes les invites (CI/CD)
ascelerate run-workflow # sélection interactive parmi les fichiers .workflow/.txt

Un fichier de workflow est un fichier texte brut avec une commande par ligne (sans le préfixe ascelerate). Les lignes commençant par # sont des commentaires, les lignes vides sont ignorées. Les extensions .workflow et .txt sont toutes deux prises en charge.

Exemple

release.txt pour soumettre la version 2.1.0 d'une application exemple :

# Workflow de publication pour MyApp v2.1.0

# Créer la nouvelle version sur App Store Connect
apps create-version com.example.MyApp 2.1.0

# Archiver, valider et téléverser
builds archive --scheme MyApp
builds validate --latest --bundle-id com.example.MyApp
builds upload --latest --bundle-id com.example.MyApp

# Attendre la fin du traitement du build
builds await-processing com.example.MyApp

# Mettre à jour les localisations et attacher le build
apps localizations import com.example.MyApp --file localizations.json
apps build attach-latest com.example.MyApp

# Soumettre pour examen
apps review submit com.example.MyApp

Comportement de confirmation

Sans --yes, le workflow demande une confirmation avant de démarrer, et les commandes individuelles continuent de poser des questions là où elles le feraient normalement (par ex. avant de soumettre pour examen). Avec --yes, toutes les invites sont ignorées pour une exécution entièrement automatisée.

Imbrication

Les workflows peuvent appeler d'autres workflows (run-workflow à l'intérieur d'un fichier de workflow). Les références circulaires sont détectées et empêchées.

Intégration au pipeline de build

builds upload définit une variable interne pour que les commandes await-processing et build attach-latest suivantes ciblent automatiquement le build qui vient d'être téléversé, évitant ainsi les conditions de concurrence liées au délai de propagation de l'API.