La semana pasada tuve la oportunidad de participar en mi primera Hackweek. Nunca tuve una experiencia así en ninguna otra empresa para la que he trabajado y entre los informes de mis colegas sobre experiencias anteriores y mis propias expectativas. Estaba muy emocionado de ver de qué se trataba todo el alboroto.

Este tipo de eventos no son exclusivos de SUSE, de hecho, Twitter y muchas otras compañías también tenían sus Hackweeks al mismo tiempo y me alegra que sea así porque después de tener la oportunidad de participar en uno darse cuenta de que es una excelente manera de promover la creatividad.

Una hackweek es básicamente una semana en la que puedes trabajar en cualquier cosa en la que quieras trabajar. No se espera que entregue nada, sino que se lo alienta a experimentar y explorar con cualquier cosa que piense que vale la pena pasar.

Para sacar el máximo provecho de Hackweek, decidí unirme a un proyecto y no iniciar uno propio para poder hacer un poco de programación en pareja. Este tipo de interacciones siempre hace que sea muy divertido para mí y además puedo aprender muchísimo. Así es como me uní a Cornelius Schumacher para trabajar en Yes Ship It! Este es un proyecto que ya había comenzado por su cuenta, por lo que no estábamos haciendo todo desde cero.

El enfoque de yes_ship_it es diferente del script de lanzamiento típico. No define una serie de pasos que se ejecutan para realizar un lanzamiento. Define una secuencia de aserciones sobre el lanzamiento, que luego se verifican y aplican.

Lo primero que decidimos hacer juntos fue una aplicación Rails que le permite rastrear lanzamientos exitosos de software. Ya que iba a estar 100% relacionado con Yes Ship It! decidimos llamarlo Yes It Shipped!. Déjame mostrarte lo trivial que es agregarlo a un proyecto como la gema formstack-api.

  1. Instala la gema yes_ship_it

     $ gem install yes_ship_it
    
  2. Agregue un archivo yes_ship_it.conf

     $ yes_ship_it init
    
  3. ¡Entrega!

     $ yes_ship_it
    

Por defecto yes_ship_it verificará si:

  • estás en la rama de lanzamiento correcta (por defecto maestro) y el código fue empujado.
  • no falta el directorio de trabajo para confirmar nada.
  • la versión fue actualizada
  • el registro de cambios se actualizó
  • se agregó y publicó una etiqueta
  • una nueva versión de la gema fue construida y publica

El objetivo es hacerlo lo más genérico posible para que pueda adaptarlo a cualquier proyecto que tenga. Para empezar, puede eliminar cualquier cheque en el proceso y muy pronto podrá agregar sus propios cheques.

Lo que más me gusta es que puedo ejecutar yes_ship_it en cualquier momento. No necesito recordar ni asegurarme cuál fue el último paso que hice porque eso es exactamente lo que hará por mí.

¡Recuerda hacer entregas tempranas y a menudo!