質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

2回答

2640閲覧

gitでブランチごとに自動デプロイする際のバグ

twin_bird

総合スコア230

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

1グッド

0クリップ

投稿2016/09/20 07:19

編集2016/09/20 07:58

さくらVPSでgitの自動デプロイを構築しています。
ローカルからのgit pushコマンドでVPS(以下、リモートの)にデプロイできるように設定したつもりなのですが、一部機能しません。

【環境】

  • git push origin master でリモートの/var/www//html/dev/hogeTest

git push origin master:prodでリモートの/var/www//html/dev/hogeTest/var/www/html/hogeProdの両方にデプロイする。

  • 上記のhogeTestとhogeProdはそれぞれリモートブランチからのgit clone /var/lib/git/hogeRemote.gitで設置されています。 (ブランチを指定してcloneはしていません。それぞれmasterブランチのみ保持しています。)

  • リモートブランチの場所は/var/lib/git/hogeRemote.git

  • post-update

/var/lib/git/hogeRemote.git/hooks/post-updateは以下のような記述となっています。

################ # test-deploy ################ if [ "$branch" = "master" ] then # Git Deploy to Test ENV cd /var/www/html/dev/hogeTest git --git-dir=.git pull origin master fi ################################ # test-deploy and prod-deploy ################################ if [ "$branch" = "prod" ] then # Git Deploy to Product ENV cd /var/www/html/hogeProd git --git-dir=.git pull origin master fi

【問題点】

  • git push origin master/var/www/html/dev/hogeTestへのデプロイはできるが、git push origin master:prodへのデプロイができない。

git push origin master:prodをすると以下のような出力がされます。

Total 0 (delta 0), reused 0 (delta 0) remote: From /var/lib/git/hogeRemote remote: * branch master -> FETCH_HEAD remote: Already up-to-date. To git:/var/lib/git/hogeRemote.git 859d57e..b53f3ee master -> prod

リモートのprodブランチは更新されているようですが、/var/www/html/hogeProdでのgit pullが実行先がおかしいせいか、hogeProdへのデプロイができません。

しかし、/var/www/html/hogeProdにて手動でgit pull origin masterをすると問題なく動作し、デプロイが完了します。

ちなみに、git push origin masterの場合は以下のような出力です。

Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 396 bytes | 0 bytes/s, done. Total 5 (delta 4), reused 0 (delta 0) remote: From /var/lib/git/hogeRemote remote: * branch master -> FETCH_HEAD remote: Updating b53f3ee..cb429a0 remote: Fast-forward remote: hogehoge.php | 1 + remote: 1 files changed, 1 insertions(+), 0 deletions(-) To git:/var/lib/git/hogeRemote.git b53f3ee..cb429a0 master -> master

なぜ?

post-updateのtestもprodも同じベースに沿って記述しているのに、なぜprodだけ上手くいかないのでしょうか?

原因究明の方法や解決策等にアイデアがある方がいましたら助力頂けますと幸いです。

worthmine👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ijufumi

2016/09/20 07:57

prodでやりたいことは、リモートのprodブランチをデプロイすることでしょうか? それとも、リモートのmasterブランチをデプロイすることでしょうか? ご存知かと思いますが、 git push origin master:prod は、ローカルのmasterブランチの内容を リモートのprodブランチにpushしていて、リモートのmasterブランチにはpushされません。 ですが、post-updateのコマンドは、 git --git-dir=.git pull origin master となっていて、リモートのmasterブランチがpullの対象となっています。 もし質問内容の誤字でしたら、修正をお願いします。
twin_bird

2016/09/20 08:14

やりたいことは、「ローカルにはprodを置かず、master:prodでリモートのprodブランチをデプロイすること」です。 リモートのmasterブランチはhogeTestに、prodはhogeProdにデプロイしたいです。
kunai

2016/09/20 08:30

ijufumiさんのコメントで答え出てますね。
guest

回答2

0

ベストアンサー

/var/www/html/hogeProd
でやっている

git --git-dir=.git pull origin master

git --git-dir=.git pull origin prod:master

に変えてみたらどうでしょうか?

投稿2016/09/20 08:25

ijufumi

総合スコア276

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twin_bird

2016/09/20 08:53

回答ありがとうございます。 警告がいくつかでていますが、意図する動作ができた気がします!汗
guest

0

/var/www/html/hogeProd/.git/config を確認して、正しいリモートが参照されているか確認してください。
/var/lib/git/webyone をfetchして、Already up to dateと言っているように見えます。

投稿2016/09/20 07:46

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

twin_bird

2016/09/20 07:55

回答ありがとうございます。 /var/www/html/hogeProdと/var/www/html/dev/hogeTestのどちらのconfigも以下の通りでした。 ``` [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = /var/lib/git/hogeRemote.git/ [branch "master"] remote = origin merge = refs/heads/master ``` どこかおかしいでしょうか。。。?
twin_bird

2016/09/20 07:59

すみません! /var/lib/git/webyoneではなく、正しくは/var/lib/git/hogeRemoteでした。失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問