Help us understand the problem. What is going on with this article?

GitLab運用方法と設定手順について

More than 3 years have passed since last update.

社内では去年までSVNで管理しておりGitを利用するには外のサービスを利用していました。
これじゃダメだと思い今年の春頃からGitLabを導入して運用しています。
導入する際のあれこれの決め事が面倒だったりトライアンドエラーを繰り返して何とか問題なく運用できるところまで来ました。
GitLabをこれから導入する人に役に立てばと思います。

はじめに

やりたいこと

  • システム管理者の負荷を軽減するため、リポジトリ作成はシステム管理者ではなくPJ案件管理者(PM)に作成してもらいたい。
  • リポジトリの削除は基本禁止。
  • GitHubフローで管理したい。

Groupについて

GitLabにはリポジトリをグルーピングすることができます。
グループを案件(PJ)単位で作成し、案件で開発する・保守するシステムをリポジトリで管理します。

権限について

上記のやりたいことを満たすため、下記のように権限を付与します。

担当者 Group権限 Group配下のリポジトリ(Project)権限
システム管理者 Owner Group権限引継 (Owner)
PJ案件管理者(PM) Master Group権限引継 (Master)
開発リーダー・コードレビュア 所属しない Master
開発者(PG) 所属しない Developer

メンバー登録運用フローについて

image

権限の詳細についてはこちらを参照すると良いと思います。
http://qiita.com/mats116/items/f11e2e25731c325eeda8

GitHubフローについて

下記のように運用しています。

ブランチ プロテクト有無 ブランチ作成元 概要
master あり - 常に本番環境・UAT環境にリリースできる状態
develop あり master 常に社内共通テスト環境にリリースできる状態
作業ブランチ なし develop 開発用ブランチ

masterブランチ

  • 常に本番環境・UAT環境にリリースできる状態。
  • developブランチからマージする際にはMaster権限のユーザがWeb上でマージリクエストを行い自身でAcceptもしくは別のMaster権限持っているユーザにAcceptしてもらう。
  • 本番リリース時にはいつリリースしたものかを記すためmasterブランチにタグを付ける。

developブランチ

  • 常に社内共通テスト環境にリリースできる状態。
  • リポジトリ作成時にmasterブランチと同時に作成。
  • 作業ブランチからdevelopブランチにマージする際はWeb上でマージリクエストを行う。
  • AcceptするMaster権限持っているユーザは必ずレビューしてからAcceptを行う。

作業ブランチ

  • 開発用ブランチ。
  • 開発するためのブランチで開発者が自らdevelopからブランチを作成する。
  • developブランチにマージする際はWeb上でマージリクエストを行う。

GitHubフローの詳細についてはこちらを参照すると良いと思います。
http://qiita.com/tbpgr/items/4ff76ef35c4ff0ec8314

各担当者ができること(最終形)

上記の内容から各担当者ができることを表にまとめてみた。

タスク システム管理者 PJ管理者 開発リーダー 開発者 備考
ユーザーの作成(GitLab) × × ×
ユーザーの削除(GitLab) × × ×
グループの作成 × × ×
グループの編集 × ×
グループの削除 × × ×
所属グループへユーザーの権限付与&追加 × × システム管理者がPJ管理者をグループにMasterとして追加。その後、PJ管理者も所属グループへユーザーの権限付与&追加可能となるが、運用ではPJ管理者交代の際を除いて基本禁止している。
所属グループからユーザーの削除 × × システム管理者がPJ管理者をグループにMasterとして追加。その後、PJ管理者も所属グループへユーザーの削除可能となるが、運用ではPJ管理者交代の際を除いて基本禁止している。
所属グループ内のリポジトリの作成 × ×
所属グループ内のリポジトリへユーザーの権限付与&追加 × PJ管理者が開発リーダーをMasterとして追加。その後、開発リーダーもユーザーの権限付与&追加が可能となる。
所属リポジトリからユーザー削除 ×
所属リポジトリの編集 ×
所属リポジトリの削除 × × ×
プロテクトブランチ(master/develop)へのマージ ×

具体的な作業手順

■システム管理者がやること

(1) ユーザ作成

ユーザ作成手順は特に注意することもないので割愛します。

(2) Group作成

  1. [Groups]を選択(左メニュー)
    image

  2. [AdminArea]を選択(画面右上)
    image

  3. [New Group]をクリック
    image

  4. [Group path]にグループ名を入力

  5. [Create group]をクリックしてGroupを作成
    image

(3) GroupにPJ案件管理者の追加

  1. [Add user(s) to the group](画面右)の[Search for a user]でPJ案件管理者のユーザを選択
  2. 権限は[Master]を選択
  3. [Add users to group]をクリック

image

■PJ案件管理者(PM)がやること

(1) リポジトリ作成

  1. [Groups]を選択(左メニュー)
  2. Project作成対象のGroupを選択する
    image

  3. Groupの[Projects]→[+New Project]をクリック
    image

  4. [Projects path]でグループを選択、プロジェクト名を入力する

  5. [Visibility Level]は[private]を選択

  6. [Create project]をクリックしProjectを作成する
    image

(2) masterブランチ作成(README.mdの追加)

  1. Project作成後の画面で[adding README]のリンクをクリック
    image

  2. 本文とCommit messageを記載して[Commit Changes]をクリック
    image
    image

(3) developブランチの作成

  1. [Projects]を選択(左メニュー)
  2. プロジェクト名をクリック
    image

  3. [n branch]のリンクをクリック
    image

  4. [+New branch]をクリック
    image

  5. [Branch name]は[develop]、[Create from]は[master]を選択

  6. [Create branch]をクリックしブランチをブランチを作成
    image
    image

(4) デフォルトブランチの変更

  1. [Projects]を選択(左メニュー)
  2. プロジェクト名をクリック
    image

  3. [Settings]を選択(左メニューの一番下、縦幅が狭い場合スクロールが必要)
    image

  4. [Default Branch]で[develop]を選択
    image

  5. [Save changes]をクリック
    image

(5) ブランチの保護

  1. [Projects]を選択(左メニュー)
  2. プロジェクト名をクリック
    image

  3. [Settings]をクリック(左メニューの一番下、縦幅が狭い場合スクロールが必要)
    image

  4. [Protected branches]を選択(左メニュー)

  5. [Branch]で[develop]を選択
    image

  6. [Protect]をクリックし[develop]ブランチを保護する。これにより、権限が[Developer]のユーザはdevelopにpushできなくなる
    image

※チェックボックスにチェックを入れるだけでDeveloper権限がプッシュできるように自動更新されるので注意!!

(6) リポジトリへのメンバーの追加(その1)

  1. [Projects]を選択(左メニュー)
  2. プロジェクト名をクリック
    image

  3. [Members]を選択(左メニュー)
    image

  4. [People]で対象のメンバーおよび[Project Access]で権限を選択

  5. [Add users to project]をクリックしメンバーを追加
    image

(7) リポジトリへのメンバーの追加(その2)

Projectごとにメンバー追加をするのは面倒なので、1度Projectにメンバーを追加したらメンバーはimportするのが楽

  1. メンバー追加の画面で右上の[import members]を選択
    image

  2. [Project]でメンバーimport元のプロジェクトを選択

  3. [Import project members]をクリックしメンバーをimport
    image
    image

(8)その他

Slack連携やRedmine連携等のServiceもリポジトリ毎の設定になるので連携したい場合は設定してください。

さいごに

上記は一例なので各企業や組織によって上手いことやってください。
では、素敵なGitLabライフを送ってください。
以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした