166.md 6.5 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
# Requirements Management

> 原文:[https://docs.gitlab.com/ee/user/project/requirements/](https://docs.gitlab.com/ee/user/project/requirements/)

*   [Create a requirement](#create-a-requirement)
*   [Edit a requirement](#edit-a-requirement)
*   [Archive a requirement](#archive-a-requirement)
*   [Reopen a requirement](#reopen-a-requirement)
*   [Search for a requirement](#search-for-a-requirement)
*   [Allow requirements to be satisfied from a CI job](#allow-requirements-to-be-satisfied-from-a-ci-job)
    *   [Add the manual job to CI](#add-the-manual-job-to-ci)
        *   [Specifying individual requirements](#specifying-individual-requirements)
    *   [Add the manual job to CI conditionally](#add-the-manual-job-to-ci-conditionally)

# Requirements Management[](#requirements-management-ultimate "Permalink")

[Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2703) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.10.

根据要求,您可以设置标准来检查产品. 它们可以基于用户,涉众,系统,软件或您认为重要的其他任何内容.

需求是 GitLab 中的工件,用于描述产品的特定行为. 需求是长期存在的,除非手动清除,否则它们不会消失.

如果行业标准*要求*您的应用程序具有某些功能或行为,则可以[创建一个要求](#create-a-requirement)来反映这一点. 如果不再需要某个功能,则可以[归档相关需求](#archive-a-requirement) .

有关概述,请参见[GitLab 12.10 引入需求管理](https://www.youtube.com/watch?v=uSS7oUNSEoU) .

[![requirements list view](img/56d89ff1e02ecf30404a57092adae96d.png)](img/requirements_list_v13_1.png)

## Create a requirement[](#create-a-requirement "Permalink")

每个项目都有一个分页的需求清单,您可以在其中创建一个新需求.

创建需求:

1.  在您的项目页面上,转到 **要求** .
2.  Click **新要求**.
3.  输入描述性标题,然后单击**创建需求** .

您将在列表顶部看到新创建的需求,因为需求列表按创建日期降序排列.

## Edit a requirement[](#edit-a-requirement "Permalink")

您可以从需求列表页面编辑需求(如果您具有必要的特权).

要编辑需求:

1.  在需求清单中,按一下[ **编辑** ( ).
2.  在文本输入字段中更新标题.
3.  Click **保存更改**.

## Archive a requirement[](#archive-a-requirement "Permalink")

在" **打开"**选项卡中时,可以存档一个未完成的需求(如果有必要的特权).

要存档需求,请点击**存档** ( ).

需求存档后,它不再出现在" **打开"**选项卡中.

## Reopen a requirement[](#reopen-a-requirement "Permalink")

您可以在"已**归档"**选项卡中查看已归档需求的列表.

[![archived requirements list](img/596a395127f6b3d5c9d1deac3f676680.png)](img/requirements_archived_list_view_v13_1.png)

要重新打开已归档的需求,请点击**重新打开** .

重新打开需求后,它不再出现在" **归档"**选项卡中.

## Search for a requirement[](#search-for-a-requirement "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/212543) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.1.

您可以根据以下条件从需求列表页面中搜索需求:

*   要求标题
*   作者的用户名

要搜索需求:

1.  在一个项目中,转到 **需求>清单** .
2.  单击**搜索或过滤结果**字段. 出现一个下拉菜单.
3.  从下拉列表中选择需求作者或输入纯文本以按需求标题进行搜索.
4.  在键盘上按`Enter`键以过滤列表.

您还可以通过以下方式对需求列表进行排序:

*   创建日期
*   最近更新时间

## Allow requirements to be satisfied from a CI job[](#allow-requirements-to-be-satisfied-from-a-ci-job "Permalink")

版本历史

*[GitLab Ultimate](https://about.gitlab.com/pricing/) 13.1 中[引入](https://gitlab.com/groups/gitlab-org/-/epics/2859) .
*[GitLab Ultimate](https://about.gitlab.com/pricing/) 13.2 中[增加](https://gitlab.com/gitlab-org/gitlab/-/issues/215514)了指定个别要求及其状态的功能.

GitLab 现在支持[需求测试报告](../../../ci/pipelines/job_artifacts.html#artifactsreportsrequirements-ultimate) . 您可以将作业添加到 CI 管道,该作业在触发时会将所有现有需求标记为"满足".

### Add the manual job to CI[](#add-the-manual-job-to-ci "Permalink")

要配置您的 CI 以在触发手动作业时将要求标记为"满足",请将以下代码添加到`.gitlab-ci.yml`文件中.

```
requirements_confirmation:
  when: manual
  allow_failure: false
  script:
    - mkdir tmp
    - echo "{\"*\":\"passed\"}" > tmp/requirements.json
  artifacts:
    reports:
      requirements: tmp/requirements.json 
```

此定义将手动触发的( `when: manual` )作业添加到 CI 管道. 它阻止了( `allow_failure: false` ),但是由您决定触发 CI 作业的条件是什么. 另外,您可以使用任何现有的 CI 作业将所有需求标记为已满足,前提是 CI 作业生成并上传了`requirements.json`工件.

当您手动触发此作业时,包含`{"*":"passed"}``requirements.json`文件将作为工件上传到服务器. 在服务器端,将检查需求报告中的"所有通过"记录( `{"*":"passed"}` ),并在成功后将所有现有的打开需求标记为"满意".

#### Specifying individual requirements[](#specifying-individual-requirements "Permalink")

可以指定个别要求及其状态.

如果存在以下要求:

*   `REQ-1` (具有 IID `1`
*   `REQ-2` (具有 IID `2`
*   `REQ-3` (具有 IID `3`

可以指定第一个要求通过,第二个失败. 有效值为"通过"和"失败". 通过省略需求 IID(在这种情况下为`REQ-3`的 IID `3` ),没有发现结果.

```
requirements_confirmation:
  when: manual
  allow_failure: false
  script:
    - mkdir tmp
    - echo "{\"1\":\"passed\", \"2\":\"failed\"}" > tmp/requirements.json
  artifacts:
    reports:
      requirements: tmp/requirements.json 
```

### Add the manual job to CI conditionally[](#add-the-manual-job-to-ci-conditionally "Permalink")

要将 CI 配置为仅在有某些开放要求时才包括手动作业,请添加一条规则以检查`CI_HAS_OPEN_REQUIREMENTS` CI 变量.

```
requirements_confirmation:
  rules:
    - if: "$CI_HAS_OPEN_REQUIREMENTS" == "true"
      when: manual
    - when: never
  allow_failure: false
  script:
    - mkdir tmp
    - echo "{\"*\":\"passed\"}" > tmp/requirements.json
  artifacts:
    reports:
      requirements: tmp/requirements.json 
```