HYT MachineWorks

やったこととか思いついたことをメモしておくブログです。

GitBucketをTomcatを使わずサービス化してプライベートGitを構築

社内ネットワークで分散バージョン管理に取り組む

プログラミングだけでなく何かを作ろうとした時に、困るのはバージョン管理だと思おいます。

  • プログラム.py
  • プログラム_途中.py
  • プログラム_最新.py
  • プログラム_最新20170604.py

みたいな感じで何がなんだかわからなく成ることが多いと思います。そこでGitHubクローンであるGitBucketを使ってプライベートなGitサーバを立ち上げてみたいと思います。

 GitBucketとは

たけぞうさんが開発されているScalaで作られたGitHubクローンです。

github.com

GitBucketの一番簡単な使い方は、公式のGitHubにもあるように

  1. Java8がインストール(されていれば飛ばしてOK)
  2. gitbucket.warを適当なフォルダにコピー
  3. コンソールでコピーしたフォルダに移動して java -jar gitbucket.war
  4. http://ホスト名:8080/ でアクセスできれば成功
  5. 速攻初期IDである id:root / Pass:root でログインしてパスワードを変更

という流れで簡単に構築出来るのですが一つ問題がありました。

どうしてもコンソールが画面に残って鬱陶しい。

コンソールが残っているから動いているのが見えるのはいいと思うのですがうっかり閉じてしまったりして困ってました。

対策案1 vbsとタスクスケジューラを組み合わせる

初めは、vbsを使って見えなくしてタスクスケジューラで起動するのも考えたんですがこれでやると止めようが無くて止めるにはjavaのプロセスをkillすることに。これはよろしく無いと思ってボツ

対策案2 ApacheTomcatをつかってサービス化

ネット上でGitBucketの導入事例でよくあるApachTomcatを使ってサービス化ですが、なんか、凄いコマンドを打ちまくっててお手軽じゃないなぁ。と思ってボツ

決定案 winswを使ってサービス化する

実際に採用したのは、winswを使ってのサービス化です。

winswとは何か

winswとは任意のプログラムをサービス化してくれるツールです。下のサイトが詳しかったです。

www.moongift.jp

実際の流れ

参考にしたのは下記サイトです。

GitBucketをWindowsサービス化する · GitHub

やることをまとめると

  1. Java8がインストール(されていれば飛ばしてOK)
  2. gitbucket.warを適当なフォルダにコピー
  3. winswをgitbucktと同じフォルダにコピーしgitbuckt.exeにリネーム
  4. gitbucketのフォルダに起動オプションとプロセスの説明のxmlを書く
  5. コンソールでgitbucketのフォルダに移動して gitbucket.exe install (当然ながら管理者権限必要)これでサービス化完了
  6. http://ホスト名:指定したポート/ でアクセスできれば成功
  7. 速攻初期IDである id:root / Pass:root でログインしてパスワードを変更

4番のxmlは参考にしたサイトの物を丸パクリしたのでそちらを見てください。ポートと保存先のフォルダだけ変更して使っています。

<arguments>-Xrs -jar gitbucket.war --port=好きなポート番号--gitbucket.home=データのフォルダ</arguments>

注意点

winswのダウンロードは下記サイトからダウンロードする

github.com

サービス化した後、GitBucketの起動に失敗したりすることがあるがwindowsの起動と同時に立ち上がるので重い処理が同時に行われていたりすると失敗することがあるので起動の方式を自動(遅延開始)にしましょう。

自動(遅延)のやり方

  1. コントロールパネルを開いて サービス と検索すると出て来るローカルサービスの表示をクリック
  2. 開いたサービスの中に今回インストールしたgitbucketの名前を探して右クリックしてプロパティを開く
  3. 全般タブの中に、スタートアップの種類があるので初めは自動となっているのを自動(遅延開始)を選択する

この自動遅延というのは、システムの開始から2分後に自動的に立ち上がるようにするもので立ち上げ時の高負荷なときを避けるというものです。

次は、SourceTreeやpyCharmでのGitのつかいかたをまとめよう。