4 votes

Azure Pipelines Définir une variable dans le script avec une valeur de chaîne qui contient un saut de ligne

Je suis en train de construire un artefact aspnetcore pour une solution avec plusieurs projets web à l'intérieur. La tâche de publication par défaut de netcore a une case à cocher "Publier les projets web" qui trouve tous les projets contenant des fichiers web.config ou des dossiers wwwroot, mais mes projets WebApi n'en ont pas du tout besoin. Vous pouvez désactiver cette case à cocher et fournir les chemins des projets que vous souhaitez publier. Chaque projet doit être fourni sur une ligne séparée.

Donc, si je modifie ce paramètre dans la fenêtre des propriétés de la tâche, tout va bien, car il y a un éditeur multiligne qui se comporte comme prévu. Mais je veux déplacer la liste des projets dans des variables, là où toutes les autres configurations sont stockées. Cependant, l'éditeur de variable est sur une seule ligne.

J'ai décidé de mettre les noms de projet dans une variable avec un délimiteur ";" et d'écrire une tâche powershell qui construit correctement les chemins pour la tâche de publication :

$projects = '$(PublishProjects)'
$result = ( $projects.Split(@(';'), [System.StringSplitOptions]::RemoveEmptyEntries) | %{ ('**\' + $_.Trim() + '.csproj') } ) -join "`n"
Write-Host "##vso[task.setvariable variable=PublishProjectsPath]$result"

Malheureusement, cela provoque le réglage de la valeur de PublishProjectsPath à seulement premier projet, car tous les chemins de projet sauf le premier sont imprimés sur leur propre ligne sans ##vso... et donc azure les ignore efficacement.

Y a-t-il un moyen de définir correctement une variable de pipeline à partir d'un script ? Je ne peux pas utiliser azure-pipelines.yml car azure ne prend pas en charge gitlab :(

0voto

Troopers Points 2396

Vous définissez la variable à portée de travail.

Vous devez définir une variable de sortie multi-job avec ##vso[task.setvariable variable=myOutputVar;isOutput=true]

0voto

Hugh Lin - MSFT Points 13257

Définir une variable dans un script avec une valeur de chaîne contenant un saut de ligne

Pour ce problème, je crains que cela ne soit actuellement pas pris en charge dans Azure DevOps. Bien que la tâche dotnet publish dispose de zones de texte prenant en charge le contenu sur plusieurs lignes, elle ne prend actuellement pas en charge les chaînes sur plusieurs lignes en tant que valeur d'une variable.

Jusqu'à présent, dans notre forum officiel de suggestions de fonctionnalités pour Azure DevOps, une telle suggestion existe : https://developercommunity.visualstudio.com/idea/365667/multiple-lines-variable-in-build-and-release.html.

Vous pouvez voter pour cette suggestion et partager votre commentaire, l'équipe produit fournira des mises à jour si elle le considère. Toutes les personnes intéressées peuvent voter et suivre cette suggestion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X