2012-08-30 8 views
17

Tengo una estructura de CI que tira de ramas de característica de Github y las construye/empaqueta en una carpeta local, utilizando una convención de nomenclatura de carpeta basada en el número de proyecto, rama y compilación.¿Cómo puedo anular el nombre de la sucursal <default> en TeamCity 7.1 usando el soporte de ramificación de Git?

Para ramas con nombre (feature1, feature2) esto está funcionando muy bien.

El problema es que cuando hago un envío al maestro, TeamCity expone teamcity.build.branch como <default> - lo que significa que cuando el paso de generación expande

E:\Packages\MyProject\%teamcity.build.branch%\

que está terminando con E:\Packages\MyProject\<default> - el cual está bloqueando el paso de compilación porque no es una ruta válida de Windows.

I puede ver el nombre de la rama principal en el parámetro de construcción totalmente calificado:

teamcity.build.branch       <default> 
teamcity.build.checkoutDir     C:\TeamCity\BuildAgents\agent-mulder\work\2151838a7933464d 
teamcity.build.default.checkoutDir   2151838a7933464d 
teamcity.build.id        16347 
teamcity.build.vcs.branch.github_myproject refs/heads/master 

pero lo ideal es que necesito para obtener maestro como el teamcity.build.branch para su uso en mis pasos de generación .

¿Puedo transformar el parámetro en tiempo de ejecución? ¿Anular el comportamiento? Incluso he intentado configurar el nombre de la rama de VCS en DO_NOT_USE con la esperanza de que "maestro" ya no coincida con el valor predeterminado, pero parece que tampoco funciona.

+1

Agregué un boleto a su proyecto YouTrack para TeamCity, desafortunadamente está siendo visto como una pregunta, no como un problema de usabilidad, pero si conseguimos que más gente comente, puede ser útil: http://youtrack.jetbrains.com/issue/ TW-23699 – markus101

+0

¿por qué no agregar un condicional al script de construcción que mapea '" "' a '" master "'? –

Respuesta

3

No es ideal, pero pude solucionarlo creando una nueva rama en git llamada "teamcity" y configurándola como la rama predeterminada en TeamCity, parece requerir que la rama exista realmente, ya que funcionó cuando Creé la rama, pero no cuando ingresaste un nombre falso.

Esperemos que realmente solucionen esto, porque esto es definitivamente un truco.

2

Nos hemos encontrado con este problema varias veces al crear tuberías. Es el más visible cuando se trata de crear características automáticamente y liberar ramas usando el flujo de trabajo de Gitflow. Lo que hemos podido hacer es usar teamcity.build.vcs.branch.github_myproject y una expresión regular en sed para desinfectar la cadena siempre que deseemos usarla. Esto se debe principalmente a artefactos de marcas de agua para fines de depuración.

El problema más grande, al menos para nosotros, es que la versión de TeamCity 7.1.1 no desencadena automáticamente las compilaciones de dependencia para cualquier cosa que no sea la compilación predeterminada en la raíz de VCS. Obviamente, este es un gran punto de dolor ya que tendremos que hacer clic manualmente en la herramienta. Todavía no hemos descubierto una forma limpia de evitar esto aparte de los enganches en git que usan la API HTTP para llamar al paso de compilación adecuado.

4

En teamcity 7 es simplemente% vcsroot.branch% que devuelve desarrollar.

En mi caso he

%MajorVersion%.%MinorVersion%.%PatchVersion%-%vcsroot.branch% 

que son todos situado en los parámetros de construcción. El formato de número es% BuildFormatSemVer% que es lo que se encuentra arriba y.{0}

%BuildFormatSemVer%.{0} 

que devuelve

#1.0.0-develop.4 
+0

Tenía el mismo problema. Parece que funciona muy bien hasta ahora, cualquier escenario donde no funciona de la manera en que% teamcity.build.branch% lo haría? – angularsen

+0

ramas de función (suponiendo que las construya como cualquier otra cosa) causaría problemas debido a/ –

+0

¿Ayuda el uso de parantheses en la especificación de bifurcación? Al menos% teamcity.build.branch% usa solo esa parte del nombre. Por ejemplo: +: refs/heads/hotfix/(\ *) +: refs/heads/release/(\ *) – angularsen

1

No sé si esto fue respondida con anterioridad, o por más tiempo es relevante.

En TeamCity 10.0.2 cree un parámetro personalizado como% Git.Reference%. Si necesita un tirón (o empuje) de TC a git, ajuste esto a "ref/head/Dev" o "ref/Head/yourbranch". Use esto en su referencia 'raíz VCS'.

Cuestiones relacionadas