Accéder directement au contenu principal

Versions Taskfile

La syntaxe et les fonctionnalités du fichier Taskfile changent avec le temps. Ce document explique quels sont les changments pour chacune des versions et comment vous pouvez mettre à jour votre Taskfile.

Qu'est-ce que la version de Taskfile signifie

La version de Taskfile suit la version de Task. Par exemple : Le changement pour la version 2 dans Taskfile signifie que la version v2.0.0 de Task doit être publiée pour pouvoir le supporter.

Le paramètrre version: dans Taskfile accepte une version suivant la nomenclature semver. Donc 2, 2.0 et 2.0.0 sont acceptés. Si vous choisissez d'utiliser la version 2.0, Task ne va pas activer les fonctionnalités des versions 2.1 et celles d'après. Mais si vous choississez d'utiliser la version 2, alors toutes les fonctionnalités des versions 2.x.x seront disponibles, et non celles des versions 3.0.0 et celles d'après.

Version 3 Dernier

Voici quelques modifications majeures effectuées sur v3:

  • Les logs de Task dans le terminal sont colorés
  • Ajout du support des fichiers .env et similaires
  • Ajout du paramètre label: dans les tâches pour que l'on puisse renommer la tâche dans les logs
  • Le paramètre global method: a été ajouté pour permettre de définir la méthode par défault, et la valeur par défaut de Task a été changée pour checksum
  • Deux variables magiques ont été ajoutées lors de l'utilisation de status:: CHECKSUM et TIMESTAMP qui contiennent respectivement le checksum XXH3 et le plus récent timestamp de modification des fichiers répertoriés dans sources:
  • Aussi, la variable TASK est toujours disponible avec le nom de la tâche courante
  • Les variables CLI sont toujours traitées comme des variables globales
  • Ajout de l'option dir: dans includes pour permettre de choisir dans quel dossier un Taskfile doit être exécuté :
includes:
docs:
taskfile: ./docs
dir: ./docs
  • Implémentation de syntaxes courtes. Toutes les syntaxes ci-dessous sont équivalentes:
version: '3'

tasks:
print:
cmds:
- echo "Hello, World!"
version: '3'

tasks:
print:
- echo "Hello, World!"
version: '3'

tasks:
print: echo "Hello, World!"
  • Il y a eu une réécriture majeure sur la manière dont les variables sont gérées. C'est maintenant plus simple à comprendre. Les paramètres expansions: ont été retirées vu qu'ils n'étaient plus nécessaires. C'est l'ordre dans lequel Task va traiter les variables, chaque niveau peut voir les variables définies par la précédente et les remplacer.
    • Variables d'environnement
    • Variables globales + CLI
    • Variables d'appel
    • Variables Task

Version 2.6

attention

Le support du schéma v2 est déprécié et sera retiré dans une future version.

La version 2.6 vient avec des preconditions dans les tâches.

version: '2'

tasks:
upload_environment:
preconditions:
- test -f .env
cmds:
- aws s3 cp .env s3://myenvironment

Veuillez consulter la documentation

Version 2.2

attention

Le support du schéma v2 est déprécié et sera retiré dans une future version.

La version 2.2 est fournie avec une option globale includes pour inclure d'autres Taskfiles :

version: '2'

includes:
docs: ./documentation # will look for ./documentation/Taskfile.yml
docker: ./DockerTasks.yml

Version 2.1

attention

Le support du schéma v2 est déprécié et sera retiré dans une future version.

La version 2.1 inclut une option globale output permettant d'avoir plus de contrôle sur la manière dont les logs sont affichés dans la console (voir la documentation pour plus d'informations):

version: '2'

output: prefixed

tasks:
server:
cmds:
- go run main.go
prefix: server

À partir de cette version, il est également possible d'ignorer les erreurs d'une commande ou d'une tâche (vérifiez la documentation ici ) :

version: '2'

tasks:
example-1:
cmds:
- cmd: exit 1
ignore_error: true
- echo "This will be print"

example-2:
cmds:
- exit 1
- echo "This will be print"
ignore_error: true

Version 2.0

attention

Le support du schéma v2 est déprécié et sera retiré dans une future version.

À la version 2, nous avons introduit le paramètre version: pour nous permettre d'évoluer vers de nouvelles fonctionnalités avec sans casser les fichiers de tâches existants. La nouvelle syntaxe est la suivante:

version: '2'

tasks:
echo:
cmds:
- echo "Hello, World!"

La version 2 vous permet d'écrire des variables globales directement dans le fichier Taskfile, si vous ne voulez pas créer un fichier Taskvars.yml:

version: '2'

vars:
GREETING: Hello, World!

tasks:
greet:
cmds:
- echo "{{.GREETING}}"

A présent, l'ordre de priorité des variables est :

  1. Variables Task
  2. Variables d'appel
  3. Variables Taskfile
  4. Variables du fichier Taskvars
  5. Variables d'environnement

Une nouvelle option globale a été ajoutée pour configurer le nombre d'extensions de variables (par défaut 2):

version: '2'

expansions: 3

vars:
FOO: foo
BAR: bar
BAZ: baz
FOOBAR: '{{.FOO}}{{.BAR}}'
FOOBARBAZ: '{{.FOOBAR}}{{.BAZ}}'

tasks:
default:
cmds:
- echo "{{.FOOBARBAZ}}"

Version 1

attention

Le support du schéma v1 a été supprimé de Task >= v3.0.0.

Dans la première version du Taskfile, le champ version: n'était pas disponible, parce que les tâches étaient à la racine du document YAML. Comme ceci:

echo:
cmds:
- echo "Hello, World!"

L'ordre de priorité de la variable était également différent :

  1. Variables d'appel
  2. Variables d'environnement
  3. Variables Task
  4. Variables Taskvars.yml