どうも、スポーツジム通いが板についてきたユニキャストの良心、箕輪(@y_minowa)です。弊社では、プロジェクトに関するソースコードやドキュメントすべてを、基本的にGitで管理しています。GitLabはGithubライクなgitのフロントエンドです。粗もある気がしますが、開発も盛んで、期待しています。
最近GitLabが4.0にバージョンアップしていたことを知り(現在は4.1になっていますね。)、
project-A / src
project-A / doc
のように、プロジェクトをネームスペースで区切れることがわかったので、わさっとアップデートすることにしました。(いづれ名前が衝突するのではないかと心配していたので。。。)
参考
https://github.com/gitlabhq/gitlabhq/wiki/From-3.1-to-4.0
アップグレード時の弊社環境
gitolite v3.2
GitLabの管理ユーザ: gitlab
Gitoliteの管理ユーザ: gitolite
Python 2.7.3
1. 現在のシステムをバックアップ
既存Gitlabのディレクトリごと固めました。あと、忘れてヒヤッとしましたが、DBのバックアップは必須ですね。
tar zcvf gitlab-20130123.tar.gz gitlab
2. ソースコードを取得
リポジトリからpullして、チェックアウト方式をとるようです。
[root@redmine gitlab]# sudo -u gitlab -H git fetch [root@redmine gitlab]# sudo -u gitlab -H git branch * stable [root@redmine gitlab]# sudo -u gitlab -H git branch -a * stable remotes/origin/3-1-stable remotes/origin/4-0-stable remotes/origin/4-1-stable remotes/origin/HEAD -> origin/master remotes/origin/api_branch remotes/origin/master remotes/origin/stable [root@redmine gitlab]# sudo -u gitlab -H git checkout Gemfile.lock [root@redmine gitlab]# sudo -u gitlab -H git checkout 4-0-stable
3. Gitlabユーザに移動し、セットアップ
[root@redmine gitlab]# su - gitlab [gitlab@redmine gitlab]$ bundle exec rake db:migrate RAILS_ENV=production [gitlab@redmine gitlab]$ bundle exec rake gitlab:enable_namespaces RAILS_ENV=production [root@redmine gitlab]# chmod -R ug+rwXs /home/gitolite/repositories/ [root@redmine gitlab]# cp ./lib/hooks/post-receive /home/gitolite/.gitolite/hooks/common/post-receive [root@redmine gitlab]# chown gitolite:gitolite /home/gitolite/.gitolite/hooks/common/post-receive
フックスクリプトのリンクを張るスクリプトがありましたが、弊社環境では動きませんでした。ここがダメでもうまく行ったので、とりあえず放置します(笑)
[root@redmine gitlab]# sudo -u gitlab -H vim lib/support/rewrite-hooks.sh #!/bin/bash #src="/home/git/repositories" src="/home/gitolite/repositories" for dir in `ls "$src/"` do if [ -d "$src/$dir" ]; then if [ "$dir" = "gitolite-admin.git" ] then continue fi project_hook="$src/$dir/hooks/post-receive" # gitolite_hook="/home/git/.gitolite/hooks/common/post-receive" gitolite_hook="/home/gitolite/.gitolite/hooks/common/post-receive" ln -s -f $gitolite_hook $project_hook fi done
[root@redmine gitlab]# sudo -u gitolite -H lib/support/rewrite-hooks.sh ln: `/home/gitolite/.gitolite/hooks/common/post-receive' へのシンボリックリンク `/home/gitolite/repositories/xxx/hooks/post-receive' を作成します: そのようなファイルやディレクトリはありません ...以下略 ※ ここは飛ばす
4. Gitlab設定ファイルの更新
微妙に設定ファイルの項目が変わったようなので、旧ファイルのバックアップを取ってから更新します。
# backup old one
sudo -u gitlab -H cp config/gitlab.yml config/gitlab.yml.old
# copy new one
sudo -u gitlab -H cp config/gitlab.yml.example config/gitlab.yml
# edit it
sudo -u gitlab -H vim config/gitlab.yml
# ==========================
## GitLab settings
gitlab:
## Web server settings
host: gitlab.hogehoge.co.jp
port: 80
https: false
## Email settings
# Email address used in the "From" field in mails sent by GitLab
email_from: gitlab@hogehoge.co.jp
## Project settings
default_projects_limit: 10
## Gravatar
gravatar:
enabled: true # Use user avatar images from Gravatar.com (default: true)
# plain_url: "http://..." # default: http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
# ssl_url: "https://..." # default: https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm
#
# 2. Auth settings
# ==========================
## LDAP settings
ldap:
enabled: false
host: '_your_ldap_server'
base: '_the_base_where_you_search_for_users'
port: 636
uid: 'sAMAccountName'
method: 'ssl' # "ssl" or "plain"
bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
password: '_the_password_of_the_bind_user'
## Omniauth settings
omniauth:
# Enable ability for users
# Allow logging in via Twitter, Google, etc. using Omniauth providers
enabled: false
# CAUTION!
# This allows users to login without having a user account first (default: false)
# User accounts will be created automatically when authentication was successful.
allow_single_sign_on: false
# Locks down those users until they have been cleared by the admin (default: true)
block_auto_created_users: true
## Auth providers
# Uncomment the lines and fill in the data of the auth provider you want to use
# If your favorite auth provider is not listed you can user others:
# see https://github.com/gitlabhq/gitlabhq/wiki/Using-Custom-Omniauth-Providers
providers:
# - { name: 'google_oauth2', app_id: 'YOUR APP ID',
# app_secret: 'YOUR APP SECRET',
# args: { access_type: 'offline', approval_prompt: '' } }
# - { name: 'twitter', app_id: 'YOUR APP ID',
# app_secret: 'YOUR APP SECRET'}
# - { name: 'github', app_id: 'YOUR APP ID',
# app_secret: 'YOUR APP SECRET' }
#
# 3. Advanced settings
# ==========================
## Backup settings
backup:
path: "tmp/backups" # Relative paths are relative to Rails.root (default: tmp/backups/)
# keep_time: 604800 # default: 0 (forever) (in seconds)
## Gitolite settings
gitolite:
#admin_uri: gitolite@localhost:gitolite-admin
admin_uri: gitolite@hogehoge.co.jp:gitolite-admin
# repos_path must not be a symlink
repos_path: /home/gitolite/repositories/
hooks_path: /home/gitolite/.gitolite/hooks/
admin_key: gitlab
upload_pack: true
receive_pack: true
#ssh_user: git
#ssh_host: localhost
ssh_user: gitolite
ssh_host: hogehoge.co.jp
# ssh_port: 22
# config_file: gitolite.conf
## Git settings
# CAUTION!
# Use the default values unless you really know what you are doing
git:
bin_path: /usr/bin/git
# Max size of git object like commit, in bytes
# This value can be increased if you have a very large commits
max_size: 5242880 # 5.megabytes
# Git timeout to read commit, in seconds
timeout: 10
5. Unicornの再起動
プロセスをkillした後に、以下のコマンドで再起動
[gitlab@redmine gitlab]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
以上の手順でうまくいきました。
トラブルシューティング
プロジェクトのリポジトリブラウザが表示されない
ActionView::Template::Error (EPIPE):
9: .file_content.code
10: - unless blob.empty?
11: %div{class: user_color_scheme_class}
12: = raw blob.colorize(formatter: :gitlab)
13: - else
14: %p.nothing_here_message Empty file
app/models/tree.rb:5:in `colorize'
app/views/tree/blob/_text.html.haml:12:in `_app_views_tree_blob__text_html_haml___4144804886988964822_279419060'
app/views/tree/_blob.html.haml:9:in `_app_views_tree__blob_html_haml__2480152744557501861_279113160'
app/views/tree/_tree.html.haml:15:in `_app_views_tree__tree_html_haml__4221569535063967057_278722960'
app/views/tree/show.js.haml:3:in `_app_views_tree_show_js_haml___2542176536991507540_278645060'
[gitlab@redmine gitlab]$ python --version
Python 2.7.
[gitlab@redmine gitlab]$ python2
Python 2.4.3 (#1, Jan 9 2013, 06:47:03)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
-rwxr-xr-x 2 root root 8304 1月 9 20:48 python
lrwxrwxrwx 1 root root 6 1月 17 08:10 python2 -> python
-rwxr-xr-x 2 root root 8304 1月 9 20:48 python2.4
lrwxrwxrwx 1 root root 30 12月 10 20:52 python2.7 -> /opt/python2.7.3/bin/python2.7
lrwxrwxrwx 1 root root 37 12月 10 20:52 python2.7-config -> /opt/python2.7.3/bin/python2.7-config
-rwxr-xr-x 1 root root 8304 6月 18 2012 python_bak
ん、pythonがいっぱいある(笑)
[root@redmine gitlab]# rm /usr/bin/python2
rm: remove シンボリックリンク `/usr/bin/python2'? y
[root@redmine gitlab]# ln -s /usr/bin/python2.7 /usr/bin/python2
[root@redmine gitlab]# python2 -version
Unknown option: -e
Unknown option: -r
Unknown option: -o
Unknown option: -n
Unknown option: -e
usage: python2 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.
[root@redmine gitlab]# python2 --version
Python 2.7.3
んで、直りました。肝は、
$python2 --version
したときに、Versionが2.5+(But not 3.*)であることみたいです。
これで取り敢えず大丈夫そうです。今後の課題は、unicornの起動スクリプトの作成ですね。
Error 500 while trying to see source file ・ Issue #1774 ・ gitlabhq/gitlabhq ・ GitHub
Pygments Error ・ Issue #2214 ・ gitlabhq/gitlabhq ・ GitHub
GitLabから、リポジトリの作成・削除ができない。
Gitlab::Gitolite::AccessDenied (unable to clone gitolite-admin repo): lib/gitlab/backend/gitolite_config.rb:69:in `rescue in apply' lib/gitlab/backend/gitolite_config.rb:24:in `apply' lib/gitlab/backend/gitolite_config.rb:94:in `destroy_project!' lib/gitlab/backend/gitolite.rb:37:in `remove_repository' app/roles/repository.rb:112:in `destroy_repository' app/observers/project_observer.rb:13:in `after_destroy' app/controllers/projects_controller.rb:105:in `destroy' Rendered errors/gitolite.html.haml within layouts/errors (0.6ms) Rendered layouts/_head.html.haml (3.0ms) Rendered layouts/_flash.html.haml (0.5ms) Rendered layouts/_search.html.haml (28.3ms) Rendered layouts/_init_auto_complete.html.haml (14.9ms) Rendered layouts/_head_panel.html.haml (54.4ms) Completed 500 Internal Server Error in 747ms (Views: 58.7ms | ActiveRecord: 17.8ms) Started GET "/assets/favicon-4b751da746de7855d7eb8123072388ed.ico" for 203.143.100.225 at 2013-01-24 18:46:11 +0900 Served asset /favicon-4b751da746de7855d7eb8123072388ed.ico - 200 OK (0ms)
これに関しては、設定ファイルのadmin_uriを修正することで解決しました。
admin_uri: gitolite@localhost:gitolite-admin
投稿者紹介
-
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。
最近のエントリ
レポート2019.10.28ユニキャストレストランを開催しました🍳
レポート2019.08.29社内研修ワークショップ~マシュマロ・チャレンジ~
レポート2019.08.06Computex/InnoVEX 出展者・通訳として参加してきました。
レポート2018.06.12Computex 2018 レポート