2012-08-07 11 views
6

Estamos utilizando TeamCity como un servidor de CI y hemos estado pensando cómo implementar un método para versionar nuestras versiones que es seguro (es decir, oportunidad mínima para error humano) pero también requiere el menor esfuerzo posible. Hasta ahora, lo siguiente parece ser el más lógico:TeamCity para leer y actualizar el número de versión del archivo de versión

  1. Cree un archivo de versión (o use assemblyinfo.cs). La información de la versión estaría en el formato ... Este archivo se comprobará en mi VCS.
  2. Ejecutar una acumulación TeamCity
  3. TeamCity lee el archivo de la versión de la etapa 1, escoge cada uno números y conjuntos individuales parámetros TeamCity construcción correspondientes (para que pueda usarlos más tarde para cosas tales como la creación de paquetes NuGet y etiquetado)
  4. TeamCity auto incrementa el valor final de 'compilación'.
  5. TeamCity guarda la información de la versión nueva en el archivo de versión (con el recuento de compilación actualizado)
  6. TeamCity ejecuta el resto de mis pasos de compilación, compilando archivos, ejecutando pruebas unitarias, configurando las versiones de ensamblaje correctas, etc. .
  7. TeamCity finalmente se comprueba el archivo de nuevo en VCS

creemos que la ventaja de hacer las cosas de esta manera es si necesitamos hacer un arreglo de una vieja versión a continuación, el número de versión será correcta y TeamCity puede simplemente trabaje con el archivo de versión anterior e incremente el conteo de compilación como de costumbre. Esto supone que estamos actualizando correctamente nuestras versiones mayor/menor/parche. Esperamos que esto funcione muy bien con la característica próximamente lanzada de TeamCity 7.1 que le permite elegir qué rama construir a través del diálogo de creación personalizada.

Según lo que he leído hasta ahora, este tipo de operaciones deberían ser posibles en TeamCity, pero estamos buscando la raíz más fácil para solucionar esto, ya que solo somos un equipo de dos hombres y no podemos permitirse invertir grandes cantidades de tiempo para convertirse en expertos en Nant o PowerShell solo para descubrir que podría no hacer lo que queremos.

así que supongo que resumir mis preguntas son las siguientes:

  1. Es lo que estoy proponiendo es posible?
  2. En caso afirmativo, ¿cuál es la mejor herramienta para usar dada mi experiencia limitada de Nant, powershell etc.? (Es decir, que es la más rápida de aprender para alguien cuya línea de comandos y experiencia de script se extiende hasta operaciones simples de DOS y un poco de VBScript)

Cualquier ayuda es muy apreciada.

Respuesta

9

Para su primera pregunta: sí, es posible:

  1. Añadir .git (.svn, .hg etc) guía a VCS gobierna
  2. Lectura del número de versión en el script de construcción en TeamCity (línea de comandos runner) en su lenguaje de scripting favorito e incerement.
  3. Conjunto número de compilación a través interaction protocol
  4. actualización número de compilación en el archivo de la versión en su lenguaje de script favorito
  5. llevar a cabo sus etapas de la generación
  6. Realizar comprometerse y empuje, se puede porque ya tiene .git (.svn,.hg etc) directorio en compilación dir en el último paso

Lo siento pero no puedo responder a su segunda pregunta porque no conozco las herramientas adecuadas para Windows. En Linux usaría bash.

+0

Gracias por la entrada, estoy esperando que alguien me ayude con la herramienta adecuada ahora. –

+1

Para la herramienta para hacer las secuencias de comandos recomendaría Powershell. TeamCity tiene un buen corredor para que pueda definir un guión que tome params, luego use las variables de TeamCity para pasar esos parámetros: p. un script que inicia "param ($ defaultBranchVersion)" y establece "Argumentos del script" en% system.BranchVersion% Esto funcionó bien en el pasado. – Graham

Cuestiones relacionadas