diff --git a/dkrun b/dkrun index 4624ed9..c2424e7 100755 --- a/dkrun +++ b/dkrun @@ -16,7 +16,11 @@ USAGE OPTIONS -m, --machine MACHINE - Sélectionner la machine spécifiée avant de dérouler le script + Sélectionner la machine spécifiée pour les opérations docker. Cette + option est incompatible avec --context + -M, --context CONTEXT + Sélectionner le contexte spécifié pour les opérations docker et + kubernetes. Cette option est incompatible avec --machine -n, --no-build Ne pas reconstruire l'image avant de déployer/exécuter l'application @@ -57,682 +61,6 @@ OPTIONS " } -function display_help_dkbuild() { - uecho "\ -OPTIONS - --help Aide générale -* --hdk Aide sur le format du fichier dkbuild - --href Référence sur les commandes utilisables dans un fichier dkbuild - -DKBUILD -======= - -Un fichier dkbuild est un script shell utilisé pour construire une ou plusieurs -images docker. - -A cause de l'implémentation utilisée pour les directives, le fichier doit être -parcouru (i.e exécuté) à de multiples reprises pour analyser les paramètres et -variables définis. il faut donc \"protéger\" les appels de scripts externes ou -de fonctions gourmandes avec les commandes 'run' et 'call' pour éviter que ces -commandes ne soient exécutées à plusieurs reprises. - -Quand un fichier dkbuild est exécuté, le répertoire courant est toujours le -répertoire qui contient le fichier - -## Distributions ############################################################### - -Une distribution s'entend au sens de la distribution linux utilisée comme base -pour l'image construite. L'idée est de pouvoir construire des images similaires -qui ne diffèrent que par la version de base du système d'exploitation - -Pour une même distribution, plusieurs versions d'une image peuvent être -construites. Une version est définie en ajoutant un préfixe à la distribution. - -La commande 'setdists' permet de lister explicitement les distributions valides -(et les versions associées le cas échéant). Si la distribution sélectionnée par -l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur. -La première distribution listée est spéciale: c'est la distribution la plus -récente, celle qui reçoit le tag :latest - -La commande 'dist' permet de tester si la distribution spécifiée en argument a -été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la -dernière distribution. - -La commande 'version' permet de tester si la version spécifiée en argument a été -sélectionnée par l'utilisateur. On part du principe qu'une distribution a déjà -été testée au préalable avec 'dist' - -Exemple: - setdists 3.0-d11 3.1-d11 d10 d9 - if dist d11; then - if version 3.0; then - ... - elif version 3.1; then - ... - fi - elif dist d10; then - ... - elif dist d9; then - ... - fi -Dans une même distribution, les versions doivent être ordonnées de la plus -ancienne à la plus récente. ici, la version 3.1 est listée après la version 3.0 -pour que l'image construite aie le tag :latest - -Note: 'setdists' ne doit être utilisé qu'une seule fois. Les invocations -suivantes sont ignorées. - -## Profils ##################################################################### - -Un profil correspond à l'environnement de destination de l'image: production, -test, développement. - -La commande 'setprofiles' permet de lister explicitement les profils valides. -Si le profil sélectionné par l'utilisateur n'est pas dans la liste fournie, le -script s'arrête avec une erreur. Le premier profil listé est spécial: c'est le -profil par défaut. - -La commande 'profile' permet de tester si le profil spécifié en argument a été -sélectionné par l'utilisateur. L'argument 'DEFAULT' permet de tester le profil -par défaut. - -Exemple: - setprofiles prod devel - if profile prod; then - ... - elif profile devel; then - ... - fi - -Si le build est indépendant de la distribution, ou si la distribution est -utilisée sans version, alors il est possible de préfixer le profil d'une -version. Exemple: - setprofiles v1-prod v2-prod - if profile prod; then - if version v1; then - ... - elif version v2; then - ... - fi - fi -Dans un même profil, les versions doivent être ordonnées de la plus ancienne à -la plus récente. - -Si les distributions sont utilisées avec des versions, alors c'est une erreur de -spécifier une version dans le profil - -Note: 'setprofiles' ne doit être utilisé qu'une seule fois. Les invocations -suivantes sont ignorées. - -## Versions #################################################################### - -Si la version de l'image à construire n'est liée ni à la distribution, ni au -profil, il est possible de la spécifier avec la commande 'setversion'. La -version spécifiée avec 'setversion' est utilisée par défaut pour toutes les -images dont la version n'est pas spécifiée dans la distribution ou le profil. - -La commande 'setversion' est évaluée en même temps que les commandes 'setenv', -ainsi il est possible d'utiliser la valeur d'une variable définie au préalable. - -## Environnement ############################################################### - -La commande 'machine' permet de tester si le build est fait sur la machine -spécifiée. Ce peut être la machine courante, ou la machine spécifiée avec -l'option --machine de la commande build - -Exemple: - if machine host{1,2,3}-prod; then - setprofiles prod - elif machine host{1,2,3}-test; then - setprofiles test - else - setprofiles devel test prod - fi - -Les variables sont de deux types: argument de build ou variable d'environnement - -La commande 'setenv' permet de définir une variable d'environnement. La commande -'setarg' permet de définir un argument de build. Ces valeurs sont alors -automatiquement utilisées à l'endroit approprié. - -Ces commandes acceptent une liste d'argument de la forme VAR[=VALUE] - -Si la valeur n'est pas spécifiée (e.g 'setarg DESTDIR'), alors la variable doit -être définie dans l'environnement courant. Si la variable n'est pas définie dans -l'environnement, alors le script s'arrête avec une erreur. - -Une fois qu'une variable est définie, il n'est plus possible de la modifier. Les -commandes alternatives 'resetenv' et 'resetarg' permettent de pallier cette -limitation. - -## Valeurs par défaut ########################################################## - -Toutes les commandes ont des arguments requis, mais aussi des arguments -facultatifs qui sont fournis sous la forme d'une liste d'éléments VAR=VALUE - -La commande 'default' permet de spécifier les valeurs par défaut de ces -arguments. Exemple: - if profile prod; then - default composer mode=production - elif profile devel; then - default composer mode=development - fi - composer install path/to/project - -Une fois qu'une valeur par défaut est définie, il n'est plus possible de la -modifier. La commande alternative 'resetdefault' permet de pallier cette -limitation. - -Définir des valeurs par défaut pour la commande 'docker' impacte la commande -'build' et toutes les commandes qui utilisent docker, comme 'composer' ou 'mvn' - -## Synchronisation de fichiers ################################################# - -On peut vouloir s'assurer de la présence de certains fichiers à certains -endroits. - -La commande 'checkout URL DESTDIR' permet de s'assurer qu'un checkout du dépôt -spécifié existe dans le répertoire DESTDIR. La branche ou le commit à utiliser, -la source en mode développement, etc. peuvent être spécifiés par des arguments -facultatifs. - -La commande 'copy SRC DEST' permet de s'assurer que SRC et DEST sont -synchronisés. Si possible, des liens physiques sont créés pour conserver -l'espace disque. Par défaut, les fichiers ne sont créés que s'ils n'existent -pas. - -## Support Composer, Maven, commandes génériques ############################### - -La commande 'composer install' permet d'installer les dépendances Composer d'un -projet - -La commande 'mvn package' permet de construire un projet Java. - -La commande 'run' permet de lancer une commande quelconque. La commande est -cherchée dans le PATH et exécutée avec son chemin complet. celà permet de lancer -des commandes comme 'mvn' ou 'composer' ou dont le nom correspond à une fonction -déjà définie. - -La commande 'call' permet de lancer une commande quelconque. La différence avec -'run' est que la commande est lancée telle quelle, sans modifications. Si une -fonction est définie, elle sera utilisée en priorité. - -Si elles sont utilisées sans argument, les commandes 'composer', 'mvn', 'run' et -'call' retournent vrai si la commande doit être exécutée dans le contexte -courant. Celà permet d'implémenter des traitements complexes. Ainsi le script -suivant: - run cmd1 - run cmd2 -est équivalent à: - if run; then - cmd1 - cmd2 - fi - -En phase d'analyse, ces commandes retournent faux, donc cmd1 et cmd2 ne seront -lancés qu'une seule fois lors de l'invocation de dkbuild. Cela signifie qu'il ne -faut pas utiliser des directives de définition de variables à l'intérieur. Par -exemple, le script suivant ne produit pas forcément l'effet escompté: - if run; then - setenv var=value - default - cmd args... - fi - -Bien entendu, si on veut être sûr que des commandes externes soient lancées, on -peut toujours utiliser 'run' à l'intérieur, e.g - if composer; then - run extcmd - func - composer args... - fi - -## Support Dockerfile et docker build ########################################## - -La commande 'dockerfile OUTPUT' permet de construire de façon incrémentale et -dynamique un fichier Dockerfile. Toutes les commandes d'un fichier dockerfile -traditionnelles sont reconnues et elles doivent être spécifiées après la -commande 'dockerfile'. - -La commande 'build' termine la construction du fichier Docker puis lance la -construction de l'image. -* arguments de build: les arguments de build définis dans le script sont passés - à docker pour la construction de l'image -* nom de l'image et tag: par défaut, la variable d'environnement IMAGE est - combinée le cas échéant avec DIST et VERSION pour déterminer les tags que - reçoit l'image construite. - -La commande 'cbuild' lance le build de toutes les images mentionnées dans les -fichiers 'docker-compose.yml' et 'docker-compose.PROFILE.yml' le cas échéant -* variables d'environnement: les arguments de build définis sont inscrits dans - un fichier .env qui est utilisé ensuite par docker compose - -Si aucune commande 'build' ou 'cbuild' ne figure dans le fichier, 'build' est -lancé automatiquement à la fin - -## Autres commandes ############################################################ - -Il est possible d'organiser le script dans plusieurs fichiers qui sont inclus -avec la commande 'include'. Fonctionnellement, cela se passe comme si le contenu -du fichier inclus était inséré dans le script principal, à ceci près que le -répertoire courant devient temporairement celui du fichier inclus. - -Exemple: - setdists d11 d10 d9 - if dist d9; then - include d9/dkbuild - elif dist d10; then - include d10/dkbuild - elif dist d11; then - include d11/dkbuild - fi - -La commande 'dkbuild' lance le build d'un répertoire destination. La différence -avec 'include' est que cela est fait dans un processus complètement différent, -comme si le build avait été lancé depuis la ligne de commande. - -Les commandes 'section', 'note', 'info', 'debug' permettent d'afficher des -messages de différents niveaux - -## Variables globales ########################################################## - -PROJDIR est le chemin absolu du projet, dans lequel se trouve le fichier dkbuild -initial - -La distribution actuellement sélectionnée se trouve dans la variable DIST. La -version actuellement sélectionnée se trouve dans la variable VERSION. Si la -commande 'setdists' n'est pas utilisée, alors ni DIST ni VERSION ne sont définis - -Le profil actuellement sélectionné se trouve dans la variable PROFILE. La -version actuellement sélectionnée se trouve dans la variable VERSION (si les -distributions sont utilisées sans le support de la version). Si la commande -'setprofiles' n'est pas utilisée, alors ni PROFILE ni VERSION ne sont définis - -IMAGE est le nom de l'image à construire. Si le nom de l'image contient le tag -(e.g IMAGE:TAG) alors le nom est utilisé tel quel. Sinon, DIST et VERSION sont -utilisés comme tags (i.e IMAGE:DIST et IMAGE:VERSION-DIST)" -} - -function display_help_reference() { - uecho "\ -OPTIONS - --help Aide générale - --hdk Aide sur le format du fichier dkbuild -* --href Référence sur les commandes utilisables dans un fichier dkbuild - -REFERENCE -========= - -## fonctions d'affichage - -USAGE: - section TITLE - note MESSAGE - info MESSAGE - debug MESSAGE - -## machine -- vérifier la machine courante - -## setdists -- spécifier les distributions valides - -## dist -- vérifier la distribution courante - -## setprofiles -- spécifier les profils valides - -## profile -- vérifier le profil courant - -## setversion -- spécifier la version par défaut - -USAGE: setversion VERSION - -Les paramètres optionnels sont -* from-file=FILE - prendre la version depuis le fichier spécifié. les formats pom.xml et - VERSION.txt sont supportés -* from-repo=REPO - calculer la version depuis le dépôt git spécifié -* from-glob=GLOB - calculer la version depuis le chemin spécifié -* extract=REGEXP - à partir de la valeur calculée par l'un des paramètres from-*, matcher - l'expression régulière au format AWK, et prendre comme version la valeur de - l'expression \$1 - Si from-glob est spécifié, la valeur par défaut de extract est calculée en - remplaçant '*' par '(.*)' -* add-prefix=PREFIX - Ajouter le préfixe spécifié à la version extraite -* add-suffix=SUFFIX - Ajouter le suffixe spécifié à la version extraite - -## version -- vérifier la version courante - -## setenv -- spécifier une variable d'environnement - -## resetenv -- spécifier une variable d'environnement - -## setarg -- spécifier une variable de build - -## resetarg -- spécifier une variable de build - -## default -- spécifier des arguments par défaut - -## resetdefault -- spécifier des arguments par défaut - -## checkout -- faire et vérifier checkout d'un dépôt git - -USAGE: checkout URL [DESTDIR] [PARAMS] - -Les paramètres optionnels sont -* checkout - mettre à jour dépôt. c'est la valeur par défaut. utiliser checkout= pour - désactiver la mise à jour du dépôt. utiliser checkout=devel pour synchroniser - depuis le répertoire de développement. -* origin=ORIGIN - spécifier l'origine. Par défaut, prendre 'origin' -* branch=BRANCH - spécifier la branche à utiliser dans l'origine spécifiée. La valeur par défaut - est 'master' si les profils ne sont pas utilisé. Si les profils sont utilisés, - la valeur par défaut est 'develop' pour les profils 'test' et 'devel', sinon - c'est 'master'. - Utiliser la syntaxe ^COMMIT pour ignorer l'origine et sélectionner un commit - en particulier. -* develdir=DIR - spécifier l'emplacement du répertoire de développement, utilisé avec - checkout=devel -* develtype=TYPE - spécifier le type de projet pour la synchronisation depuis le répertoire de - développement. certains projets, notamment les projets composer avec des - dépendances de type 'path', nécessitent une méthode de synchronisation - particulière. Si ce paramètre n'est pas spécifié, il est auto-détecté. Les - valeurs supportées sont: - * composer -- détecté de par la présence d'un fichier composer.json - * maven -- détecté de par la présence d'un fichier pom.xml - * none -- valeur par défaut: pas de type particulier - -## copy -- synchroniser des fichiers - -USAGE: copy SRC DEST [PARAMS] - -Si SRC est un fichier, alors DEST doit être un chemin vers le fichier -destination. Si SRC est un répertoire, alors DEST doit être un chemin vers le -répertoire destination. On peut forcer à considérer SRC et/ou DEST comme un -répertoire en les suffixant de '/' - -Par exemple: -* copy SRCDIR/ DESTDIR/ - échoue si SRCDIR et/ou DESTDIR sont des fichiers -* les commandes suivantes sont équivalentes: - copy SRC DESTDIR/ - copy SRC DESTDIR/SRCNAME - -Les paramètres optionnels sont -* copy - synchroniser les fichiers. c'est la valeur par défaut. utiliser copy= pour - désactiver la synchronisation des fichiers. -* overwrite - autoriser l'écrasement des fichiers destination, ce qui permet de rendre la - destination identique à la source. par défaut, un fichier destination est - laissé en place, ce qui permet d'avoir le cas échéant des fichiers locaux - différents de la source. -* gitignore=BASEDIR - maintenir le fichier .gitignore de BASEDIR, qui doit être un répertoire parent - de DESTDIR. Les fichiers synchronisés sont rajouté le cas échéant dans - .gitignore, sauf si le répertoire qui les contient est déjà exclu. - NB: Un fichier n'est considéré pour l'ajout dans .gitignore que s'il a été - copié au préalable. Ainsi, un fichier déjà existant dans la destination ne - sera pas ajouté dans le fichier .gitignore si overwrite= - -## genfile -- créer un fichier générique - -USAGE: genfile OUTPUT [INPUT] [PARAMS] - -Si le fichier INPUT est spécifié, il est utilisé pour créer le contenu initial -du fichier. Sinon, l'entrée standard *doit* être redirigée depuis un fichier, et -elle est lue pour générer le contenu initial du fichier à générer. - -Les paramètres optionnels sont -* context=DIR - générer le fichier dans le répertoire spécifié -* sed=SCRIPT - script sed à appliquer au fichier - -## dockerfile -- créer un fichier Dockerfile - -USAGE: dockerfile [OUTPUT [INPUT]] [PARAMS] - -Si le fichier INPUT est spécifié, il est utilisé pour créer le contenu initial -du fichier. Sinon, *si* l'entrée standard est redirigée depuis un fichier, elle -est lue pour générer le contenu initial du fichier. - -Les paramètres optionnels sont -* context=DIR - générer le fichier dans le répertoire spécifié -* sed=SCRIPT - script sed à appliquer au fichier initial, construit à partir de l'entrée - standard. Le fichier n'est plus modifié par la suite. - -## build -- construire une image avec docker - -USAGE: build [PARAMS] - -Les paramètres optionnels sont -* build - construire les images, c'est la valeur par défaut. utiliser build= pour - désactiver la construction. -* context=DIR - répertoire de contexte. cette valeur est en principe générée automatiquement - par la commande 'dockerfile' -* dockerfile=FILE - fichier de build à utiliser. cette valeur est en principe générée automatiquement - par la commande 'dockerfile' -* no-cache - ne pas utiliser le cache -* pull - forcer la mise à jour des images dépendantes -* host-mappings=MAPPINGS - définir des mappings d'hôte. si ce paramètre n'est pas spécifié, consulter - aussi la valeur par défaut 'docker host-mappings=' -* set-tag=TAGS... ou set-tags=TAGS... - spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette - liste remplace celle calculée automatiquement. ce paramètre est ignoré pour - les noms d'images comportant un tag -* add-tag=TAGS... ou add-tags=TAGS... - spécifier des tags à rajouter à la liste calculée automatiquement, séparés par - un espace. ce paramètre est ignoré pour les noms d'images comportant un tag -* image=IMAGES... ou images=IMAGES... - liste de nom d'images, séparés par un espace. si les noms n'ont pas de tag, le - tag est construit à partir de DIST et VERSION sous la forme [VERSION-]DIST -* push - pousser les images vers le registry après les avoir construites - -## cbuild -- construire une image avec docker compose - -USAGE: cbuild [SERVICE] [PARAMS] - -Les paramètres optionnels sont -* files=FILES... - spécifier les fichiers docker-compose à utiliser. Par défaut, prendre - docker-compose.yml et docker-compose.PROFILE.yml -* project-name=PROJECT_NAME - spécifier le nom du projet -* no-cache - ne pas utiliser le cache -* pull - forcer la mise à jour des images dépendantes - -## include -- inclure un autre fichier dkbuild - -## dkbuild -- lancer un builder externe - -La commande dkbuild qui traite le script de build courant est lancée telle -quelle, avec la même syntaxe qu'en ligne de commande. L'intérêt de cette -commande est qu'on est assuré d'utiliser le même dkbuild que celui qui traite le -script de build courant. - -## composer -- gérer projet composer - -USAGE: composer DESTDIR [ACTION [PARAMS] [ARGS]] - -La destination est obligatoire. Sans arguments, cette commande retourne -simplement vrai - -Les actions valides sont -* install -- installer les dépendances. c'est l'action par défaut -* update -- mettre à jour les dépendances -* rshell -- lancer un shell root dans le répertoire du projet -* shell -- lancer un shell utilisateur dans le répertoire du projet -* none -- ne rien faire - -L'action est exécutée sur DESTDIR. Juste avant de lancer l'action, le répertoire -courant est modifié pour être DESTDIR, ce qui permet d'utiliser des chemins -relatifs le cas échéant. - -La commande 'rshell' lance un shell bash avec l'utilisateur root au lieu de -lancer la commande composer, ce qui permet de faire des opérations plus -complexes si le besoin s'en fait sentir. La commande alternative 'shell' lance -le shell avec le compte utilisateur. Ces commandes sont particulièrement utiles -si composer est paramétré pour être lancé dans un container - -Les paramètres optionnels sont -* args=ARGS... - arguments à rajouter à la commande composer. La valeur par défaut dépend du - profil: - * prod: --no-dev -o - * test: --no-dev -o - * autres profils: (pas d'arguments) -* php=VERSION - version de PHP en dessous de laquelle image= est utilisé. En d'autres termes, - c'est la version minimum de PHP nécessaire pour faire tourner composer. L'idée - est que si la version de PHP installée est suffisante, il n'est pas nécessaire - de passer par une image docker. - Cette valeur doit être spécifiée avec le format de PHP_VERSION_ID i.e 70300 - pour PHP 7.3 - * Spécifier 'any' ou 'force' pour forcer l'utilisation de l'image docker. - * Spécifier 'none' ou 'system' pour lancer directement composer sans passer - par une image docker. -* php-max=VERSION - version de PHP à partir de laquelle image= est utilisé. En d'autres termes, - c'est la version maximum de PHP, à partir de laquelle il faut passer par une - image docker. L'idée est que si la version de PHP installée est trop récente, - ça peut poser problème avec le calcul des dépendances. - Cette valeur doit être spécifiée avec le format de PHP_VERSION_ID i.e 70300 - pour PHP 7.3 - Si la valeur n'est pas spécifiée ou vaut 'none', elle est ignorée. -* image=COMPOSER_IMAGE - image docker utilisée pour lancer composer. La valeur par défaut est la valeur - de la variable d'environnement \$COMPOSER_IMAGE - Spécifier 'none' pour lancer directement composer sans passer par une image - docker. - L'image spécifiée doit disposer de la commande 'su-exec' afin de pouvoir - lancer la commande avec l'utilisateur courant. Le répertoire \$HOME est monté - à l'intérieur du container et le script composer.phar du projet est utilisé le - cas échéant. -* machine=MACHINE - nom de la docker machine sur laquelle se connecter pour lancer l'image docker. - La valeur par défaut est -u, ce qui force l'utilisation de l'instance docker - locale. Spécifier 'current' pour ne pas modifier la valeur courante le cas - échéant -* host-mappings=MAPPINGS - définir des mappings d'hôte. si ce paramètre n'est pas spécifié, consulter - aussi la valeur par défaut 'docker host-mappings=' -* composer=PATH/TO/COMPOSER - chemin vers l'exécutable composer. Par défaut, utiliser composer.phar s'il - existe dans le répertoire du projet. Sinon utiliser /usr/bin/composer -* setup=CMDS... - liste de commandes à lancer pour configurer le container. Un container ayant - pour base COMPOSER_IMAGE et nommé d'après le nom du projet est préparé et les - commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois. - Ce paramétrage est utilisé par exemple pour installer certains packages - nécessaire au projet. -* project-name=PROJECT_NAME - si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom - est calculé automatiquement - -Si un fichier .composer.conf existe dans le répertoire du projet, il est sourcé -pour obtenir les valeurs par défaut des paramètres: -* COMPOSER_PHP -- valeur par défaut de php= -* COMPOSER_PHP_MAX -- valeur par défaut de php-max= -* COMPOSER_IMAGE -- valeur par défaut de image= -* COMPOSER_MACHINE -- valeur par défaut de machine= -* COMPOSER_CMD -- valeur par défaut de composer= -* COMPOSER_SETUP -- valeur par défaut de setup= - -## mvn -- construire projet maven - -USAGE: mvn DESTDIR [ACTION [PARAMS] [ARGS]] - -Le répertoire de destination est obligatoire. Sans arguments, cette commande -retourne simplement vrai. L'action par défaut est 'package' - -Les actions valides sont -* install -- lance mvn avec les commandes 'clean package install' -* package -- lance mvn avec les commandes 'clean package' -* package_only -- lance mvn avec uniquement la commande 'package' -* rshell -- lancer un shell root dans le répertoire du projet -* shell -- lancer un shell utilisateur dans le répertoire du projet -* java -- lancer java au lieu de lancer mvn. il est possible de spécifier la - version de java directement, e.g java7, java8, java11 - -L'action est exécutée sur DESTDIR. Juste avant de lancer l'action, le répertoire -courant est modifié pour être DESTDIR, ce qui permet d'utiliser des chemins -relatifs le cas échéant. - -La commande 'rshell' lance un shell bash avec l'utilisateur root au lieu de -lancer la commande mvn, ce qui permet de faire des opérations plus complexes si -le besoin s'en fait sentir. La commande alternative 'shell' lance le shell avec -le compte utilisateur. Ces commandes sont particulièrement utiles si mvn est -paramétré pour être lancé dans un container - -Les paramètres optionnels sont -* args=ARGS... - arguments à rajouter à la commande mvn -* java=VERSION - version de Java à sélectionner à l'intérieur de l'image docker - * Spécifier 'any' ou 'force' pour prendre la valeur par défaut - * Spécifier 'none' ou 'system' pour ne pas utiliser l'image docker -* image=MAVEN_IMAGE - image docker utilisée pour lancer mvn. La valeur par défaut est la valeur - de la variable d'environnement \$MAVEN_IMAGE - Spécifier 'none' pour lancer directement mvn sans passer par une image - docker, même si java= est renseigné - L'image spécifiée doit disposer de la commande 'su-exec' afin de pouvoir - lancer la commande avec l'utilisateur courant. Le répertoire \$HOME est monté - à l'intérieur du container. -* machine=MACHINE - nom de la docker machine sur laquelle se connecter pour lancer l'image docker. - La valeur par défaut est -u, ce qui force l'utilisation de l'instance docker - locale. Spécifier 'current' pour ne pas modifier la valeur courante le cas - échéant -* host-mappings=MAPPINGS - définir des mappings d'hôte. si ce paramètre n'est pas spécifié, consulter - aussi la valeur par défaut 'docker host-mappings=' -* mvn=PATH/TO/MVN - chemin vers l'exécutable mvn. Par défaut, utiliser la commande trouvée dans le - PATH -* setup=CMDS... - liste de commandes à lancer pour configurer le container. Un container ayant - pour base MAVEN_IMAGE et nommé d'après le nom du projet est préparé et les - commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois. - Ce paramétrage est utilisé par exemple pour installer certains packages - nécessaire au projet. -* project-name=PROJECT_NAME - si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom - est calculé automatiquement - -Si un fichier .maven.conf existe dans le répertoire du projet, il est sourcé -pour obtenir les valeurs par défaut des paramètres: -* MAVEN_JAVA -- valeur par défaut de java= -* MAVEN_IMAGE -- valeur par défaut de image= -* MAVEN_MACHINE -- valeur par défaut de machine= -* MAVEN_CMD -- valeur par défaut de mvn= -* MAVEN_SETUP -- valeur par défaut de setup= - -## run -- lancer des commandes - -## call -- lancer des commandes ou des fonctions -" -} - ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## shared