VagrantでVirtualBoxに作成した仮想マシン(CentOS7.3)のGitBucketにEclipseからpushとか

せっかくなんで、VagrantVirtualBoxに作成した仮想マシン(CentOS7.3)のGitBucketサーバに、Eclipseからpushしてみたいと思います。

GitBucketにリモートリポジトリを作成し、ローカルにリポジトリを作成(リモートリポジトリからclone)などは下記を参考ください。 

ts0818.hatenablog.com

 

エクスプローラーで確認

前回までに、EclipseのWorkspaceのプロジェクトに、エクスプローラー側から直にgitリポジトリを作成したので確認。「temporalsTest」がgit管理下に置かれてます。

f:id:ts0818:20171009152233j:plain

「.git」フォルダが存在していればリポジトリを作成できているということみたいです。(隠しファイルが表示されない場合は、「表示」>「隠しファイル」にチェック)

Eclipse側でGit管理下に追加

Eclipseを起動します。「temporalsTest」をEclipse側でもgit管理下になるようにしてみます。

f:id:ts0818:20171009152617j:plain

プロジェクトを選択した状態で右クリックし、「チーム(E)」>「プロジェクトの共用(S)」を選択。

f:id:ts0818:20171009153310j:plain

今回、「Git」を使っているので「Git」を選択し、「次へ(N)>」。

f:id:ts0818:20171009153534j:plain

「完了(F)」をクリック。

f:id:ts0818:20171009153633j:plain

 

f:id:ts0818:20171009153709j:plain

仮想マシン起動

GitBucketにアクセスするために仮想マシンを起動します。(本番環境ではサーバは常時起動しているのが普通のようです。)

Vagrantの場合、Vagrantfileのあるフォルダまで移動する必要があるので、場所を確認。 

f:id:ts0818:20171009154253j:plain

コマンドプロンプトで、ディレクトリを移動し、仮想マシン起動!

cd C:¥vagrantVM¥GitBucket
vagrant up

f:id:ts0818:20171009154513j:plain

f:id:ts0818:20171009154726j:plain

起動しましたら、ブラウザで「http://仮想マシンIPアドレス/gitbucket/」にアクセスし、ログインします。(アドレスは各々の環境に合わせてください。)

f:id:ts0818:20171009154949j:plain

無事、アクセスできました。

f:id:ts0818:20171009155132j:plain

Eclipseでコードを編集し、push

リモートリポジトリから最新の情報をプルします。プロジェクトを選択した状態で右クリックし、「チーム(E)」>「プル(U)」を選択。(後述しますが「パースペクティブ」を「Git」にしたほうが良かったかもです。)

f:id:ts0818:20171009161507j:plain

GitBucketにログインするときの「ユーザー」「パスワード」を入力します。

f:id:ts0818:20171009161815j:plain

「OK」をクリック。(常に最新の状態をリモートリポジトリからプルしてきてから作業を始めるように習慣付けるのが良さげです、前の職場では先輩にめちゃ迷惑かけました...)

f:id:ts0818:20171009161909j:plain

パースペクティブ」に「Git」があるみたいなので表示。「ウィンドウ(W)」>「パースペクティブ(R)」>「パースペクティブを開く(O)」>「その他(O)...」を選択。

f:id:ts0818:20171009162146j:plain

「Git」を選択し、「OK」。

f:id:ts0818:20171009162345j:plain

プロジェクトを選択した状態で右クリックし、「表示」>「Git ステージング」を選択。

f:id:ts0818:20171009162417j:plain

「Git ステージング」で「ステージされていない変更」となっているものを全選択し、「ステージされた変更」にドラッグアンドドロップします。

f:id:ts0818:20171009163707j:plain

「ステージされた変更」に移動できました。CUIの操作でいうところのgit addコマンドを実行した感じですかね?

f:id:ts0818:20171009163723j:plain

続いて、「コミット・メッセージ」にどんな変更をしたか記述し、「コミットおよびプッシュ」で、「コミット」と「プッシュ」を行います。

f:id:ts0818:20171009163931j:plain

「次へ(N)>」をクリック。 

f:id:ts0818:20171009164124j:plain

GitBucketのログイン時のユーザー名、パスワードを入力し、「OK」。

f:id:ts0818:20171009164201j:plain

「完了(F)」をクリック。

f:id:ts0818:20171009164255j:plain

プッシュされたということかな?

f:id:ts0818:20171009164333j:plain

ブラウザで「http://仮想マシンIPアドレス/gitbucket/」にアクセスすると、反映されています。

f:id:ts0818:20171009164748j:plain

Redmineのほうが反映されてないっぽい..

f:id:ts0818:20171009165225j:plain

MobaXterm起動で、VagrantVirtualBoxに作成した仮想マシン(CentOS7.3)にsshログインし「tail /var/lib/redmine/log/production.log」 で確認するもエラーがよく分からず。

まずはログが出力されるように設定を変更。

 

{Redmineをインストールしたディレクトリ}/config/environments/production.rb

に以下の行を追加。

 

1
config.log_level = :debug

 

ログは

 

{Redmineをインストールしたディレクトリ}/log/production.log

 

に吐き出されるのでtailコマンドなどでこれを確認しながらデバッグ

 

GitBucketとRedmineを連携する | 眠るシーラカンスと水底のプログラマー

GithubHook: Command 'git fetch origin' didn't exit properly. Full output: ["fatal: could not read Username for 'http://192.168.33.10': No such device or address\n"]
Shelling out: 'git' '--git-dir' '/var/lib/redmine/repo/gitBucketTest.git' '-c' 'core.quotepath=false' '-c' 'log.decorate=no' 'branch' '--no-color' '--verbose' '--no-abbrev'

f:id:ts0818:20171009181616j:plain

権限の問題ですかね....Redmineの実行ユーザーが分からずあいまいになっていた部分を調べていくしかなさそうですね。

koppen/redmine_github_hook: Allow your Redmine installation to be notified when changes have been pushed to a Github repository.

f:id:ts0818:20171009221226j:plain

利用してるRedmine_github_hookの説明図と、エラーの内容から、Redmine側からGitBucket側へのgit fetchが上手くいってない模様。(GitHubじゃなくても使えるプラグインらしいです。)

 

GitBucket自体とのやりとりはできたということで。

そして、Egit、やんごとなき分かりづらさですね。

 

2017年10月10日(火)23:40  追記 

SSHの設定

privateに設定してあるリポジトリを利用する場合、Redmineを動かしているユーザが秘密鍵を持ち、Bitbucket側に公開鍵を置く必要があります。
~/.sshにid_rsaなどを置き、Bitbucketの管理画面から対応する公開鍵を追加しましょう。

Redmine 2.0.xとBitbucket(Git)を連携させる - 3100

⇧  上記サイト様が仰ってることが原因っぽい気が、たしかGitBucketに作ったリポジトリでprivateを選択していたような...。

後日、トライしてみたいと思います。 

 

2017年10月14日(土)  22:00 追記

GitBucketのプライベートリポジトリとRedmineを連携する | 眠るシーラカンスと水底のプログラマー

⇧  上記サイト様を参考に、redmineに配置するbareリポジトリを作成する際に、gitBucketログイン時のユーザー名とパスワードを含めることでいけました。

rm -rf /var/lib/redmine/repo/gitBucketTest.git
sudo -u [redmineの実行ユーザー] git clone --mirror http://[GitBucketログイン時のUsername]:[GitBucketログイン時のPasssword]@ホスト名/git/[GitBucketのリポジトリ].git

f:id:ts0818:20171014214241j:plain

今回、ホスト名のところが、Apache Httpdの設定で「gitbucket」サブディレクトリでアクセスできるようにしているので、「IPアドレス/gitbucket」になってます。 

GitHub から https で clone した時にパスワードを保存する方法 - Qiita

⇧  セキュリティ的に良くないとの話も。

 

ひとまず、解決できたということで。