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

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

関連記事

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

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

うわっ…私のストレージ、使いすぎ…?MacBook Airでそう思ったら…

はじめに MacにVirtualBoxをインストールして、その上でUbuntuとか動かして遊ぼうと思ったら、ストレージの空き容量に不安を覚えました。。。 このままではやばいと思い、急遽64GBのSDカ …

import cairosvg で raise OSError(“dlopen() failed to load a library: %s” % ‘ / ‘.join(names)) (Windows Server 2012 R2)

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

python 3.5.2 の configparser で UnicodeDecodeError が出た場合の対処法

最近、会社でpythonを扱う機会があり、勉強中です。 せっかくなので、個人的にもヤフオクAPIで商品情報を取得し、加工するコードを書いていたのですが、Sublime Text 3 でpythonを実 …

ウェブマスターツールにサイトマップを登録したらエラーが発生!その原因は?

はじめに 当ブログのサイトマップをウェブマスターツールに登録したらエラーが発生しました。 環境は、マルチサイト機能のサブディレクトリ形式で作成したブログ WordPressの複数ブログでサブドメイン形 …

ws-pc-side-top

ws-pc-side-btm