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 }

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

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)