イシューの管理

GitLab イシューは、GitLabでアイデアを出し合ったり、作業を計画したりするための基本的な媒体です。 イシューの作成移動完了削除は、イシューでできる主なアクションです。

新規イシューの作成

新しいイシューを作成する際には、下図のようにイシューのデータやフィールドを入力するよう求められます。 イシューに割り当てたい値が決まっている場合は、リストから選択するのではなく、クイックアクション機能を使って値を入力できます。

イシューを作成する際、Epicドロップダウンで選択することにより、現在のグループの既存のエピックに関連付けられます。

新規イシュー作成フォーム

プロジェクト内で新規イシュー作成フォームを表示する方法はたくさんあります。

  • プロジェクトのダッシュボードイシュー新規イシューに移動します。

    New issue from the issue list view

  • プロジェクトでオープンなイシューから、「新規イシュー」をクリックして、同じプロジェクトに新しいイシューを作成できます。

    New issue from an open issue

  • プロジェクトのダッシュボードで、プラス記号(+)をクリックすると、いくつかのオプションを含むドロップダウンメニューが表示されます。「新規イシュー」を選択すると、そのプロジェクトにイシューを作成できます。

    New issue from a project's dashboard

  • イシューボードでは、リストの上部にあるプラス記号(+)をクリックして、新しいイシューを作成します。 そのプロジェクトの新しいイシューが開かれ、ボードのそれぞれのリストのラベルがあらかじめイシューに付与されます。

    From the issue board

新規イシュー作成フォームの項目

新しいイシューをエピックに追加する機能GitLab Premium13.1で導入されました

New issue from the issues list

新しいイシューを作成する際、これらのフィールドに入力します。

  • タイトル
  • 説明
  • イシューをコンフィデンシャルにするかどうかのチェックボックス
  • Assignee
  • ウェイト
  • エピック
  • 期限
  • Milestone
  • ラベル

グループレベルでのイシュートラッカーからの新規イシュー作成

グループダッシュボードでサイドバーの「イシュー」をクリックすると、グループ内のすべてのプロジェクトのイシュートラッカーが表示されます。 ページ右上のドロップダウンボタンで、イシューを追加したいプロジェクトを選択します。

Select project to create issue

ユーザーが最近選択したプロジェクトが記録され、次回のページ訪問時にはそのプロジェクトがデフォルトとして使用されます。 これにより、同じプロジェクトに対してイシューを作成することが多い場合には、時間とクリック数を大幅に削減できます。

Create issue from group-level issue tracker

サービスデスク経由の新しいイシュー

プロジェクトでサービスデスクを有効にし、メール受信の設定をします。 そうすることで、ユーザー(顧客)が新しいメールを送信すると適切なプロジェクトに新しいイシューが作成され、そこからユーザー(顧客)のフォローアップを開始できます。

電子メールでの新規イシュー作成介

GitLabインスタンスにメール受信の設定がある場合、プロジェクトのイシューリストページの下部に「Email a new issue to this project」というリンクが表示されます。

Bottom of a project issues page

このリンクをクリックすると、電子メールアドレスが生成・表示されます。このメールアドレスは、このプロジェクトでイシューを作成するために、あなただけが使用します。 このアドレスをメールクライアントの連絡先として保存しておけば、簡単にアクセスできます。

注意:このメールアドレスはあなたのためだけに作成された非公開のメールアドレスです。 このメールアドレスを知っている人は、あたかもあなたであるかのようにイシューやマージリクエストを作成することができるため、自分だけのものにしておいてください。 このアドレスが漏洩した場合、または何らかの理由で再作成を希望する場合は、「このプロジェクトに新しいイシューをメールで送信する」をもう一度クリックし、リセットリンクをクリックしてください。

このアドレスにメールを送信すると、このプロジェクトのためにあなたの名前で新しいイシューが作成されます。

注:GitLab 11.7では、生成されるメールアドレスのフォーマットを更新しました。 しかし、古いフォーマットもサポートされているため、既存のエイリアスや連絡先を引き続き使用することができます。

事前に入力された項目を持つ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

イシューの移動

イシューを移動すると新しい場所(プロジェクト)にコピーされ、古いプロジェクトのイシューはクロースされますが、削除はされません。 また、両方のイシューに移動元、移動先を示すシステムノートが追加されます。

「イシューを移動」ボタンは、イシューを表示した画面の右サイドバーの下部にあります。

move issue - button

イシューをまとめて移動する

高度な技術力があれば、railsコンソールでプロジェクトから別のプロジェクトにすべてのイシューを一括して移動させることもできます。 以下は、ステータスがクローズされていないすべてのイシューを、あるプロジェクトから別のプロジェクトに移動させるスクリプトです。

railsコンソールにアクセスするには、GitLabサーバー上でsudo gitlab-rails consoleを実行し、以下のスクリプトを実行します。projectadmin_usertarget_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」ボタンを使ってイシューを閉じることができます。

close issue - button

また、イシューボードのリストからイシューをドラッグし、クローズリストにドロップすることで、イシューをクローズできます。

close issue from the Issue Board

イシューの自動クローズ

注:パフォーマンス上の理由から、既存のリポジトリからの最初のプッシュでは、イシューの自動クローズは無効になっています。

コミットやマージリクエストで1つ以上のイシューをクローズした場合、そのコミットやマージリクエストがプロジェクトのデフォルトブランチにマージされた時点で、これらのイシューを自動的にクローズできます。

コミットメッセージやマージリクエストのdescriptionに、定義されたパターンに一致するテキストが含まれていた場合、一致したテキストで参照されているすべてのイシューがクローズされます。 これは、コミットがプロジェクトのデフォルトブランチにプッシュされたとき、またはコミットやマージリクエストがブランチにマージされたときに発生します。

例えば、Closes #4, #6, Related to #5 がマージリクエストの説明に含まれている場合、#4#6 のイシューはMRがマージされると自動的にクローズされますが、#5はクローズされません。Related to を使用すると、#5関連イシューとしてフラグ付けされますが、自動的にクローズされることはありません。

merge request closing issue when merged

イシューがマージリクエストとは別のリポジトリにある場合は、イシューの完全な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から導入されました

イシューの自動クローズ機能は、プロジェクトのリポジトリ設定でプロジェクトごとに無効にできます。 参照されたイシューはそのまま表示されますが、自動的にクローズされることはありません。

disable issue auto close - settings

これは、新しいマージ要求やコミットによって影響を受けるイシューにのみ適用されます。 すでにクローズされた課題はそのまま残ります。 イシューの自動クローズを無効にすると、プロジェクト内のマージリクエストにのみ影響します。他のプロジェクトがプロジェクト跨ぎのイシューを介してクローズするのを防ぐことはできません。

イシュークローズパターンのカスタマイズ

デフォルトのイシュークローズパターンを変更するには、GitLab管理者がインストールのgitlab.rb またはgitlab.yml ファイルを編集する必要があります。

イシューの削除

GitLab 8.6で導入されました。

プロジェクトオーナー権限を持つユーザーは、イシューを編集して削除ボタンをクリックすることで、イシューを削除できます。

delete issue - button