Page-level ads

git push すると自動でデプロイしソース管理リポジトリに git push mirror する環境を構築した。 – つまさぽ(妻のサポート)

技術

git push すると自動でデプロイしソース管理リポジトリに git push mirror する環境を構築した。

投稿日:2017年2月9日 更新日:

ws-pc-top

git push すると本番環境に自動デプロイする環境を構築しました。

ローカルの本番環境へgit pushするとソース管理サーバーへgit push –mirrorする環境がうまく作れたので備忘録として残しておきます。

ws-pc-more

 

構成

登場人物

develop machine

  • 開発用マシン(Windows 8.1)
  • /path/to/develop/test にローカルリポジトリ[Z]を配置

deploy server

  • 本番環境サーバー(Ubuntu 16.04 server)
  • /path/to/develop/test-bare にリモートリポジトリ[A]を配置
  • /path/to/develop/test にローカルリポジトリ[X]を配置
  • [X]が公開用ディレクトリ

source server

  • ソース管理サーバー
  • 社内ではRedmineを使っているが、本記事ではgithubに置き換える
  • https://github.com/yourname/test.git [B]にソースを集約する

開発の流れ

  1. develop machine で開発する
  2. [Z]から[A]へ git push origin master する
  3. 自動的に[X]が[A]から git –git-dir=.git pull origin master する
    • pull は master ブランチのみ
    • [A]に他ブランチのpushがあっても[X]には影響がない
  4. 自動的に[A]から[B]へ git –git-dir=test.git fetch –all
  5. 自動的に[A]から[B]へ git –git-dir=test.git push github –mirror
    • –mirror なのでブランチも含めてソース管理サーバーに集約される

開発マシン+ローカルサーバーだけでもソース管理と自動デプロイができますが、ローカルサーバーがクラッシュしたときにソースがまるごと無くなるので、ソース管理サーバーと連携できるようにしました。

続いて、環境構築方法を記します。

参考および補足

本記事はgitを使ったデプロイ方法を参考にしました。

参考記事との違いは、ソース管理サーバーへのpushへの設定が本番環境のリモートリポジトリ[A]が持つことです。

そうすることで、開発者が増えたときにそれぞれの開発環境[Z’]にソースリポジトリ[B]への同期設定をする必要がなくなり、[A]から[Z’]にgit cloneするだけでよくなります。

git deploy 環境構築方法

必要があれば管理者権限で実行(sudoを付けるなど)してください。

ソース管理用リポジトリを作成する

source server でソース管理用のリポジトリを作成します。

ここではgithubで以下のようなリポジトリを作成したとします。

デプロイ用の bareリポジトリを作成する

deploy server でデプロイ用のbareリポジトリを作成します。

デプロイ用bareリポジトリにソース管理用リポジトリを登録する

deploy server で先程作ったソース管理用リポジトリを登録します。

githubのユーザー名はusername、パスワードはpasswordとして登録します。

本番環境を作成する

deploy server で本番環境を作ります。

git hookの設定

deploy server で git hookの設定をします。

以下のように記述します。

post-receive のアクセス権限を変更します。

以上で完了です。

参考:gitでリモートリポジトリを同期する

開発マシンでgit pushしてみる

まずは、開発マシンでgit cloneします。

※ssh接続についてはssh 接続を簡単にする ~/.ssh/configを参考

適当なファイルを作って、git push してみます。

結果

下記のような感じで表示されればOKです。

以上、参考になれば幸いです。

ws-pc-btm

ws-pc-btm-right

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Mac Pro 2009 で Gainward GeForce GTX 680 Phantom HDMI オーディオ音声出力を有効にする方法

ヤフオクで念願のMac Pro 2009 を手に入れました。 グラボは GeForce GTX680 ですが、HDMI接続しても音声が出力されません。。。 その対処法を記しておきます。

pip install cairosvg で Command “python setup.py egg_info” failed with error code 1 in path/to/cairocffi/

Windows Server 2012 R2 で Python3 環境を構築中です。 requirements.txt に必要な Python ライブラリを記載し、 [crayon-5a108d39e …

Dokuwikiをロリポップ!にインストールしてみた。

はじめに 世の中、2chからのWiki誘導が流行っているようなので、Wikiサイトについて調べてみました。 レンタルウィキサービスもたくさんあるようなのですが、アフィリエイトに関して制約があるらしい。 …

python と ヤフオクAPI を使って、商品のサムネイルを1枚の画像に合成し、商品説明に表示する方法

ヤフオクの商品説明に他の出品商品の画像を表示し、他の商品へ誘導しようと思いました。 しかし、imgタグを使って商品説明に表示できる画像の枚数には制限があります。 そこでpythonとヤフオクAPIを使 …

macOS High Sierra osx10.13 リカバリUSBインストールメディア作成方法

MacOS High Sierra のリカバリUSB作成方法を残しておきます。

ws-pc-side-top

ws-pc-side-btm

通販でポイントがたまる!
たまったポイントは現金振込み!
今ならこちらからのご入会で30ptプレゼント!

ママの生活必需品|ハピタス