Jak wdrożyć aplikację rails na heroku od travis-ci?
Jest jakiś sposób na wdrożenie aplikacji heroku rails po sukcesie?
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/
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:
- potrzebujesz Twojego klucza heroku API
- Zobacz ten gist dla przykładu
.travis.yml
i pobierztravis_deployer.rb
skrypt - 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
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
.
-
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
-
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
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 .
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:
- Pull requests go to "development" branch Travis testuje dla Ciebie prośbę o ściągnięcie]}
- 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 Travis raz jeszcze testuje scalone
- 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). 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
- 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.
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