LoginSignup
16

More than 5 years have passed since last update.

Ubuntu 16.04 Redmine GitLab JenkinsのOauth認証統合

Posted at

この記事は2016/8/21時点での情報で作成しています。

環境

VirtualBox
ubuntu-ja-16.04-desktop-amd64.iso

空っぽの環境に構築してみたいと思います!

準備

GuestAdditionsの設定

  1. CDイメージの挿入
    SnapCrab_Ubuntu1604SCM [実行中] - Oracle VM VirtualBox_2016-8-21_19-53-33_No-00 (2).png

  2. インストール実行確認で「実行する」をクリック

  3. 認証でパスワードを入力して「認証する」をクリック

  4. インストール完了すると
    「Press Return to close this window...」と表示されるので、Enterキーで終了

  5. 設定を反映させるためOSを再起動します。

  6. 任意の画面サイズに伸長できることを確認して、クリップボードの共有をしておきます。

必要ツール

事前準備としてGitとVimを入れておきます。

$ sudo apt-get install git vim

ホームに作業用ディレクトリを用意しておきます

$ cd
$ mkdir workspace

Redmine

ダウンロード

Ubuntu側でFirefoxを開き、次のURLを開きます。
Bitnami Redmine Installers
Linux用の[Redmine 3.3.0-1 (64-bit) ]をダウンロードします。
Downloadボタンをクリックすると次のウィンドウが出てきますが、
登録などはせずに左下の「No thanks, just take me to the download」をクリックします。
SnapCrab_NoName_2016-8-21_20-10-57_No-00.png

ダウンロードしたものは作業用ディレクトリへ移動して、実行します。

$ mv ダウンロード/bitnami-redmine-3.3.0-1-linux-x64-installer.run ~/workspace
$ cd workspace
// ファイルに実行権限を付与します。
$ sudo chmod 755 bitnami-redmine-3.3.0-1-linux-x64-installer.run 
// 一般ユーザでインストールもできますが、後続のGitLabも管理者で実行するのでRedmineも管理者で実行します。
$ sudo ./bitnami-redmine-3.3.0-1-linux-x64-installer.run

インストール

日本語設定にして、次に進めていきます。
特に設定の変更は必要ありません。
「管理者アカウントの作成」まで進めたら、任意の値を再設定しておきます。
ここで設定した初期パスワードは初回ログイン時に再度設定が必要なので、仮のモノを入力しておいてください。

インストールが完了したら、ブラウザで
http://localhost
へアクセスし、Redmineが起動していることを確認します。

一次的にポートを変更

後続のGitLabでも80のポートを利用して初期インストールが実行されることにより競合が発生します。
ManagerのApache Web ServerのConfigureからポートを変更します。
デフォルト:80
一次的設定:8080
念のためブラウザで
http://localhost:8080
へアクセスし、Redmineが起動していることを確認します。

また、Redmineの起動が確認できたら、ManagerでStop Allですべて止めておきましょう。

自動起動設定

サービス化する

$ sudo cp $INSTALL_DIR/ctlscript.sh /etc/init.d/bitnami-redmine
$ sudo vi /etc/init.d/bitnami-redmine
(ファイルの先頭に下のような記述を追加する)
$ sudo chkconfig --add /etc/init.d/bitnami-redmine

$ sudo apt-get install sysv-rc-conf

/etc/init.d/bitnami-redmineの先頭に追加する記述

### BEGIN INIT INFO
# Provides:          BitNami Redmine
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

参考:http://qiita.com/tacchang001/items/ced3c5f892b406b50754

GitLab

インストール

GitLab公式サイト
Ubuntu16.04向けインストールガイドを参考に進めます。

関連パッケージのインストール

$ sudo apt-get install curl openssh-server ca-certificates postfix

SnapCrab_NoName_2016-8-21_20-51-2_No-00.png
途中で設定画面が出ますが、「設定なし」で続行します。

GitLabパッケージのリポジトリを登録して、インストールを実行

$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
$ sudo apt-get install gitlab-ce
$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl restart

(8/20時点で8.10.7が最新)

http://localhost
へアクセスして動作を確認します。

ただし、restartの直後だと次のような画面となる場合があります。
起動途中なので、しばらくしてから再度アクセスしてみます。
もしくは他のプロセスで同じポートを利用している場合にも発生します。その時は他のプロセス(RedmineやJenkins)を停止すると動作することがあります。
SnapCrab_NoName_2016-8-21_23-2-1_No-00.png

正常にアクセスできると初回はパスワードの設定画面となります。
任意のパスワードを設定します。

設定後、ログイン画面になるので
Username:root
Password:任意のパスワード
でログインしてみます。

ログインできればインストール完了です。

おまけ

  • パッケージインストールできる種類を確認する場合
$ sudo apt-cache policy gitlab-ce
  • 古いパッケージを指定する場合
$ sudo apt-get install gitlab-ce=8.7.0-ce.0

日本語化

https://github.com/ksoichiro/gitlab-i18n-patch
日本語化パッチをGitHubからクローン

$ git clone https://github.com/ksoichiro/gitlab-i18n-patch.git
$ cd /opt/gitlab/embedded/service/gitlab-rails
$  sudo patch -p1 < ~/workspace/gitlab-i18n-patch/patches/v8.10.5/app_ja.patch 

スーパーユーザで実施します。

$ sudo su -
# cd /opt/gitlab/embedded/service/gitlab-rails
# rm -rf public/assets
# export PATH=/opt/gitlab/embedded/bin:$PATH
# bundle exec rake assets:precompile RAILS_ENV=production
# exit
$ sudo gitlab-ctl reconfigure

ポートとサブディレクトリの設定

sudo vim /etc/gitlab/gitlab.rb

external_url 'http://XXXX-VirtualBox'

external_url 'http://localhost/gitlab/'
# nginx['listen_port'] = nil

nginx['listen_port'] = 8000

これでGitLabへのアクセスは
http://localhost:8000/gitlab/
に変更されました。

この時点でGitLabとRedmineでのポートの競合は解消されたため、同時に動かすことができるようになります。

Jenkinsインストール

インストールの前に、GitLabとRedmineは停止させておきます。
※ここで停止させてなかったためにハマりました。

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins

正常に完了するとJenkinsにアクセス可能になります。
http://localhost:8080/

初回起動時にパスコードをきかれます
画面の案内通り、次のファイルを開き、パスコードをコピペします。
20160824_102634_No-00_NoName.gif

$ sudo less /var/lib/jenkins/secrets/initialAdminPassword

20160824_110849_No-00_NoName.png

20160824_110931_No-00_NoName.png

Java

http://qiita.com/minecraft/items/3ca7e9897fa8ec7099ae
sudo add-apt-repository ppa:webupd8team/java && sudo apt-get update && sudo apt-get install oracle-jdk7-installer

ポートとサブディレクトリの設定

Jenkinsのデフォルトポートである8080はGitLabで利用しているRackのポートと競合しているため、
JenkinsとGitLabを同時に立ち上げることができませんでした。

次のファイルを開き、編集します。

$ sudo vim /etc/default/jenkins

ポートを変更します。

HTTP_PORT=8080
↓
HTTP_PORT=8084

--prefix=$PREFIXを追加します。

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT"
↓
JENKINS_ARGS="--prefix=$PREFIX --webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT"

Jenkinsを再起動して、接続確認します。

$ sudo service jenkins restart

URLのサブディレクトリ化

# /opt/redmine-3.3.0-1/apache2/conf# 
# vim httpd.conf

一番下の行に次を追加

<IfModule mod_proxy.c>
  ProxyRequests off
  ProxyPass /gitlab http://127.0.0.1:8000/gitlab
  ProxyPassReverse /gitlab http://127.0.0.1:8000/gitlab
  ProxyPass /assets http://127.0.0.1:8000/gitlab/assets
  ProxyPassReverse /assets http://127.0.0.1:8000/gitlab

  ProxyPass /jenkins http://127.0.0.1:8084/jenkins
  ProxyPassReverse /jenkins http://127.0.0.1:8084/jenkins
  ProxyPass /assets http://127.0.0.1:8084/jenkins/assets
  ProxyPassReverse /assets http://127.0.0.1:8084/jenkins

</IfModule>

Redmineの再起動して次へアクセス

http://localhost/gitlab/
http://localhost:8000/gitlab/

http://localhost/jenkins/
http://localhost:8084/jenkins/

Jenkins

http://beniyama.hatenablog.jp/entry/2014/05/28/000331
http://d.hatena.ne.jp/hiranasu/20110507/1304781709
redmine-oauth-plugin

Oauth認証統合

Redmine設定

RedmineのアカウントでGitLabにログインする設定(OAuth認証)

$ sudo su -
# cd /opt/redmine-3.3.0-1/
# ./use_redmine
# cd apps/redmine/htdocs/plugins/
# git clone https://github.com/suer/redmine_oauth_provider.git
# bundle install --no-deployment
# bundle update
# bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Redmine ManagerのRestart Allで再起動します。

adminでログインして次のURLを開きます。
http://localhost/oauth_clients/

Redmine・Gitlab・Jenkins のログインパスワードの管理が大変になったので OAuth 化した

GitLab設定

RedmineのアカウントでGitLabにログインする設定(OAuth認証)

管理者権限で実行するためにrootユーザに切り替える

$ sudo su -

一時的にパスを通す

# export PATH=$PATH:/opt/gitlab/embedded/bin

ライブラリをインストール

# gem install omniauth-redmine

/opt/gitlab/embedded/service/gitlab-rails/Gemfileのに次のように追記する

...
gem 'rack-oauth2', '~> 1.2.1'
gem "omniauth-redmine"
...
bundle install
bundle exec rake assets:precompile RAILS_ENV=production

/opt/gitlab/embedded/service/gitlab-rails/config/initializers/omniauth.rb

#OmniAuth.config.full_host = Settings.gitlab['base_url']
OmniAuth.config.full_host = "http://localhost/gitlab"

Redmineアカウントでのクローンとプッシュ

/opt/gitlab/embedded/service/gitlab-rails/config/initializers/devise.rbを開き、
次のようにconfig.omniauthの行を追加します。
これを追加することで、プッシュするときの認証情報を統合することになります。
(直前までの情報ではログインはできてもプッシュできませんでした。。。ココでかなりハマった。)

...
  # ==> ORM configuration
  # Load and configure the ORM. Supports :active_record (default) and
  # :mongoid (bson_ext recommended) by default. Other ORMs may be
  # available as additional gems.
  require 'devise/orm/active_record'

  config.omniauth :redmine, "PASTE YOUR CONSUMER KEY FROM REDMINE HERE", "PASTE YOUR CONSUMER SECRET FROM REDMINE HERE", :redmine_base_url => "http://redmine_url.com/"
  # ==> Configuration for any authentication mechanism
  # Configure which keys are used when authenticating a user. The default is
...

Jenkins設定

2016年になっても、これさえ入れておけば大丈夫。Jenkins Plugin Must Install 16選!!より
Redmine-oauth-pluginをダウンロード

管理ープラグイン管理-高度な設定ープラグインのアップロード
でダウンロードしたhpiファイルを指定します。

ubuntu 14.04にOracleJDK7(JAVA)をインストールする
Ubuntu インストールしたらやること:Oracle Java JDK & JRE をインストールする(JDK8)

RedmineとGitLabの連携

RedmineからGitLabが作成したリポジトリを直接参照させるために権限を変更します。

$ sudo chmod -R a+r /var/opt/gitlab/git-data
$ sudo chmod -R a+x /var/opt/gitlab/git-data

http://l-light-note.hatenablog.com/entry/2015/09/16/190651
http://qiita.com/sakatukitukasa/items/b00b9d9ce5412ac315af
http://d.hatena.ne.jp/toritori0318/20140620/1403287430

GitLabアップデート

(2016/8/31時点)
記事作成の間にGitLabがアップデートされていたので
更新処理での注意点も合わせて記載します。

次のコマンドでアップデートを実行

$ sudo apt-get install gitlab-ce

すると次のエラーが発生しました。

Running handlers:
Running handlers complete
Chef Client failed. 5 resources updated in 16 seconds
dpkg: パッケージ gitlab-ce の処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:
 gitlab-ce

次の2つのサイトを参考にして解決できました
http://engetu21.hatenablog.com/entry/2014/12/06/004525
http://ikkuntech.blogspot.jp/2012/03/apt-get.html

ファイルを削除して再度実行して成功しました。

$ sudo rm /var/lib/dpkg/info/gitlab-ce.p* 
$ sudo dpkg --configure gitlab-ce

更新完了後にはRedmineによる認証と日本語化を再度実施します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16