Rama de la demostración de TeamCity en el nombre zip del artefacto

Tengo una compilation en TeamCity donde quiero build un file zip de artefacto.

Puedo usar Edit Configuration Settings => General Settings => Artifact Paths para configurar los files para comprimir y el nombre del file zip.

Quiero que el nombre sea más descriptivo, y TeamCity me permite usar parameters, por ejemplo:

 out/mypackagedfiles/** => MyBuild_%build.number%.zip 

me dará un file zip como MyBuild_46.zip .

También me gustaría include la twig desde la que se compiló la construcción. Esto también está disponible como un parámetro de TeamCity, pero contiene una barra inclinada (por ejemplo, feature/my_great_feature ). Entonces, si uso esto en la configuration de Artifact Paths , obtengo un directory que contiene un file zip:

 out/mypackagedfiles/** => MyBuild_%build.number%_%vcsroot.branch%.zip 

que da my_great_feature.zip en un directory llamado MyBuild_46_feature .

Lo que me gustaría hacer es de alguna manera eliminar / replace la barra inclinada del nombre de la twig para get un file zip, como MyBuild_46_feature_my_great_feature.zip .

No me preocupa el formatting exacto, siempre que el nombre de la twig sea identificable.

Ideas sobre lo que podría existir, pero no puedo encontrar aún:

  • crear un nuevo parámetro que derive el nombre de la twig desinfectada de vcsroot.branch
  • algún tipo de manipulación de cadenas dentro de la configuration de Artifact Paths

== EDITAR ==

En base a la respuesta de oryades a continuación (que se parece a la command-line de linux bash ), la convertí a PowerShell para Windows de la siguiente manera:

  1. Configure artefactos para usar% env.branch_name% (esto también requiere establecer un valor temporal / ficticio en la pestaña Parámetros para que la compilation se ejecute)
  2. Crear un paso de compilation con runner type = PowerShell
  3. Establezca el script en el código fuente y pegue lo siguiente:

     $branch_name="%vcsroot.branch%".replace('/','_') echo "Sanitised branch for Artifact zip = " $branch_name echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']" 

Tenga en count que TeamCity le permite hacer la sustitución de% vcsroot.branch%; esta es una sustitución que ocurre antes de que se ejecute PowerShell. Gracias a Team City y Power Shell por este consejo

Puede crear variables env durante la compilation, solo cree un paso de compilation con el siguiente contenido:

 branch_name=$(echo %vcsroot.branch% | sed 's/\//_/') echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']" 

En los siguientes pasos de compilation, puede usar% env.branch_name% como una variable con el valor requerido.

https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity