GitLabのRubyGemとGitLabのセルフホスティング手順


GitLabは企業などでプライベートなリポジトリをセルフホスティングする際にすごく便利なOSSです。
実際に仕事で使っていますが、GitHub程ではないにせよ十分に使いやすく、着実に進歩しているツールです。

今回は、GitLab APIをWrapするRubyGem『NARKOZ/gitlab: Ruby wrapper and CLI for GitLab REST API』と、
Digital Ocean」やAWSでボタンひとつでホスティングする手順の紹介です!


🏈 GitLabの使い方

GitLabの使い方は次の2とおりがあります。

🚕 Digital OceanでGitLabを1ボタンで立ち上げ

Digital Ocean」を使うとGitLabを1ボタンでホスティングできます。
今回はテストだったのでこちらを試してみましたが、本当に簡単です! 手順はこちら:

How To Use the GitLab One-Click Install Image to Manage Git Repositories

🎂 AWSでGitLabを1ボタンで立ち上げ

AWSをご希望の場合はこちらからお試しください。(ごめんなさい、僕はDOをつかったのでこちらは試していないです)

GitLab CE AWS AMI | GitLab

昔はすごく苦しみながら手順を作っていましたが、クラウドはこういった部分も便利にするんだなと実感しました。

🍣 Gemのインストール

Gemfileに以下を追加して、bundle installを実行してください。

# Wrapper for GitLab API
gem 'gitlab'

🐮 設定方法

あらかじめ使うGitLabが決まっている場合は、次のように設定してください。

# config/initializers/gitlab.rb
Gitlab.configure do |config|
config.endpoint = 'https://example.net/api/v3' # API endpoint URL, default: ENV['GITLAB_API_ENDPOINT']
config.private_token = 'xxxxxx' # user's private token or OAuth2 access token, default: ENV['GITLAB_API_PRIVATE_TOKEN']
# Optional
# config.user_agent = 'Custom User Agent' # user agent, default: 'Gitlab Ruby Gem [version]'
# config.sudo = 'user' # username for sudo mode, default: nil
end

ちなみにソースコード内で可変で設定したい場合は、こちら。

# APIエンドポイントの設定
Gitlab.endpoint = 'http://example.net/api/v3'

# Private tokenの設定
Gitlab.private_token = 'xxxxxx'

🐝 リポジトリの一覧を取得

今回はサンプルとして、リポジトリの一覧を取得する処理を書いてみます。
(適当です、もっといい実装方法があればぜひコメントください^^)

# listing all user name
user_names = Gitlab.users.map(&:name)

# get all projects
user_names.map do |name|
Gitlab.sudo = name # sudo できる前提です
Gitlab.projects(per_page: PER_PAGE).auto_paginate
end.flatten.uniq_by { |_| _.id }

より詳細にな使い方はこちら。

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍