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

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

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

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

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

Stash

Gitリポジトリを管理するサービス。 プロジェクト規模・ユーザー数などの増加に伴い、管理が難しくなるリポジトリを、サーバー上で一元的かつセキュアに管理できるサービスです。

Q&A

解決済

1回答

2550閲覧

stashのgit Hooksを使って自動的にJenkinsでビルドしたい(ローカル環境)

yoshis22

総合スコア107

Git

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

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

Stash

Gitリポジトリを管理するサービス。 プロジェクト規模・ユーザー数などの増加に伴い、管理が難しくなるリポジトリを、サーバー上で一元的かつセキュアに管理できるサービスです。

0グッド

0クリップ

投稿2016/10/04 09:01

編集2016/10/05 03:31

stashのgit Hooksを使って自動的にJenkinsでビルドしたいと考えています。

ただし、jeninsはローカル環境にあり
http://localhost:8080

stashのWebHooksからローカル環境を見ることができません。
ローカルフックを使ってできる方法をお教えください。

理由:Jenkinsをクローズの環境で利用したい

条件:
3人で別々のPC環境でGITをインストールしていて
誰かがプッシュした段階で起動し、最新環境にビルドする仕組みを作成したいです。

----------------------------------- 追記 --------------------------------------------
説明不足ですいません。
Jenkinsは1台です

3台のPCで一つのStashでリポジトリを管理しています。

サーバは本番環境とステージング環境の2台で、
本番環境はポーリングで間隔的にビルドをし、ステージング環境はHooksを使って即時ビルドするようにしています

ステージング環境も、PC3台も、Jenkinsサーバもすべてローカル環境になってます。
そこで、3人のうちだれかがStashにプッシュした段階で
ステージング環境がビルドされる仕組みを作成したいです

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

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

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

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

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

suama

2016/10/04 12:44

こんにちは。個人的には、ポーリングを利用したほうがいいのかなと思いますが、もう少し条件を詳しく知りたいので、追記いただければと思います。「 jeninsはローカル環境にあり」とありますが、各自(3名)のPCでそれぞれ localhost:8080 でJenkinsを起動させているということでしょうか。また、最新環境にビルドとは、各自のPC内の環境を最新にするということでしょうか。それとも、別にある環境(1つ?)を最新に更新するという処理でしょうか。
yoshis22

2016/10/05 03:31

説明不足ですいません。 Jenkinsは1台です 3台のPCで一つのStashでリポジトリを管理しています。 サーバは本番環境とステージング環境の2台で、 本番環境はポーリングで間隔的にビルドをし、ステージング環境はHooksを使って即時ビルドするようにしています ステージング環境も、PC3台も、Jenkinsサーバもすべてローカル環境になってます。 そこで、3人のうちだれかがStashにプッシュした段階で ステージング環境がビルドされる仕組みを作成したいです
yoshis22

2016/10/05 03:33 編集

返信の場合は改行ができないので質問内容に追記しましたのでご確認ください
suama

2016/10/05 07:03 編集

追記&コメントありがとうございます。「ステージング環境に入っているGit環境でどこかが更新されたら 」という、 このあたりがよくわかっていないのですが、私が認識した構成と違っているような気がしますので、深入りは避けた方がいいのかもしれません、すみません。 「ステージング環境はHooksを使って即時ビルド」というのは、現在Jenkinsを使ってのビルドではない、かつ、これをJenkinsでのビルドに置き換えたいということで間違いないでしょうか?
yoshis22

2016/10/05 07:24

さらに追記で質問内容を更新しましたのでご確認ください。大変お手数ではありますが何卒よろしくお願いいたします。
suama

2016/10/06 09:08 編集

ありがとうございます!質問のタイムスタンプは変更されていない?ような感じがしましたが、こちらのメッセージでは改行がうまくいかないので、回答側にまたコメントさせていただきますね。
guest

回答1

0

ベストアンサー

こんにちは、説明の追記ありがとうございます!

ローカルフック

なので、各自のPCでのpush時のクライアントサイドでのフックということですね。間違えていたらすみません。
各自のPCから、Jenkinsへは到達可能でしょうか?

  1. ステージング環境にデプロイするJenkinsのジョブを作る(すでにあると思いますが)
  2. ローカルPCからpushした後に、そのJenkinsのジョブに対してAPI経由でビルド実行させればいい

ということになりますが、クライアント側のフックだと、pre-push しかないみたいでしょうか....。

こちらの記事に、git push をラップしたスクリプトを作って、 pushの前後に何か処理をさせる例が載っています。
多分これに近い操作がご希望なのかな...とも思いますが、いかがでしょうか。

http://stackoverflow.com/questions/1797074/local-executing-hook-after-a-git-push/3812238#3812238

投稿2016/10/05 05:17

suama

総合スコア1997

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

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

yoshis22

2016/10/05 06:00

すいません。 各自のPCで設定する手間は取らせたくないです。 ステージング環境に入っているGit環境でどこかが更新されたら 更新された情報を取得してビルドするということができればいいのですが・・・ やはり、むずかしいですか?
suama

2016/10/06 09:16

適切なコメントができずこちらこそ申し訳ございません。コメントありがとうございます。 > 各自のPCで設定する手間は取らせたくない というのはもっともだと思います。メンバーも変わったりする可能性がありますし、WindowsPCで作業とかであれば、シェル操作は困りますし...。 > 本番環境はポーリングで間隔的にビルドをし、ステージング環境はHooksを使って即時ビルドするようにしています の件ですが、このポーリングは、本願環境でcronなどを使っているのでしょうか? また、「ステージング環境はHooksで」とある件は、Jenkinsではなくてどこからのhookで行っているのでしょうか。 「ステージング環境に入っているGit環境でどこかが更新されたら」とあるので、ステージング環境に入って直にGitを操作するということでしょうか。 理解が乏しくて申し訳ありません。
yoshis22

2016/10/11 02:33

結局WebHookを使うことになりました 親切にありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問