Jak wdrożyć aplikację rails na heroku od travis-ci?

Jest jakiś sposób na wdrożenie aplikacji heroku rails po sukcesie?

Author: danielgatis, 2012-04-19

4 answers

Travis CI ma teraz wbudowane wsparcie dla wdrożenia do Heroku: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/

 9
Author: Konstantin Haase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-09 15:12:32

Właśnie wdrożyłem tę sprawę z moją aplikacją. W rzeczywistości nie jest to trudne do zrobienia, ale wymaga pewnych kroków:

  1. potrzebujesz Twojego klucza heroku API
  2. Zobacz ten gist dla przykładu .travis.yml i pobierz travis_deployer.rb skrypt
  3. następnie zainstaluj Travis gem, zobacz odpowiedź na inne pytanie, Jak zabezpieczyć klucz API.
    • jeśli nie zależy ci na tym, po prostu użyj przykładu z gist powyżej.
    • Run travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
    • skopiuj wynik w .travis.yml w sekcji ENV - > global

Plik travis_deployer.rb zajmuje się kluczami ssh i zdalną gałęzią dla heroku.

Jeśli wykonałeś wszystkie te kroki, Możesz.travis.yml wyglądać tak:

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
 5
Author: Odi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:48

Oto wersja, którą znalazłem na blogu Marka Batesa . Jest podobny do Odiego, tylko że opiera się na after_script w samym pliku .travis.yml.

  1. Po pierwsze, użyj funkcji Travis ' a, aby szyfrowanie zmiennych środowiskowych tak więc twoje tajne klucze API pozostają chronione:

    gem install travis
    travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY
    
  2. Następnie dołącz do pliku .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. I gotowe: Zatwierdź nowe zmiany i ciesz się wdrożeniem do Heroku poprzez TravisCI.


Edit: jeśli pojawią się jakieś błędy na travis encrypt, To może być Twoje rozwiązanie .

 2
Author: Marius Butuc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:27:49

Właśnie myślałem o tego typu scenariuszu, choć nie uważałem Heroku za platformę wyboru. Tak czy siak to właśnie wymyśliłem:

  1. Pull requests go to "development" branch
  2. Travis testuje dla Ciebie prośbę o ściągnięcie]}
  3. Jeśli mamy zamiar wdrożyć to, co obecnie znajduje się w "develop" - ludzie ściągają żądanie, przeglądają i łączą to w "release/candidate" branch
  4. Travis raz jeszcze testuje scalone
  5. po przejściu testu na tej gałęzi - poproś Travisa, aby stworzył pull request targeting "release/production" (Być może napisz wrapper dla GitHub API, aby utworzyć rzeczywisty formularz pull request Travis).
  6. W zależności od tego, czy chcemy wdrożyć, czy jeszcze nie - człowiek łączy się (w "release/production" ) lub zamyka pull request utworzony przez Travisa
  7. Masz hosta wdrożeniowego lub każdy z hostów aplikacji (Jeśli masz ich wiele i nie chcesz aby mieć SPF) do śledzenia gałęzi "release/production".

Jestem pewien, że możesz zaimplementować aplikację Heroku, która poradzi sobie z rolą hosta wdrożeniowego lub czegoś jeszcze bardziej szalonego.

Możesz również spróbować, aby Travis powiadomił Cię przez IRC i mieć innego bota IRC po stronie klienta, który będzie miał dostęp do Twojego osobistego klucza SSH i wypchnąć go do Heroku, możesz również zaimplementować tam interfejs potwierdzenia poprzez posiadanie prywatnego rozmowa z własnym botem lub skryptowym interfejsem GUI z "śmiało!" Przycisk. Jeśli nie jesteś tak Oldskulowy, możesz użyć Hubota do tego celu.

Nawiasem mówiąc, możesz również wprowadzić jakiś rodzaj gałęzi staging lub cokolwiek chcesz pomiędzy niektórymi z powyższych kroków. Prawdopodobnie powinieneś również użyć tagów, a rollback po prostu wciśnie tag know working do "release/production" , skąd zostanie odebrany przez skrypt deployera.

 0
Author: errordeveloper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-24 22:53:33