どうも、スポーツジム通いが板についてきたユニキャストの良心、箕輪(@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 レポート