イシューの管理
GitLab イシューは、GitLabでアイデアを出し合ったり、作業を計画したりするための基本的な媒体です。 イシューの作成、移動、完了、削除は、イシューでできる主なアクションです。
新規イシューの作成
新しいイシューを作成する際には、下図のようにイシューのデータやフィールドを入力するよう求められます。 イシューに割り当てたい値が決まっている場合は、リストから選択するのではなく、クイックアクション機能を使って値を入力できます。
イシューを作成する際、Epicドロップダウンで選択することにより、現在のグループの既存のエピックに関連付けられます。
新規イシュー作成フォーム
プロジェクト内で新規イシュー作成フォームを表示する方法はたくさんあります。
-
プロジェクトのダッシュボード>イシュー>新規イシューに移動します。
-
プロジェクトでオープンなイシューから、「新規イシュー」をクリックして、同じプロジェクトに新しいイシューを作成できます。
-
プロジェクトのダッシュボードで、プラス記号(+)をクリックすると、いくつかのオプションを含むドロップダウンメニューが表示されます。「新規イシュー」を選択すると、そのプロジェクトにイシューを作成できます。
-
イシューボードでは、リストの上部にあるプラス記号(+)をクリックして、新しいイシューを作成します。 そのプロジェクトの新しいイシューが開かれ、ボードのそれぞれのリストのラベルがあらかじめイシューに付与されます。
新規イシュー作成フォームの項目
新しいイシューをエピックに追加する機能は、GitLab Premium13.1で導入されました。
新しいイシューを作成する際、これらのフィールドに入力します。
- タイトル
- 説明
- イシューをコンフィデンシャルにするかどうかのチェックボックス
- Assignee
- ウェイト
- エピック
- 期限
- Milestone
- ラベル
グループレベルでのイシュートラッカーからの新規イシュー作成
グループダッシュボードでサイドバーの「イシュー」をクリックすると、グループ内のすべてのプロジェクトのイシュートラッカーが表示されます。 ページ右上のドロップダウンボタンで、イシューを追加したいプロジェクトを選択します。
ユーザーが最近選択したプロジェクトが記録され、次回のページ訪問時にはそのプロジェクトがデフォルトとして使用されます。 これにより、同じプロジェクトに対してイシューを作成することが多い場合には、時間とクリック数を大幅に削減できます。
サービスデスク経由の新しいイシュー
プロジェクトでサービスデスクを有効にし、メール受信の設定をします。 そうすることで、ユーザー(顧客)が新しいメールを送信すると適切なプロジェクトに新しいイシューが作成され、そこからユーザー(顧客)のフォローアップを開始できます。
電子メールでの新規イシュー作成介
GitLabインスタンスにメール受信の設定がある場合、プロジェクトのイシューリストページの下部に「Email a new issue to this project」というリンクが表示されます。
このリンクをクリックすると、電子メールアドレスが生成・表示されます。このメールアドレスは、このプロジェクトでイシューを作成するために、あなただけが使用します。 このアドレスをメールクライアントの連絡先として保存しておけば、簡単にアクセスできます。
このアドレスにメールを送信すると、このプロジェクトのためにあなたの名前で新しいイシューが作成されます。
事前に入力された項目を持つURL経由の新規イシュー作成
URL のクエリパラメーターに事前に値を埋め込んだ、イシュー作成のページへ直接リンクできます。これは、外部のHTMLページにURLを埋め込む場合や、特定のフィールドが事前に入力された状態でユーザーにイシューを作成させたい場合などに便利です。
この方法では、タイトル、Description、Descriptionのテンプレート、機密情報の各フィールドを事前に入力できます。 同じURLでDescriptionとDescriptionテンプレートの両方のフィールドを事前に入力はできません(DescriptionテンプレートがDescriptionフィールドにも入力されるため)。
項目 | URLパラメータ名 | 備考 |
---|---|---|
タイトル | issue[title]
| |
説明 | issue[description]
| |
説明テンプレート | issuable_template
| |
機密 | issue[confidential]
| 機密に設定するにはパラメータ値をtrue に設定する必要があります。
|
以下の例に従って、事前に入力されたフィールドを使って新規イシュー作成のURLを設定してください。
- GitLab Community Edition プロジェクトの新しいイシューで、タイトルと説明があらかじめ入力されている場合、URL は次のようになります。
https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea
- GitLab Community Edition プロジェクトの新しいイシューで、タイトルと説明テンプレートがあらかじめ入力されている場合、URL は次のようになります。
https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issuable_template=Research%20proposal
- GitLab Community Edition プロジェクトの新しいイシューで、タイトルと説明があらかじめ入力されていて、機密フラグが設定されている場合、URL は次のようになります。
https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea&issue[confidential]=true
イシューの移動
イシューを移動すると新しい場所(プロジェクト)にコピーされ、古いプロジェクトのイシューはクロースされますが、削除はされません。 また、両方のイシューに移動元、移動先を示すシステムノートが追加されます。
「イシューを移動」ボタンは、イシューを表示した画面の右サイドバーの下部にあります。
イシューをまとめて移動する
高度な技術力があれば、railsコンソールでプロジェクトから別のプロジェクトにすべてのイシューを一括して移動させることもできます。 以下は、ステータスがクローズされていないすべてのイシューを、あるプロジェクトから別のプロジェクトに移動させるスクリプトです。
railsコンソールにアクセスするには、GitLabサーバー上でsudo gitlab-rails console
を実行し、以下のスクリプトを実行します。project、admin_user、target_projectを適切な値に変更してください。 また、コンソールでの変更を試みる前に、バックアップを取得することをお勧めします。
project = Project.find_by_full_path('full path of the project where issues are moved from')
issues = project.issues
admin_user = User.find_by_username('username of admin user') # make sure user has permissions to move the issues
target_project = Project.find_by_full_path('full path of target project where issues moved to')
issues.each do |issue|
if issue.state != "closed" && issue.moved_to.nil?
Issues::MoveService.new(project, admin_user).execute(issue, target_project)
else
puts "issue with id: #{issue.id} and title: #{issue.title} was not moved"
end
end; nil
イシューのクローズ
イシューが解決した、または不要になったと判断した場合は、「Close Issue」ボタンを使ってイシューを閉じることができます。
また、イシューボードのリストからイシューをドラッグし、クローズリストにドロップすることで、イシューをクローズできます。
イシューの自動クローズ
コミットやマージリクエストで1つ以上のイシューをクローズした場合、そのコミットやマージリクエストがプロジェクトのデフォルトブランチにマージされた時点で、これらのイシューを自動的にクローズできます。
コミットメッセージやマージリクエストのdescriptionに、定義されたパターンに一致するテキストが含まれていた場合、一致したテキストで参照されているすべてのイシューがクローズされます。 これは、コミットがプロジェクトのデフォルトブランチにプッシュされたとき、またはコミットやマージリクエストがブランチにマージされたときに発生します。
例えば、Closes #4, #6, Related to #5
がマージリクエストの説明に含まれている場合、#4
と#6
のイシューはMRがマージされると自動的にクローズされますが、#5
はクローズされません。Related to
を使用すると、#5
が関連イシューとしてフラグ付けされますが、自動的にクローズされることはありません。
イシューがマージリクエストとは別のリポジトリにある場合は、イシューの完全なURLを追加します。
Closes #4, #6, and https://gitlab.com/<username>/<projectname>/issues/<xxx>
デフォルトのクロージングパターン
指定されていない場合は、以下のようなデフォルトのイシュークローズパターンが使用されます。
\b((?:[Cc]los(?:e[sd]?|ing)|\b[Ff]ix(?:e[sd]|ing)?|\b[Rr]esolv(?:e[sd]?|ing)|\b[Ii]mplement(?:s|ed|ing)?)(:?) +(?:(?:issues? +)?%{issue_ref}(?:(?: *,? +and +| *,? *)?)|([A-Z][A-Z0-9_]+-\d+))+)
これは次のようなキーワードに置き換えられます。
- Close, Closes, Closed, Closing, close, closes, closed, closing
- Fix, Fixes, Fixed, Fixing, fix, fixes, fixed, fixing
- Resolve, Resolves, Resolved, Resolving, resolve, resolves, resolved, resolving
- Implement, Implements, Implemented, Implementing, implement, implements, implemented, implementing
%{issue_ref}
は GitLab のソースコード内部で定義された複雑な正規表現で、次の参照にマッチすることに注意してください:
- プロジェクトローカルのイシュー(
#123
)。 - プロジェクト横断的なイシュー(
group/project#123
)。 - イシューへのリンク (
https://gitlab.example.com/group/project/issues/123
)。
例えば、以下のようなコミットメッセージがあります。
Awesome commit message
Fix #20, Fixes #21 and Closes group/otherproject#22.
This commit is also related to #17 and fixes #18, #19
and https://gitlab.example.com/group/otherproject/issues/23.
このコミットがプッシュされたプロジェクトの#18
、#19
、#20
、#21
、およびgroup/otherproject
の#22
と#23
をクローズします。 このパターンにマッチしない#17
は閉じません。 コマンドラインからgit commit -m
を実行すると、複数行のコミットメッセージも一行のコミットメッセージと同様に動作します。
イシューの自動クローズを無効にする
GitLab 12.7から導入されました。
イシューの自動クローズ機能は、プロジェクトのリポジトリ設定でプロジェクトごとに無効にできます。 参照されたイシューはそのまま表示されますが、自動的にクローズされることはありません。
これは、新しいマージ要求やコミットによって影響を受けるイシューにのみ適用されます。 すでにクローズされた課題はそのまま残ります。 イシューの自動クローズを無効にすると、プロジェクト内のマージリクエストにのみ影響します。他のプロジェクトがプロジェクト跨ぎのイシューを介してクローズするのを防ぐことはできません。
イシュークローズパターンのカスタマイズ
デフォルトのイシュークローズパターンを変更するには、GitLab管理者がインストールのgitlab.rb
またはgitlab.yml
ファイルを編集する必要があります。
イシューの削除
GitLab 8.6で導入されました。
プロジェクトオーナー権限を持つユーザーは、イシューを編集して削除ボタンをクリックすることで、イシューを削除できます。