/alminium

Redmine、DVCS(Git/VMercurial)、Backlogs、コードレビュープラグインなど、開発に必要な環境を簡単にセットアップします。

Primary LanguageShell

ALMinium

Gitポケットリファレンスで紹介されました。ALMiniumによるGitのリポジトリ運用方法が書かれています。ALMiniumでGitを使いたい人にお勧めです!!

これはなに?

ALMiniumとは、ALM(Application Lifecycle Management)とRedmineの合金(..nium)という意味から名づけられました。

Redmineを利用してALMを実現するためのツールです。アルミニウムの持つ軽量性と伝導性を備えています。軽量性は、簡単に使えること、熱伝導性は他のプロジェクトへ徐々に広げていける仕組みです。

特徴

ALMiniumは、次のような特徴を持っています。

  • 簡単なインストーラ
  • Redmine,Subversion,Git,Mercurialなどプロジェクトマネージメントに必要なツールを一通りインストールしてくれます。ツール間のアカウント・アクセス権の連携や、チェンジセット・チケットの連携も自動で行ってくれます。
  • アジャイル開発や、CIに便利な各種プラグインもインストールしてくれます。
  • アジャイル開発をサポート
  • Backlogsプラグインによりアジャイル開発をサポートします。スプリント、ストーリー、タスクの管理からバーンダウンチャートによる進捗の確認、ベロシティの計測にも対応しています。
  • Hudson/Jenkinsと連携するプラグインが導入ずみであり、CIを簡単に行うことができます。
  • 品質管理
  • ALMminium固有の機能ではありませんが、バグの管理とソースコードの変更履歴を対応づけることができ、変更をトレースできます。
  • コードレビュー支援機能があります。コードがコミットされたら自動的にレビュー対象にすることができ、レビューされていないコミットを一目で確認することができます。また、指摘事項が修正されたかどうかの管理も行えるので、レビューしたけど、修正漏れがあって意味がないということもなくなります。
  • アジャイルでない開発でも使えます:)
  • 使いやすさの追求
  • ブラウザのクラッシュ時に嬉しい書きかけのチケットの自動復元機能やクリップボードからのスクリーンショットの添付など無償とはいえ、使いやすさに妥協を許しません。
  • RedcarpetによるGitHub互換のMarkdown表記をWiki/チケットに標準で利用することができます。Redmine標準のTextileに格段に分り易いです。Wikiエンジンを切り換えることによりreStructuredText(Sphinxで利用しているフォーマット)も利用可能です。
  • Git,Mercurial,Subversionのリポジトリ作成がプロジェクト作成画面から行えます。リポジトリサーバの小難しい設定も不要で、勝手にやってくれます。
  • MS Project,Excelのインポートなど、既存ツールとの連携を行うことができます。
  • マルチプロジェクト対応
  • 構築したALMiniumサーバ上で複数のプロジェクトを管理することができます。ALMinium(Redmin)のカスタマイズやプラグインによる拡張は全てのプロジェクトが恩恵を受けることができます。
  • 高い品質
  • 自分でRedmineを構築すると、バージョンの不整合やプラグインの競合などで正しく動作しなくハマル場合があります。ALMiniumは検証済みなので、安心して使えます。
  • ALMiniumの開発者はRedmine Backlogs, Redmine SCM Creatorなどにコントリビュータとして活動し、また、幾つかのプラグインはバグ修正を行ったバージョンをGitHubで管理して利用しています。

同梱するプラグイン

ALMiniumは、次のRedmineプラグインを同梱しています。

プラグイン 説明
Backlogs スクラム開発のサポート
Hudson Plugin Jenkins/Hudsonとの連携
Code Review コードレビュー支援
Redcarpet Wiki Formatter GitHubのMarkdown Wikiフォーマットを利用
MSProjects MS Projectのファイルをインポート
XLS export Excelでチケットを出力
Git Branch Hook Gitのブランチでの作業をチケットに連動させます

その他のプラグインついては、プラグインリストファイルをご覧ください。

動作環境

  • RHEL6 x64互換環境(OEL,SL,CentOSなど含む)
  • Ubuntu 12.04(x64)
  • Amazon AMI Linux 2011.09

32ビット版OSはサポートしていません。64ビット版をお使いください。下記のOSはサポートしていませんが、対応コードらしきものはあるのでがんばれば動作するかもしれません。

  • Debian GNU/Linux 6.0
  • Mac OSX

使い方

下記の通り実行すれば、ALMiniumのインストーラを実行できます。

 # yum install git 
もしくは
 # apt-get install git

 # git clone https://github.com/alminium/alminium.git
 # cd alminium
 # bash ./smelt

たったのこれだけで、チケットシステム、バージョン管理システム、Redmineの様々なプラグインのインストール、連携設定を行うことができます。なお、smeltは、金属を溶解して製錬するという意味で、様々なソフトウェア/プラグインを混合してALMiniumを作成するという意味からとっています。 なお、Ubuntuの場合、インストール途中にMySQLのパスワードの設定を聞かれますが、空欄にしてください。

インストールが終了すると、http://localhost/ (SSLを有効にした場合https://localhost/ )にWebブラウザで接続するとチケットシステムにアクセスできます。管理者権限でログインすると、設定やプロジェクトの作成を行うことができます。管理者情報は下記の通りです。

プロキシがある場合

プロキシ環境下で利用する場合は、次のようにしてプロキシを設定してから上記の設定を行なってください。

$ http_proxy=http://okamototk:password/proxyhost.com:8080/
$ https_proxy=http://okamototk:password/proxyhost.com:8080/

デフォルトの管理者情報

  • ユーザ名: admin
  • パスワード: admin

リポジトリの作成

リポジトリの作成は、プロジェクトの作成画面から可能です。リポジトリパスは、下記の通りです。

インストール時にSSLを無効にした場合は、httpを利用してください。gitをhttpsで利用する場合、不正な証明書を利用しているというエラーが発生しているので、クライアント側で下記のコマンドを実行し、証明書の検証を無効にしてください。

$ git config --global http.sslverify false

管理者・開発者のロールのユーザをリポジトリに対応するRedmineプロジェクトに追加することにより、コミット権を与えることができます。例えば、testrepoという名前のリポジトリに対して、testrepoという名前のRedmineプロジェクトを作成します。アクセスさせたいユーザを「開発者」ロールでtestrepoプロジェクトに追加すれば、アクセス権を付与することができます。

FAQ

Q: 作成したリポジトリにアクセスできません。

ALMiniumはRedmineのアカウントとバージョン管理システムのアカウントを連携させています。アクセスさせたいユーザをRedmineプロジェクトに追加してください。

Q: Redmineのリポジトリブラウザでリポジトリが参照できません

リポジトリが空場合、リポジトリブラウザでリポジトリを参照できません。リポジトリブラウザでに何かコミットしてみてください。例えば、Gitの場合、

$ git clone http://ユーザ名@ホスト名/git/リポジトリ名
$ cd リポジトリ名
$ touch dummy.txt
$ git add dummy.txt
$ git commit -a -m "add dummy file." 
$ git push

とするとリポジトリが見れるようになると思います。(SSLを有効にしている場合はhttpをhttpsとすること)

Q: SSLを有効にしてインストールしたのですが、やっぱり無効にしたいのですが。

mod_sslのパッケージをアンインストールするとHTTPのみのアクセスになります。

また、Apacheのredmineの設定(/etc/httpd/conf.d/redmine or /etc/apache/sites-availabled/redmine)のRewriteEngineをOffにするとhttpsへのリダイレクトを無効にできます。 RewriteEngineの設定はmod_sslの有無を判定しているので、mod_sslパッケージをアンインストールした場合設定の必要はありません。

Q: リポジトリが誰からも見れてしまうのですが。認証制限をかけれますか?

Redmineプロジェクトを公開にした場合、全てのユーザからのリポジトリの閲覧を許可します。Redmineプロジェクトを非公開にしてください。

Q: Redmineプロジェクトを公開にしたままリポジトリに認証制限をかけたいのですが。

Redmineを公開にした場合、リポジトリの認証に制限をかけたとしてもRedmineのリポジトリブラウザからリポジトリが見れてしまいます。 これでは意味ありませんよね?

Redmineの管理画面の「ロールと権限」から、「Non Member」と「Anonymous」のロールから「リポジトリの閲覧」を削除してください。 するとあら不思議、リポジトリのアクセスも受付なくなります。このようにALMiniumのリポジトリアクセス制御はRedmineと高度に連携しています

Q: 最新のMercurialでリポジトリにアクセスできません

ALMiniumは俗に言うオレオレ証明書を利用してHTTPSを実現しています。Mercurialの最近のバージョンでは、SSL証明書の検証を行うようになっており、HTTPSでの接続にエラーになります。

$ hg clone https://192.168.10.224/hg/hgtest
abort: error: _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:
certificate verify failed

そのような場合は、cloneやpushに--insecureオプションを付けることにより、証明書の検証を無効にし、正しくMercurialリポジトリへアクセスできるようになります。

$ hg clone --insecure https://192.168.10.224/hg/hgtest

Q: Gitでリモートブランチの上書き(git push -f)ができません

ALMiniumはセキュリティを考えてサーバ上のブランチの上書きを禁止しています。 上書きを有効にするには、/var/opt/alminium/git/リポジトリ名 に移動し、下記のコマンドによりブランチの上書きを有効にしてください。

# git config receive.denynonfastforwards false

ただし上記の設定を行うと、過去のコミットが削除されたり、ブランチの内容を消去されることがあるのでご注意ください。

Q: Gitでリモートブランチの削除ができません

上記と同じ理由でリモートブランチの削除も禁止してます。ブランチの削除きを有効にするには、/var/opt/alminium/git/リポジトリ名 に移動し、下記のコマンドによりブランチの削除を有効にしてください。

# git config receive.denydeletes false

ただし上記の設定を行うとブランチが削除される可能性があるので、ご注意ください。

Q: 既にインストールしたALMiniumのバージョンアップはできますか?

できます。詳細は、下記の記事をお読みください。

Q: ALMiniumのライセンスは何ですか?

ALMiniumは、Redmine,Git,Jenkinsを初め様々なオープンソースソース ソフトウェアをセットアップしてインストールするツールです。 インストールしたソフトウェアについては、個々のライセンスに 従います。

ALMiniumが用意するインストーラ及びスクリプトは、修正BSDライセンスで 提供します。修正BSDライセンスについては、下記のURLをご覧ください。