酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

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を実行してください。

1
2
# Wrapper for GitLab API
gem 'gitlab'

設定方法

予め使うGitLabが決まっている場合は、以下のように設定してください。

1
2
3
4
5
6
7
8
# 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

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

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

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

リポジトリの一覧を取得

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

1
2
3
4
5
6
7
8
# 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 }

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

おすすめの書籍