Tag: JIRA

  • DevOps con Atlassian

    ¿Cómo podemos crear un pipeline de DevOps más eficiente, fomentar la transparencia en la organización y la agilidad y autonomía entre los equipos?

    En éste webinar te presentamos las soluciones que Atlassian ofrece para tí: Conoce la mancuerna de JIRABamboo Bitbucket.

    Podrás ver cómo se integran las herramientas para automatizar el trabajo y consolidación de información, además de cómo manejar pruebas unitarias automatizadas, pruebas funcionales automatizadas, contenedores de docker y pruebas de seguridad automatizadas.

    *Aspectos a considerar en DevOps
    *Principios de DevOps (Flow, Feedback, Continuous Improvement)
    *Demo de la integración entre Jira, BitBucket y Bamboo
    *Demo de despliegues con Bamboo

    ¿Te gustaría conocer más acerca de las herramientas, costo y cómo implementarlas? Contáctanos en ventas@enevasys.com

  • Cómo migrar de TFS a GIT

    git-tfs_logo.png
    Fuente: GitHub

    En este manual explicaré cómo realizar una migración completa de un repositorio de TFS a GIT, conservando el historial completo (commits, autores y fechas de cada cambio, merges entre ramas, etc).

    Usaremos las siguientes herramientas/tecnologías:

    Instalación de GIT

    Al instalar GIT, verifica que esté en el path global de variables de entorno. Puedes verificarlo abriendo una línea de comandos y ejecutando el siguiente código:

    git --version

    2017-04-23_02h36_24.png

    Instalación de SourceTree

    La instalación requiere que crees una cuenta en Atlassian. Durante la instalación, te solicitará información del repositorio remoto; puedes omitirla, ya que en este tutorial no usaremos repositorios remotos de GIT.

    Preparar TFS

    TFS maneja el concepto de “branches” y “folders”. Para poder migrar el repositorio, es obligatorio usar branches.

    Si tienes folders, puedes convertirlos en branches dando clic derecho en el folder y seleccionando “Convert to branch”.

    Empieza por el folder principal, ya que al tratar de convertirlo, TFS te ofrecerá convertir todos los sub folders en branches.

    En caso de que tengas folders independientes, tendrás que convertirlos a branches uno por uno.

    *La conversión no causa ninguna pérdida de información.

    2017-04-23_03h15_26.png

    2017-04-23_03h16_45

    Migrar a GIT

    Descarga la librería de git-tfs (http://git-tfs.com/) y descomprimela en la carpeta de tu preferencia. Como recomendación, descomprimela en el directorio más cercano a la raíz (ej. C:\ en Windows) ya que si el repositorio a migrar tiene muchas sub carpetas, puede haber problemas por la cantidad de caractéres.

    Abre una línea de comandos y entra a la carpeta en donde descomprimiste git-tfs.

    Clona el repositorio que deseas, utilizando el siguiente comando (es importante que estés posicionado en la carpeta de git-tfs):

    git-tfs clone {url de tfs} {repositorio}/{branch a migrar} {directorio donde deseas crear el repositorio de GIT} --branches=all

    Ejemplo:

    git-tfs clone https:\\tfs.enevasys.com $/enevasys.apps.myapp/Main c:\repoMigrado --branches=all

    El parámetro “–branches=all” indica que deseamos migrar el repositorio con todos sus branches.

    Otros parámetros que puedes utilizar, son:

    • –branches=none: Migra solo el branch que hayas especificado
    • –changeset={changeset de TFS}: Migra los commits a partir del branch especificado. En caso de que no agregues este parámetro, se migrará el repositorio completo.

    La migración puede tomar varios minutos e incluso horas, dependiendo del tamaño del repositorio, la cantidad de commits y la cantidad de branches.

    En caso de ocurrir algún error, en la sección “Errores comunes” encontrarás distintos escenarios y cómo resolverlos.

    Verificar Importación

    Una vez que termina la importación, verificaremos que el repositorio se haya migrado correctamente:

    1. abre SourceTree selecciona “File -> Clone / New” 2017-04-23_03h21_34.png
    2. Selecciona la pestaña “Add Working Copy” y en Working Copy Path, selecciona la carpeta que especificaste en la migración (en este caso, “c:\repoMigrado”).2017-04-23_03h22_49.png
    3. Da clic en “Add”

    Ahora podrás ver todas las ramas migradas (incluyendo master), así como los commits y merges con sus fechas y autores reales.

    2017-04-23_03h25_44.png

     

    Errores Comunes

    Debido a la forma en cómo TFS almacena los metadatos, es posible que algunos escenarios no puedan ser migrados de forma automática. Sin embargo; aquí podrá encontrar alternativas sencillas para resolverlo.

    La migración se queda ciclada o marca un error por no encontrar el “parent branch”

    Los errores que puede marcar son:

    • fetching from dependent tfs remote (se queda ciclado)
    • Unable to migrate branch
    • Unable to find parent branch
    • Entre otros

    Todos ellos se pueden resolver de la siguiente manera:

    1. Deten el proceso de migración.
    2. Con SourceTree, abre el repositorio y envialo a un remote repo.
    3. En TFS, verifica el ultimo commit realizado en el branch que se quedó ciclado o marcó error.
    4. Ejecuta el comando de migración, especificando un –changeset mayor al ultimo commit, es decir, la migración se brincará a la rama en cuestión.
      1. El comando no te permitirá utilizar el mismo directorio destino, para no borrar la migración previa. Utiliza otro directorio.
    5. Si vuelve a ocurrir el problema, repite nuevamente este procedimiento desde el 1er paso.
    6. Una vez terminada la migración, abre en SourceTree el nuevo repositorio migrado.
    7. Asignale el mismo remote que utilizaste en el paso 2.
    8. Realiza un fetch.
    9. Al terminar el fetch, realiza un pull asegurandote de que esté seleccionada la casilla de “Use rebase”.2017-04-23_03h32_30.png
    10. Realiza un push.

    La clave en este proceso fue el Rebase del paso 9. Con esto, hacemos “creer” al repositorio que los commits nuevos son parte del mismo repo.

     

  • Exportar el proyecto

    1. Respalda los attachments

    1.1-Entra a JIRA HOME / data / attachments.

    1.2-Respalda la carpeta que tenga por nombre el key del proyecto a respaldar.

    2. Respalda los workflows que utiliza el proyecto

    La importación de un proyecto específico no incluye la creación de los workflows, por lo que es necesario respaldarlos de forma independiente.

    Para hacerlo, consulta el esquema de workflows que utiliza el proyecto. Tendrás que entrar a cada workflow y respaldarlo ya sea como XML o como workflow.

    2017-05-13_17h11_55.png

    La exportación de workflows no incluye custom events ni post-funciones; por lo que al exportarlo, JIRA mostrará notas de exportación especificando los elementos que no pudieron ser importados.

    3. Respaldar información y configuración del proyecto

    Dado que JIRA no incluye un mecanismo para respaldar la información y configuración de un proyecto específico, es necesario hacer un back up completo de la instancia, entrando a System / Backup System.

    El respaldo generará un zip, el cual utilizaremos para importar un proyecto específico.

    Importar el proyecto

    1. Crea un proyecto con el mismo key del proyecto a importar. La importación se realizará en este proyecto.

    2. Una vez creado, entra al directorio JIRA HOME / data /

    3. Entra a la carpeta que tiene por nombre el key del proyecto y copia el respaldo de la carpeta de attachments que hiciste en la sección “1. Exportar el proyecto”.

    5. Importa los workflows y agregalos al esquema de workflows del proyecto destino.

    4. Entra a System / Project Import

    5. Selecciona el backup que realizase en la sección de “Exportar un proyecto”.

    6. JIRA mostrará los proyectos del backup. Selecciona el proyecto que deseas importar:

    2017-05-13_16h41_16.png

    7. JIRA validará la información a importar contra la configuración del proyecto destino y te notificará de cualquier conflicto, como por ejemplo:

    1. La importación no crea el proyecto. Debes tener creado un proyecto con el mismo key del proyecto a importar.
    2. Si el proyecto a importar usaba custom fields o custom issue types, debes crearlos manualmente (es sensible a mayúsculas y minúsculas).
    3. Asegurate de que el esquema de issues del proyecto que creaste en el paso 1 contenga todos los issue types del proyecto a importar.
    4. La importación no crea los workflows, sino que toma los que tenga asociados el proyecto que creaste en el paso 1. Si el proyecto a importar usaba estatus que no estén incluídos en el workflow del proyecto nuevo, debes agregarlos manualmente.

    Ve corrigiendo cada conflicto conforme JIRA te lo vaya notificando.