Jenkins を使用して、アプリを Heroku にプッシュしています。Heroku プラグインは使用しません。「シェルの実行」が提供するコントロールが気に入っています。これはかなり詳細な回答です。何か見逃した場合は、必ずコメントしてください。
1) プライベート レポのポーリング:
2) ブランチをビルドします。これらの設定が完了している場合にのみコールバックがジョブをトリガーするため、すべての GitHub 構成が設定されていることを確認してください。
- [ソース コード管理] セクションで、[Git] オプションを選択し、リポジトリの詳細を入力します (例: 'git@github.com:...')。
- [ビルド トリガー] セクションで、[変更が GitHub にプッシュされたときにビルドする] を選択します。
3) Heroku にプッシュします。ここで考慮すべき点がいくつかあります。
- ジョブに Heroku リモート リポジトリが追加されていることを確認する必要があります。新しいジョブを作成する場合、これは 1 回限りのアクションであり、ビルドごとに実行する必要はありません。例えば :
heroku git:remote -a myApp
git remote add heroku git@heroku.com:myApp.git
最初のビルドでのみ使用するために、上記だけでシェル実行スクリプトを作成します。
- Ping ターゲット (New Relic) がある場合は、展開中にそれらを無効にして、アプリがダウンしているという誤った通知を回避します。
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/disable -X POST -H "X-Api-Key: APIKEY"
次の後にオンに戻すことを忘れないでください。
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/enable -X POST -H "X-Api-Key: APIKEY"
heroku maintenance:on --app myApp
heroku maintenance:off --app myApp
これをまとめると、Jenkins の典型的なデプロイ スクリプトは次のようになります。
#one off to ensure heroku remote is added to repo
heroku git:remote -a myApp
git remote add heroku git@heroku.com: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