プロジェクト

全般

プロフィール

GitBucket

はじめに

GitHubクローンの1つで、scalaで書かれてjavaで実行します。オープンソースで次のURLで公開されています。
https://github.com/takezoe/gitbucket

開発者のブログより

質問等(バグかな?も)は、まずは次のGitterチャットに寄せてくださいとのこと。

日本語でないとちょっと、という方はこちらに。

なお、GitHubのissuesには英語で登録をお願いしますとのこと(海外ユーザーも多い)。

インストール

CentOS 6/7用RPMのインストール

本ページで作成したCentOS 6/7用GitBucket RPMパッケージのインストール方法です。

新規インストール

# yum localinstall gitbucket-3.8-1.noarch.rpm
Loaded plugins: fastestmirror

Setting up Local Package Process
Examining gitbucket-3.8-1.noarch.rpm: gitbucket-3.8-1.noarch
Marking gitbucket-3.8-1.noarch.rpm to be installed
  :
Installed:
  gitbucket.noarch 0:3.8-1

Complete!
#

バージョンアップ

# yum localupdate gitbucket-3.8-1.el6.noarch.rpm
Loaded plugins: fastestmirror
Setting up Local Package Process
xamining gitbucket-3.8-1.noarch.rpm: gitbucket-3.8-1.noarch
Marking gitbucket-3.8-1.noarch.rpm as an update to gitbucket-3.7-1.noarch
  :
Updated:
  gitbucket.noarch 0:3.8-1

Complete!
#
GitBucket 3.13以前からGitBucket 4.0以降へアップデートするには

GitBucket 3.13(を含みそれ)以前からGitBucket 4.0(を含みそれ)以降へアップデートする際は、いったんGitBucket 3.14にアップデートし、それからGitBucket 4.0以降にアップデートしてください。

以下は、GitBucket 3.13から4.3にアップデートしようとしてエラーになった例です。

~$ sudo yum localupdate ./gitbucket-4.3-1.noarch.rpm
  :
トランザクションを実行しています
gitbucket 4.0 can only be upgrade from 3.14
エラー: %pre(gitbucket-4.3-1.noarch) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package gitbucket-4.3-1.noarch
エラー:   install: スクリプト %pre の実行に失敗しました (2)。gitbucket-4.3-1 を スキップします。
  Verifying               : gitbucket-4.3-1.noarch                          1/2
gitbucket-3.13-1.noarch was supposed to be removed but is not!
  Verifying               : gitbucket-3.13-1.noarch                         2/2

失敗:
  gitbucket.noarch 0:3.13-1               gitbucket.noarch 0:4.3-1
GitBucket 3.10で内蔵H2DBのバージョンを1.4.180から1.4.190に更新したことによるエラー

GitBucketを3.9から3.10.1にアップデートしてみたところ、Webブラウザからアクセスした際にH2DBのエラーが発生しました。

org.h2.jdbc.JdbcSQLException: テーブル "ACTIVITY" が見つかりません
Table "ACTIVITY" not found; SQL statement:
  :

この問題については、対策が2つ用意されています。

  1. マイグレートツールを使ってデータベース移行
  2. H2DB 1.4.180を内蔵したGitBucket 3.10.1

このH2DBの更新の理由は次のとおりですので、できる限り新しい版を使いたいところです。

データストアの信頼性向上のため、GitBucketが内部で使用しているH2データベースを最新版である1.4.190にバージョンアップしました。

そこで、マイグレートを実施してみることにします。

work$ git clone https://github.com/gitbucket/h2-migration.git
work$ cd h2-migration/
h2-migration$ vi migration.sh

  #!/bin/sh

- export GITBUCKET_HOME=~/.gitbucket
+ export GITBUCKET_HOME=/var/lib/gitbucket
  export H2_USER=sa
  export H2_PASSWORD=sa

ですが実行するとエラーに

h2-migration$ sudo ./migration.sh
mv: cannot stat `/var/lib/gitbucket/data.h2.db': そのようなファイルやディレクト リはありません
mv: cannot stat `/var/lib/gitbucket/data.trace.db': そのようなファイルやディレクトリはありません

うーん、これ以上の調査はとりやめ、2番目の方法を実施します。

設定ファイル

/etc/sysconfig/gitbucket を編集します。

  • ポート番号の設定(デフォルトは8080)
    # Server port
    GITBUCKET_PORT=8080
    
  • プレフィックス(URLのパス名)の設定(デフォルトは空)
    # URL Prefix
    GITBUCKET_PREFIX=gitbucket
    
  • ホスト名(URLのホスト名)の設定(デフォルトは動作させるマシンのFQDN)
    # Host name
    GITBUCKET_HOST=repo.example.com
    
  • JavaVMの起動時コマンドラインオプション
    # Other Java option
    GITBUCKET_JVM_OPTS="-Dmail.smtp.starttls.enable=true" 
    

CentOS 6/7用RPMの作成

GitBucketのリリースバイナリ(gitbucket.war)とcontribのRPMビルド用ファイルを集めてRPMパッケージを作成しました。
作業の過程はチケット #14 に記述しています。gitbucketをデーモンで単独実行するものでtomcat等のアプリケーションサーバーは使用しません。

warファイルをJavaVMで実行するプログラムなので、CentOS 6/7で動作します。起動スクリプト(サービス)は、CentOS 7の場合レガシー(systemdではなく)として動きます。

問題点

  • gitbucket 4.1~4.5のRPMパッケージは、gitbucket 4.xからのアップデートインストールが失敗します。
    RPMパッケージのアップデート時に、バージョン3系からアップデートする場合のバージョン制約のチェックが4系からのアップデートにも働いてしまったバグです。
    gitbucket 4.6のRPMパッケージで修正しました。

GitBucket 3.13以前から4.0以降へアップデートする際の注意点

GitBucket 3.13以前から4.0以降へアップデートする場合、いったんGitBucket 3.14にアップデートし、それから4.0以降へアップデートするようにしてください。

GitBucketの3.9(3.10 with h2.1.4.180)から3.10以降へアップデートする際の注意点

GitBucket 3.10以降は、内蔵するH2 databaseがバージョン1.4.180から1.4.190に変更になっています。
GitBucketの3.9(または3.10 with h2 1.4.180)で運用している環境に、3.10以降をアップデートするとデータベースが壊れます。

Ver. 4.17.0

H2 database migrationツール

過去のバージョン

  • gitbucket-4.15.0-1.noarch.rpm
  • gitbucket-4.14.1-2.noarch.rpm
  • gitbucket-4.13-1.noarch.rpm
  • gitbucket-4.12.1-1.noarch.rpm
  • gitbucket-4.12-1.noarch.rpm
  • gitbucket-4.11-1.noarch.rpm
  • gitbucket-4.10-1.noarch.rpm
  • gitbucket-4.9-1.noarch.rpm
  • gitbucket-4.8-1.noarch.rpm
  • gitbucket-4.7.1-1.noarch.rpm
  • gitbucket-4.6-1.noarch.rpm
  • gitbucket-4.5-1.noarch.rpm
  • gitbucket-4.4-1.noarch.rpm
  • gitbucket-4.3-1.noarch.rpm
  • gitbucket-4.2.1-1.noarch.rpm
  • gitbucket-4.1-1.noarch.rpm
  • gitbucket-3.13-1.noarch.rpm
  • gitbucket-3.12-1.noarch.rpm
  • gitbucket-3.10.1_h2.1.4.180-1.noarch.rpm
  • gitbucket-3.9-1.noarch.rpm
  • gitbucket-3.8-1.noarch.rpm
  • gitbucket-3.7-1.noarch.rpm
  • gitbucket-3.6-1.noarch.rpm
  • gitbucket-3.5-1.noarch.rpm
  • gitbucket-3.4-1.noarch.rpm
  • gitbucket-3.3-1.noarch.rpm
  • gitbucket-3.2-1.el6.noarch.rpm
  • gitbucket-3.1-1.el6.noarch.rpm
  • gitbucket-3.0-1.el6.noarch.rpm
  • gitbucket-2.8-1.el6.noarch.rpm

Ver. 2.7 でRPMパッケージを作る流れ

gitbucketリポジトリのReleasesページ から、次の2つをダウンロードします。

  • gitbucket.war
  • gitbucket-2.7.tar.gz

RPMビルド環境に、上述ダウンロードファイルから次のファイルを展開します。

  • gitbucket.war -> ~/rpm/SOURCES/
  • Souce codeの中のcontrib/gitbucket.conf -> ~/rpm/SOURCES/
  • Souce codeの中のcontrib/linux/redhat/gitbucket.init -> ~/rpm/SOURCES/
  • Souce codeの中のcontrib/linux/redhat/gitbucket.spec -> ~/rpm/SPECS/

~/rpm/SPECS/gitbucket.specを修正します(バージョン番号の修正)。

@@ -1,6 +1,6 @@
 Name:          gitbucket
 Summary:       GitHub clone written with Scala.
-Version:       2.6
+Version:       2.7
 Release:       1%{?dist}
 License:       Apache
 URL:           https://github.com/takezoe/gitbucket
@@ -60,6 +60,9 @@

~/rpm/SOURCES/gitbucket.confを修正します(バージョン番号の修正)。

 # GitBucket version to fetch when installing
-GITBUCKET_VERSION=2.1
+GITBUCKET_VERSION=2.7

RPMビルドを実行します。

~$ rpmbuild -ba rpm/SPECS/gitbucket.spec
  :
~$

成功すると、~/rpm/RPMS/noarch/gitbucket-2.7-1.el6.noarch.rpm が生成されます。

Ver. 2.6以前

Ver. 2.6

2014-11-24作成のVer.2.6のRPMパッケージです。起動スクリプトをgitbucketユーザーで実行する設定に変更してビルドしました。

  • attachment:gitbucket-2.6-1.el6.noarch.rpm
  • attachment:gitbucket-2.6-1.el6.src.rpm
公開されている設定でビルドしたRPMパッケージ(Ver.2.1)

root権限で実行されるGitBucketのRPM

  • attachment:"gitbucket-2.1-1.el6.noarch.rpm"

そのSPECファイル

  • attachment:"gitbucket.spec.2.1-1"
gitbucketユーザーで実行する設定に変更してビルドしたRPMパッケージ(Ver.2.4.1)

そのSPECファイル

serviceで制御するスクリプト

設定ファイル

設定

メモリ・CPU使用率の調整

Linuxマシン(CentOS 6 64bit版、OpenJDK 1.8.0.51)でGitBucketのwarファイルを実行したときのgitbucketプロセス(java)のメモリとCPUはtopコマンドで次のようになっています。

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6174 gitbucke  20   0 1444m 109m  13m S  1.0 11.0 141:31.36 java

仮想メモリサイズ(予約ページ)は約1.4GB、物理メモリ使用サイズは100MB、CPU使用率が1%弱ほどとなっています。

本記事へのコメント(中止)

本記事についてコメントがございましたら、次のリンクをクリックして記載をお願いいたします。

  • 注)本記事と関連のないと管理者が判断したコメントは削除させていただくことがあります。

コメント一覧

  • 匿名ユーザー さんが3年以上前に追加

    4.1-1から4.5-1へのアップデートをしようとしたところ以下のように失敗します。
    1. yum update gitbucket-4.5-1.noarch.rpm
      読み込んだプラグイン:fastestmirror, refresh-packagekit, security
      更新処理の設定をしています
      gitbucket-4.5-1.noarch.rpm を調べています: gitbucket-4.5-1.noarch
      次のリポジトリーへの更新として gitbucket-4.5-1.noarch.rpm を設定します: gitbucket-4.1-1.noarch
      Loading mirror speeds from cached hostfile * base: centos.usonyx.net * epel: epel.mirror.net.in * extras: ftp.iij.ad.jp * updates: centos.usonyx.net
      依存性の解決をしています
      --> トランザクションの確認を実行しています。
      ---> Package gitbucket.noarch 0:4.1-1 will be 更新
      ---> Package gitbucket.noarch 0:4.5-1 will be an update
      --> 依存性解決を終了しました。

    依存性を解決しました

    ========================================================================================================================================================================================================
    パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================================================================================================
    更新:
    gitbucket noarch 4.5-1 /gitbucket-4.5-1.noarch 45 M

    トランザクションの要約 ========================================================================================================================================================================================================
    アップグレード 1 パッケージ

    合計容量: 45 M
    これでいいですか? [y/N]y
    パッケージをダウンロードしています:
    rpm_check_debug を実行しています
    トランザクションのテストを実行しています
    トランザクションのテストを成功しました
    トランザクションを実行しています
    gitbucket 4.0 can only be upgrade from 3.14
    エラー: %pre(gitbucket-4.5-1.noarch) scriptlet failed, exit status 1
    Error in PREIN scriptlet in rpm package gitbucket-4.5-1.noarch
    エラー: install: スクリプト %pre の実行に失敗しました (2)。gitbucket-4.5-1 をスキップします。
    gitbucket-4.1-1.noarch was supposed to be removed but is not!
    Verifying : gitbucket-4.1-1.noarch 1/2
    Verifying : gitbucket-4.5-1.noarch 2/2

    失敗:
    gitbucket.noarch 0:4.1-1 gitbucket.noarch 0:4.5-1

    完了しました!

    • 高橋 徹 さんが3年以上前に追加

      4.1~4.5のRPMに問題がありました。4.6で修正しました。コメントありがとうございます。