内藤 裕二/ 2026年 1月 31日/ 技術

こんにちは!内藤です!
札幌は数年ぶりの大雪です。
久しぶりに一日中雪かきをして、身体が痛いです・・・

今回は、Gitとサーバのソースコード変更の話です。
ちょっと特殊な環境用にツールを作成したので、公開します。

対象の環境

・ソースコードはGit管理しているが、サーバからGitリポジトリに直接アクセスできない
・リポジトリアクセスとサーバアクセスで、接続先のVPNを切り替える必要がある
・1つの環境が複数のサーバで構成されていて、すべてのサーバを同時に更新したい

ソースコード

GitHubで公開しています。

https://github.com/northtorch/server-deploy

ツールの概要

主な機能

  • リモートサーバーの現在のコードをバックアップとして取得
  • Gitリポジトリから指定したブランチ/タグをクローン
  • サーバー側とリポジトリ側の差分を検出(空行・改行コードの違いは無視)
  • 差分ファイルのみをサーバーに転送
  • 転送後に指定のリロードスクリプトを実行

想定ユースケース

  • サーバーからインターネット/Gitリポジトリへの直接アクセスが制限されている環境
  • 複数環境(開発・ステージング・本番)への段階的デプロイ
  • VPN切り替えが必要な環境でのデプロイ作業

実際に使用している環境

  • リポジトリはアクセス制限下にあるGitBucketサーバ
  • 更新対象のサーバは別のVPN経由でアクセス
  • 1環境あたり4台の別々の機能を持ったサーバで更新

まとめ

Ansibleを使えばコードを書かなくても実現できそうですが・・・何かのご参考になれば。