せっかくなんで、VagrantでVirtualBoxに作成した仮想マシン(CentOS7.3)のGitBucketサーバに、Eclipseからpushしてみたいと思います。
GitBucketにリモートリポジトリを作成し、ローカルにリポジトリを作成(リモートリポジトリからclone)などは下記を参考ください。
エクスプローラーで確認
前回までに、EclipseのWorkspaceのプロジェクトに、エクスプローラー側から直にgitリポジトリを作成したので確認。「temporalsTest」がgit管理下に置かれてます。
「.git」フォルダが存在していればリポジトリを作成できているということみたいです。(隠しファイルが表示されない場合は、「表示」>「隠しファイル」にチェック)
Eclipse側でGit管理下に追加
Eclipseを起動します。「temporalsTest」をEclipse側でもgit管理下になるようにしてみます。
プロジェクトを選択した状態で右クリックし、「チーム(E)」>「プロジェクトの共用(S)」を選択。
今回、「Git」を使っているので「Git」を選択し、「次へ(N)>」。
「完了(F)」をクリック。
仮想マシン起動
GitBucketにアクセスするために仮想マシンを起動します。(本番環境ではサーバは常時起動しているのが普通のようです。)
Vagrantの場合、Vagrantfileのあるフォルダまで移動する必要があるので、場所を確認。
コマンドプロンプトで、ディレクトリを移動し、仮想マシン起動!
cd C:¥vagrantVM¥GitBucket vagrant up
起動しましたら、ブラウザで「http://仮想マシンのIPアドレス/gitbucket/」にアクセスし、ログインします。(アドレスは各々の環境に合わせてください。)
無事、アクセスできました。
Eclipseでコードを編集し、push
リモートリポジトリから最新の情報をプルします。プロジェクトを選択した状態で右クリックし、「チーム(E)」>「プル(U)」を選択。(後述しますが「パースペクティブ」を「Git」にしたほうが良かったかもです。)
GitBucketにログインするときの「ユーザー」「パスワード」を入力します。
「OK」をクリック。(常に最新の状態をリモートリポジトリからプルしてきてから作業を始めるように習慣付けるのが良さげです、前の職場では先輩にめちゃ迷惑かけました...)
「パースペクティブ」に「Git」があるみたいなので表示。「ウィンドウ(W)」>「パースペクティブ(R)」>「パースペクティブを開く(O)」>「その他(O)...」を選択。
「Git」を選択し、「OK」。
プロジェクトを選択した状態で右クリックし、「表示」>「Git ステージング」を選択。
「Git ステージング」で「ステージされていない変更」となっているものを全選択し、「ステージされた変更」にドラッグアンドドロップします。
「ステージされた変更」に移動できました。CUIの操作でいうところのgit addコマンドを実行した感じですかね?
続いて、「コミット・メッセージ」にどんな変更をしたか記述し、「コミットおよびプッシュ」で、「コミット」と「プッシュ」を行います。
「次へ(N)>」をクリック。
GitBucketのログイン時のユーザー名、パスワードを入力し、「OK」。
「完了(F)」をクリック。
プッシュされたということかな?
ブラウザで「http://仮想マシンのIPアドレス/gitbucket/」にアクセスすると、反映されています。
Redmineのほうが反映されてないっぽい..
MobaXterm起動で、VagrantでVirtualBoxに作成した仮想マシン(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コマンドなどでこれを確認しながらデバッグ。
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'
権限の問題ですかね....Redmineの実行ユーザーが分からずあいまいになっていた部分を調べていくしかなさそうですね。
利用してるRedmine_github_hookの説明図と、エラーの内容から、Redmine側からGitBucket側へのgit fetchが上手くいってない模様。(GitHubじゃなくても使えるプラグインらしいです。)
GitBucket自体とのやりとりはできたということで。
そして、Egit、やんごとなき分かりづらさですね。
2017年10月10日(火)23:40 追記
SSHの設定
privateに設定してあるリポジトリを利用する場合、Redmineを動かしているユーザが秘密鍵を持ち、Bitbucket側に公開鍵を置く必要があります。
~/.sshにid_rsaなどを置き、Bitbucketの管理画面から対応する公開鍵を追加しましょう。
⇧ 上記サイト様が仰ってることが原因っぽい気が、たしか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
今回、ホスト名のところが、Apache Httpdの設定で「gitbucket」サブディレクトリでアクセスできるようにしているので、「IPアドレス/gitbucket」になってます。
・GitHub から https で clone した時にパスワードを保存する方法 - Qiita
⇧ セキュリティ的に良くないとの話も。
ひとまず、解決できたということで。