web-dev-qa-db-fra.com

TeamCity - utilisation de setParameter pour transmettre des informations entre les étapes de construction

Je dois faire quelque chose de différent de ce qui a été demandé et répondu ici car la solution ne semble pas fonctionner pour moi: TeamCity, en passant un identifiant généré dans une étape de construction à une étape ultérieure

Je veux utiliser une chaîne générée par une étape de construction dans une étape de construction finale. Jusqu'à présent, j'ai configuré une variable environnementale appelée "TEST" qui est vide. Les deux étapes de génération utilisent le gestionnaire de ligne de commande.

Étape de construction n ° 1:

\##teamcity[setParameter name='env.TEST' value='test']

Étape de construction n ° 2:

echo $TEST

echo %env.TEST%;

Espace réservé pour le moment, mais si je pouvais accéder à la chaîne de test ('test') définie dans l'étape 1 de la construction, je serais très heureux.

17
user1467961

vous devez faire écho à cette chaîne, par exemple.

echo "##teamcity[setParameter name='env.TEST' value='test']"
22
dmitko

Ce que j'ai trouvé, c'est qu'avec les valeurs longues, dès que TeamCity décompose la sortie du journal en deux lignes distinctes echo ne fonctionnera plus - vous devez utiliser Write-Host à la place.

Write-Host "##teamcity[setParameter name='env.TEST' value='test']"

Cela devrait toujours fonctionner, juste une note de côté - cette valeur ne sera disponible que sur les étapes suivantes .

8
BrokenGlass

Je pense que vous avez un extra "\" dedans. Essayez de supprimer cela et d'ajouter des guillemets doubles autour de cela et cela devrait fonctionner. 

 "##teamcity[setParameter name='env.TEST' value='test']"

Si cela ne fonctionne pas, essayez d'utiliser le type de coureur Powershell, car je l'utilise pour le configurer et cela fonctionne.

5
Adarsh Shah

Pour développer les réponses ci-dessus, avec powershell, cela ressemblerait à l'étape 1:

Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"

... et vous pouvez utiliser cette valeur à l'étape 2:

echo %env.Test%

En outre, vous devrez également définir env.Test dans les paramètres de construction de TC pour qu'il soit égal à quelque chose. Je viens d'utiliser un espace car je sais que la valeur sera définie via ps script. J'espère que cela t'aides. 

4
Japster24

Il doit être imprimé sur STDOUT. J'utilise cat avec heredoc pour éviter de devoir échapper des guillemets lors de l'utilisation de variables pour définir de manière dynamique les paramètres de configuration. Qu'est-ce que l'heredoc?

MYVARNAME=MYVALUE
cat <<EOF
##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']
EOF

Résultat:

##teamcity[setParameter name='myConfParameter' value='MYVALUE']

Documentation

2
sdkks

Voici le ticket officiel à propos de l'ajout de guillemets doubles et echo (Write-Host - OS dependency).

0
dikkini