Resumen

Proteger la información sensible dentro de un repositorio es una práctica fundamental cuando trabajamos con integración continua. Claves de API, tokens de acceso y credenciales de servicios externos como Slack o Heroku pueden quedar expuestos si no tomamos las precauciones adecuadas. Con la herramienta Travis CLI y su comando encrypt, es posible cifrar esos valores directamente desde la terminal y mantener seguro el archivo de configuración .travis.yml.

¿Qué elementos sensibles debemos encriptar en Travis CI?

Dentro del archivo .travis.yml existen secciones que contienen información comprometedora. Dos casos muy comunes son:

  • Token de notificaciones de Slack: permite enviar mensajes al canal de un grupo de trabajo. Si alguien obtiene este valor, podría integrarlo en otros proyectos o enviar mensajes no deseados.
  • API key de Heroku: otorga acceso al proyecto desplegado e incluso a todos los proyectos asociados a esa cuenta.

Ambos valores deben cifrarse antes de subir cualquier cambio al repositorio. La idea es que solo Travis CI pueda desencriptarlos durante la ejecución del flujo, sin que ningún tercero tenga acceso al valor original.

¿Cómo usar el comando Travis encrypt paso a paso?

El proceso parte de tener instalado Travis CLI, la interfaz de línea de comandos de Travis. Una vez configurada, los pasos son directos.

¿Cómo encriptar el token de Slack?

  1. Copia el string que deseas proteger desde tu archivo .travis.yml.
  2. En la terminal, ejecuta el comando travis encrypt seguido del valor que quieres cifrar [01:30].
  3. Travis detecta automáticamente el repositorio que tiene integración activa con Travis CI. Si la encuentra, te pide confirmación; si no existe, te avisa que no hay integración configurada [01:52].
  4. El comando devuelve un string seguro (secure) ya encriptado.
  5. Regresa al archivo .travis.yml, elimina el valor original y pega el nuevo valor cifrado.
  6. Asegúrate de respetar la indentación correcta: el valor secure debe ir un nivel más adentro, indicando que Slack utilizará ese valor encriptado [02:30].

¿Cómo encriptar la API key de Heroku?

El proceso es idéntico. Ejecuta nuevamente travis encrypt con el valor de la API key [03:05]. En esta segunda ejecución, Travis ya reconoce el repositorio y no vuelve a preguntar por la integración, entregando directamente el resultado cifrado. Pega el valor en la sección correspondiente del archivo y verifica que la indentación sea la adecuada [03:25].

¿Cómo verificar que la encriptación funciona correctamente?

Una vez que los valores están cifrados en el archivo, el siguiente paso es subir los cambios al repositorio con los comandos habituales de Git:

  • git status para confirmar que el archivo .travis.yml fue modificado.
  • git add para agregar los cambios al staging.
  • git commit -m "Travis encrypt" para registrar el cambio.
  • git push origin master para enviar todo al repositorio remoto [04:05].

Al revisar el repositorio, el archivo .travis.yml muestra únicamente el valor encriptado, no el original. Esto dispara un nuevo flujo en Travis CI que ejecuta todo el pipeline configurado [04:30].

La prueba definitiva es observar si llega la notificación al canal de Slack. Si el mensaje aparece, significa que Travis desencriptó correctamente el token durante la ejecución y la integración funciona sin exponer datos sensibles [05:10].

El concepto detrás de Travis encrypt se basa en criptografía asimétrica: Travis genera un par de claves por repositorio, cifra el valor con la clave pública y solo el entorno de Travis puede descifrarlo con la clave privada. Esto garantiza que aunque alguien lea el archivo de configuración, no podrá obtener el valor real.

Recuerda que cada repositorio tiene su propia clave, por lo que un valor encriptado para un proyecto no funcionará en otro. Si manejas múltiples proyectos, deberás repetir el proceso en cada uno. ¿Has tenido que proteger otros tipos de credenciales en tus flujos de CI/CD? Comparte tu experiencia en los comentarios.

      Buenas practicas de seguridad