2017-06-28 1 views
0

Dans les définitions de pipeline en cours, vous pouvez utiliser des variables de métadonnées telles que $BUILD_NAME et.al. Pendant que je travaillais sur une ressource personnalisée, je me demandais où se passait la substitution de variables: dans le yml ou dans les scripts de ressources?où est la substitution de variable de métadonnées de concourse.ci se passant?

Pour moi, il semble que les variables sont pas substitué dans le yml avant de passer aux scripts et les scripts doivent prendre soin de cela?

Répondre

1

Vous avez raison, la substitution des variables de métadonnées est effectuée dans les scripts de ressources.

Un récipient, en particulier une ressource get ou put conteneur est deux choses: un système de fichiers racine et un processus en cours d'exécution (du script /opt/resource/get ou /opt/resource/put). Les metadata variables sont des variables d'environnement qui sont définies dans ce processus en cours d'exécution. Les chaînes de variables de métadonnées (par exemple, $BUILD_NAME) sont simplement transmises au processus de création de modèle de la ressource. Il est de la responsabilité de la ressource de rechercher ces chaînes et de les remplacer par les variables d'environnement appropriées.

+0

merci pour la clarification. mon problème était que je passais les chaînes dans JSON via 'jq' et que par conséquent les variables d'environnement auto-expansion/substitution des scripts bash ne fonctionnaient pas. donc je devais le forcer comme 'name = $ (echo" $ params "| jq -r '.params.name') name = $ (eval echo $ name)' – pHiL