こんにちは!内藤です!
札幌は数年ぶりの大雪です。
久しぶりに一日中雪かきをして、身体が痛いです・・・
今回は、Gitとサーバのソースコード変更の話です。
ちょっと特殊な環境用にツールを作成したので、公開します。
対象の環境
・ソースコードはGit管理しているが、サーバからGitリポジトリに直接アクセスできない
・リポジトリアクセスとサーバアクセスで、接続先のVPNを切り替える必要がある
・1つの環境が複数のサーバで構成されていて、すべてのサーバを同時に更新したい
ソースコード
GitHubで公開しています。
https://github.com/northtorch/server-deploy
ツールの概要
主な機能
- リモートサーバーの現在のコードをバックアップとして取得
- Gitリポジトリから指定したブランチ/タグをクローン
- サーバー側とリポジトリ側の差分を検出(空行・改行コードの違いは無視)
- 差分ファイルのみをサーバーに転送
- 転送後に指定のリロードスクリプトを実行
想定ユースケース
- サーバーからインターネット/Gitリポジトリへの直接アクセスが制限されている環境
- 複数環境(開発・ステージング・本番)への段階的デプロイ
- VPN切り替えが必要な環境でのデプロイ作業
実際に使用している環境
- リポジトリはアクセス制限下にあるGitBucketサーバ
- 更新対象のサーバは別のVPN経由でアクセス
- 1環境あたり4台の別々の機能を持ったサーバで更新
まとめ
Ansibleを使えばコードを書かなくても実現できそうですが・・・何かのご参考になれば。