Table of Contents
Gradle を使って、 Git で管理されているアプリケーションをデプロイするスクリプトを書きました。 Gradle でなくても良かったのですが、 偶然 Gradle でやったことがあったので、 Gradle で書きました。
前提
今回前提としたデプロイは、単純に git pull
をしてコードを更新した後、 サーバを再起動するものです。 サーバから Git の リモートリポジトリへの認証は、 鍵ファイルを使って行っているものとします。
また Rails を前提としているので、 Rails 専用 の処理もあります。 他の言語でも応用できます。
応用次第で、 git で管理されているコードの中の一部をサーバにコピーすることもできます。
環境
- Gradle 3.2.1
準備
gradle をインストールして、 gradle init
を実行します。 そうすると、 gradle のテンプレートが用意されます。 そこにデプロイのタスクを書いていきます。
コード
次のようになりました。
処理説明
デプロイ部分の処理は次の通りです。 現場によって変えて使う部分です。
- ssh でサーバに接続します。
df
コマンドで空き容量をチェックします。 ここで Y または N をタイプして、後続の処理を実行するか否か決定します。- 古いコードをコピーします。
git pull
で新しいソースコードを取得・デプロイします。rake db:migrate
を実行します。 この部分は Rails 固有 の処理です。- Apache を再起動します。 このときの終了ステータスに応じて “Success” または “Failed” を表示します。
注意点
git pull
のためにサーバ側に秘密鍵を登録しておく必要があります。 SSH でのエージェントフォワードもできるので、 自分の秘密鍵を使って git pull
を行うこともできます。
SSH のエージェントフォワードをする場合は次の記述をリモートセッションの実行前に追加します。
sshのキーは ssh-add
で登録しておきます。 これで git で使用する秘密鍵を登録しておけばその鍵を使って git pull
が行われます。
GitHub
GitHub で公開しています。 gradle-deploy