io uso Jenkins a spingere per Heroku per le nostre applicazioni. Non uso il plugin Heroku, mi piace il controllo che "Execute Shell" mi dà. Questa è una risposta piuttosto dettagliata, se mi manca qualcosa, assicurati di commentare.
1) Polling un Repo privato:
2) Costruire il ramo. Essere sicuri di avere tutte le configurazioni set GitHub, come il callback attiverà il lavoro solo se queste impostazioni vengono effettuate.
- Nella sezione "Gestione codice sorgente", selezionare l'opzione "Git" e inserire i dettagli del repository, ad es. '[email protected]: ...'
- Nel 'Build Trigger', seleziona 'Build quando un cambiamento è spinto a GitHub'
3) Push to Heroku. Alcune cose da considerare qui.
- È necessario assicurarsi che nel proprio lavoro sia stato aggiunto il repository remoto Heroku. Quando si crea un nuovo lavoro si tratta di un'azione una volta, e non ha bisogno di essere fatto per ogni generazione.Per esempio:
heroku git:remote -a myApp
git remote add heroku [email protected]:myApp.git
creare un eseguire lo script shell con il solo di cui sopra, per l'utilizzo solo sul tuo primo build.
- Se si dispone di Ping target (nuova reliquia), disabilitarli durante l'implementazione per evitare false notifiche che l'app non funziona.
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/disable -X POST -H "X-Api-Key: APIKEY"
Non dimenticare di riaccenderlo dopo:
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/enable -X POST -H "X-Api-Key: APIKEY"
- fare lo stesso per modalità di manutenzione su App
heroku maintenance:on --app myApp
heroku maintenance:off --app myApp
Mettendo questo insieme, un tipico script deploy su Jenkins può apparire come segue:
#one off to ensure heroku remote is added to repo
heroku git:remote -a myApp
git remote add heroku [email protected]:myApp.git
#disbales
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/disable -X POST -H "X-Api-Key: APIKEY"
heroku maintenance:on --app myApp
#push to heroku
git push --force heroku master
heroku run rake db:migrate --app myApp
#enables
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/enable -X POST -H "X-Api-Key: APIKEY"
heroku maintenance:off --app myApp
Grazie per questa risposta, è utile. Ho riscontrato un problema con questa soluzione a causa dei telecomandi multipli. GIT_BRANCH ora si risolve in heroku/master invece di origine/master e ho notato che l'app ora 'git pulls 'da entrambi i telecomandi. Non sono il tipo di conseguenze che questo può avere, ma non mi sembra una buona idea. Qualche idea? – DrewVS
prova 'git fetch', quindi ' git checkout origine/master' – blotto