travis gmbh deploy ruby-on-rails heroku continuous-integration travis-ci

ruby-on-rails - deploy - travis ci gmbh



¿Cómo desplegar una aplicación de rieles en heroku desde travis-ci? (4)

Acababa de pensar en este tipo de escenario, aunque no consideraba específicamente a Heroku como la plataforma de elección. De todos modos, esto es lo que he encontrado con:

  1. Las solicitudes de extracción van a la rama "desarrollo"
  2. Travis prueba la solicitud de extracción para usted
  3. Si estamos a punto de implementar lo que actualmente está en "desarrollar" : los humanos extraen la solicitud, la revisan y la combinan en la rama "lanzamiento / candidato"
  4. Pruebas de Travis de nuevo una vez fusionadas.
  5. Una vez que se haya superado la prueba en esa rama, haga que Travis cree una solicitud de extracción dirigida a "lanzamiento / producción" (tal vez escriba una envoltura para la API de GitHub para crear el formulario de solicitud de extracción real Travis).
  6. Dependiendo de si realmente queremos implementar o no del todo todavía, un ser humano se fusiona (en "lanzamiento / producción" ) o cierra la solicitud de extracción creada desde Travis
  7. Tener un host de despliegue o tener cada uno de los hosts de la aplicación (si tiene muchos y no desea tener un SPF) para realizar un seguimiento de la rama de "lanzamiento / producción" .

Estoy seguro de que podrías implementar una aplicación de Heroku que se encargará del rol de ser el host del implementador o algo aún más loco.

Además, es posible que desee que Travis le notifique a través de IRC y tenga otro bot IRC en su parte del cliente que tendrá acceso a su clave SSH personal y haga un impulso a Heroku. También puede implementar una interfaz de confirmación allí mediante tener una conversación privada con su propio bot o una interfaz gráfica de usuario con un "¡adelante!" botón. Si no eres de la vieja escuela, puedes usar Hubot para ese propósito.

Por cierto, también puede introducir algún tipo de rama de puesta en escena o lo que quiera entre algunos de los pasos anteriores. Es probable que también deba usar etiquetas y la reversión simplemente empujaría una etiqueta de trabajo conocida a "liberación / producción" desde donde la ejecutará su script de implementación.

¿Hay alguna forma de implementar una aplicación heroku rails después de una construcción exitosa de travis-ci?


Acabo de implementar este caso con una aplicación mía. En realidad no es tan difícil de hacer, pero requiere algunos pasos:

  1. Necesitas tu clave de Heroku API
  2. Vea esta .travis.yml para un ejemplo .travis.yml y obtenga el script travis_deployer.rb
  3. Luego instale la gema travis, vea la respuesta a otra pregunta sobre cómo proteger su clave API .
    • Si no te importa, solo usa el ejemplo de arriba.
    • Ejecute travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
    • Copie el resultado en su .travis.yml en la sección env -> global

El archivo travis_deployer.rb se encarga de las claves ssh y la rama remota de heroku.

Si has realizado todos estos pasos, tu .travis.yml podría verse así:

env: global: - secure: "1u21hjnmHjkghduUIJhhs76saljlkajdlfhGhgdJgfaVtgasfLLmNBnb87dad=" after_success: - gem install heroku - yes | ruby travis_deployer.rb - heroku keys:clear - yes | heroku keys:add - git push heroku master


Aquí hay una versión que encontré en el blog de Mark Bates . Es similar al de Odi, solo que se basa en el after_script .travis.yml solo en su archivo .travis.yml .

  1. En primer lugar, use la función de Travis para cifrar las variables de entorno para que sus claves secretas de API queden protegidas:

    gem install travis travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY

  2. Luego agregue lo siguiente a su archivo .travis.yml :

    env: global: - secure: YOUR_SECURED_HEROKU_API_KEY after_script: # Install the Heroku gem (or the Heroku toolbelt) - gem install heroku # Add your Heroku git repo: - git remote add heroku [email protected]:YOUR_HEROKU_APP.git # Turn off warnings about SSH keys: - echo "Host heroku.com" >> ~/.ssh/config - echo " StrictHostKeyChecking no" >> ~/.ssh/config - echo " CheckHostIP no" >> ~/.ssh/config - echo " UserKnownHostsFile=/dev/null" >> ~/.ssh/config # Clear your current Heroku SSH keys: - heroku keys:clear # Add a new SSH key to Heroku - yes | heroku keys:add # Push to Heroku! - yes | git push heroku master

  3. Y listo: confíe sus nuevos cambios y disfrute implementando a Heroku a través de TravisCI.

Editar: si obtiene algún error en travis encrypt , esta podría ser su solución .