limpiar como mercurial teamcity

mercurial - como - limpiar textbox c#



¿Cómo puedo etiquetar mi compilación con el número de revisión y no el GUID(en TeamCity)? (6)

Estoy tratando de hacer una "integración continua" con TeamCity. Me gustaría etiquetar mis compilaciones de forma incremental y el GUID proporcionado por el VCS no es tan útil como un simple número creciente. Me gustaría que el número coincida realmente con la revisión en número en Mercurial.

Mi estado de cosas:

Información mercurial:

Me gustaría que la construcción se etiquete 0.0.12 en lugar del GUID.

¿Alguien sería tan amable y me ahorraría horas tratando de resolver esto?


Al proporcionar su número de compilación con una revisión numérica mercurial, debe tener en cuenta que esos números son específicos de clones y pueden diferir de clonar a clonar.

En nuestro proyecto tuvimos el mismo problema. Estamos usando TeamCity 7.1.1. Lo solucionamos de la siguiente manera:

  1. Agregue paso de compilación de línea de comando a su configuración.
  2. Haga que este paso de compilación se ejecute primero.
  3. En las propiedades del paso de compilación, seleccione "Ejecutar: ''Ejecutable con parámetros''"
  4. Agregue el siguiente texto a Command Executable:

for /f %%i in (''hg id -n'') do echo ##teamcity[buildNumber ''%%i'']

Save changes.

También puede usar el número de compilación generado previamente al realizar el paso 3.

Ejemplo:

for /f %%i in (''hg id -n'') do echo ##teamcity[buildNumber ''%system.build.number%.%%i'']

Puede usar esto para hacer que el contador de compilación esté presente en su número de compilación.

¡Lea this para obtener más información!

Recuerde que teamcity compila el número de compilación de las configuraciones antes de que comience la compilación y el número correcto de compilación aparecerá solo después de que su paso de compilación termine su trabajo. Es por eso que, en algunos casos (al insertar su revisión mercurial en el nombre del artefacto) debe definir el valor del número de compilación en la configuración anterior y consultarlo.

Ejemplo:

%dep.bt82.build.number%

¡Lea this para obtener más información!


Como Lasse V. Karlsen mencionó que los números de revisión numérica son específicos del clon local y pueden ser diferentes para cada clon. Realmente no son adecuados para el control de versiones: puede recolocar el mismo repositorio y obtener diferentes números de revisión.

Por lo menos, incluya la ID del nodo creando también algo así como 0.0.12-6ec760554f2b luego aún obtendrá artefactos de liberación ordenables pero aún está identificando firmemente su lanzamiento.

Si usa etiquetas numéricas para etiquetar publicaciones, hay una opción particularmente buena:

% hg log -r tip --template ''{latesttag}.{latesttagdistance}''

que, si la etiqueta más reciente en ese clon se llamaba 1.0.1 y tenía 84 commits ago, da un valor como:

1.0.1.84

Dado que puede tener diferentes encabezados que están a 84 commits de una etiqueta en repositorios diferentes, probablemente aún debería incluir la id del nodo como:

% hg log -r tip --template ''{latesttag}.{latesttagdistance}-{node|short}''

dando:

1.0.1.84-ec760554f2b

que hace una gran cadena de versiones.


Cuando solía usar Subversion solía hacer algo similar en TeamCity. El formato fue:

{Major}.{Minor}.{TeamCity Build No.}.{Subversion Revision No.}

Esto me permitió ver un ensamblado y ver de qué versión venía en TeamCity y el número de revisión de subversión.

Ahora me he mudado a Git, lo que me ha puesto en la misma situación que tú. Después de jugar con varias ideas, llegué a la conclusión de que en realidad no necesito la revisión, la construcción es lo suficientemente buena. Debido a que TeamCity es una herramienta tan poderosa, todo lo que necesita es el número de compilación, dado el número de compilación, puede ver el historial de compilación y determinar la revisión a partir de eso.

{Major}.{Minor}.{Macro}.{TeamCity Build No.}

Además, puede hacer que TeamCity etiquete su repositorio con el número de compilación, lo que le permite buscar una compilación determinada en el control de origen.


La mejor y más fácil manera de ver rev. número en el número de compilación de TeamCity es usar la Interacción de Build Script con TeamCity . A saber, tiene la posibilidad de establecer el Número de compilación .

Por lo tanto, agregue a su proyecto un nuevo primer paso de compilación Línea de comando con el siguiente comando ejecutable

for /f %%i in (''c:/tortoisehg/hg id -n'') do echo ##teamcity[buildNumber ''%%i'']

Y obtendrá el número de revisión de Mercurial como una etiqueta para todas sus construcciones.

Por supuesto, puede cambiar el comando entre comillas para cualquier cosa que desee.

Creo que mi respuesta es mucho más correcta que la aceptada.

EDITAR:

También puede hacer lo mismo a través de la tarea MSBuild en lugar de Command Executable. Tener un archivo de proyecto MSBuild con el siguiente código, configurar TeamCity para ejecutarlo como primer paso, y alterará su variable global buildNumber :

<Message Text="##teamcity[buildNumber ''$(CurrentVersion)'']" Importance="High" />

Donde CurrentVersion es una cadena que contiene la versión completa (por ejemplo, "1.0.56.20931").


Logré usarlo en Teamcity usando una solución alternativa:

<Exec Command="hg log -r tip --template {latesttag}.{latesttagdistance} > $(BuildAgentTempDir)/version.txt"/> <ReadLinesFromFile File="$(BuildAgentTempDir)/version.txt"> <Output TaskParameter="Lines" ItemName="versionInfo"/> </ReadLinesFromFile> <TeamCitySetBuildNumber BuildNumber="@(versionInfo)-{build.number}" />

Si ves la tarea de MSBuild "TeamCitySetBuildNumber", estoy usando la variable "{build.number}" porque sustituye esto con lo que configuraste originalmente en el número de compilación. Usé% build.vcs.number% en mi configuración original (en la interfaz de usuario web) y el resultado es justo lo que Ry4an escribió anteriormente.

¡Espero que funcione para ti!


hg id produce el hash ( 6ec760554f2b ), hg id -n produce el número de revisión local ( 12 ).

(Tenga en cuenta que esta es una respuesta puramente del lado de hg, ¿cómo puede obtener eso en TeamCity, no sé, ya que nunca lo he usado).