×

您可以在管道中指定手动审批任务。当管道到达此任务时,它会暂停并等待一个或多个 OpenShift Container Platform 用户的批准。如果任何用户选择拒绝任务而不是批准它,则管道将失败。手动审批网关控制器提供此功能。

手动审批网关只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供了对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围

启用手动审批网关控制器

要使用手动审批任务,您必须首先启用手动审批网关控制器。

前提条件
  • 您已在集群中安装了 Red Hat OpenShift Pipelines 运算符。

  • 您已使用 `oc` 命令行实用程序登录到集群。

  • 您具有 `openshift-pipelines` 命名空间的管理员权限。

步骤
  1. 创建一个名为 `manual-approval-gate-cr.yaml` 的文件,其中包含以下 `ManualApprovalGate` 自定义资源 (CR) 的清单

    apiVersion: operator.tekton.dev/v1alpha1
    kind: ManualApprovalGate
    metadata:
      name: manual-approval-gate
    spec:
      targetNamespace: openshift-pipelines
  2. 通过输入以下命令应用 `ManualApprovalGate` CR

    $ oc apply -f manual-approval-gate-cr.yaml
  3. 通过输入以下命令验证手动审批网关控制器是否正在运行

    $ oc get manualapprovalgates.operator.tekton.dev
    示例输出
    NAME                   VERSION    READY   REASON
    manual-approval-gate   v0.1.0	    True

    确保 `READY` 状态为 `True`。如果它不是 `True`,请等待几分钟然后再次输入命令。控制器可能需要一些时间才能达到就绪状态。

指定手动审批任务

您可以在您的管道中指定手动审批任务。当管道运行的执行到达此任务时,管道运行将停止并等待一个或多个用户的批准。

前提条件
  • 您已启用手动审批网关控制器。

  • 您已创建管道的 YAML 规范。

步骤
  • 在管道中指定一个 `ApprovalTask`,如下例所示

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: example-manual-approval-pipeline
    spec:
      tasks:
    # ...
      - name: example-manual-approval-task
        taskRef:
          apiVersion: openshift-pipelines.org/v1alpha1
          kind: ApprovalTask
        params:
        - name: approvers
          value:
          - user1
          - user2
          - user3
        - name: description
          value: Example manual approval task - please approve or reject
        - name: numberOfApprovalsRequired
          value: '2'
        - name: timeout
          value: '60m'
    # ...
    表 1. 手动审批任务的参数
    参数 类型 描述

    approvers

    数组

    可以批准任务的 OpenShift Container Platform 用户。

    description

    字符串

    可选:审批任务的描述。OpenShift Pipelines 将描述显示给可以批准或拒绝任务的用户。

    numberOfApprovalsRequired

    字符串

    任务所需的来自不同用户的批准次数。

    timeout

    字符串

    可选:批准的超时期限。如果任务在此期限内未收到配置的批准次数,则管道运行将失败。默认超时时间为 1 小时。

审批手动审批任务

当您运行包含审批任务的管道并且执行到达审批任务时,管道运行将暂停并等待用户批准或拒绝。

用户可以使用 Web 控制台或 `opc` 命令行实用程序批准或拒绝任务。

如果任何一个在任务中配置的审批者拒绝了该任务,则流水线运行失败。

如果一个用户批准了任务,但配置的审批数量尚未达到,则同一用户可以更改为拒绝任务,并且流水线运行失败。

使用 Web 控制台批准手动审批任务

您可以使用 OpenShift Container Platform Web 控制台批准或拒绝手动审批任务。

如果您在手动审批任务中被列为审批者,并且流水线运行到达此任务,则 Web 控制台会显示通知。您可以查看需要您审批的任务列表,并批准或拒绝这些任务。

前提条件
  • 您已启用 OpenShift Pipelines 控制台插件。

步骤
  1. 通过完成以下操作之一,查看您可以批准的任务列表:

    • 当显示关于需要您批准的任务的通知时,请点击该通知中的“转到审批选项卡”。

    • 管理员视角菜单中,选择流水线流水线,然后点击审批选项卡。

    • 开发者视角菜单中,选择流水线,然后点击审批选项卡。

    • 流水线运行详情窗口的详情选项卡中,点击代表手动审批任务的矩形。列表仅显示此任务的审批。

    • 流水线运行详情窗口中,点击审批任务选项卡。列表仅显示此流水线运行的审批。

  2. 在审批任务列表中,在代表您要批准的任务的行中,点击kebab图标,然后选择以下选项之一:

    • 要批准任务,请选择批准

    • 要拒绝任务,请选择拒绝

  3. 原因字段中输入消息。

  4. 点击提交

使用命令行批准手动审批任务

您可以使用opc命令行实用程序批准或拒绝手动审批任务。您可以查看您是审批者的任务列表,并批准或拒绝待审批的任务。

前提条件
  • 您已下载并安装了opc命令行实用程序。此实用程序与tkn命令行实用程序位于同一软件包中。

  • 您已使用 `oc` 命令行实用程序登录到集群。

步骤
  1. 通过输入以下命令,查看您被列为审批者的手动审批任务列表:

    $ opc approvaltask list
    示例输出
    NAME                                     NumberOfApprovalsRequired   PendingApprovals   Rejected   STATUS
    manual-approval-pipeline-01w6e1-task-2   2                           0                  0          Approved
    manual-approval-pipeline-6ywv82-task-2   2                           2                  0          Rejected
    manual-approval-pipeline-90gyki-task-2   2                           2                  0          Pending
    manual-approval-pipeline-jyrkb3-task-2   2                           1                  1          Rejected
  2. 可选:要查看有关手动审批任务的信息,包括其名称、命名空间、流水线运行名称、审批者列表和当前状态,请输入以下命令:

    $ opc approvaltask describe <approval_task_name>
  3. 根据需要批准或拒绝手动审批任务。

    • 要批准手动审批任务,请输入以下命令:

      $ opc approvaltask approve <approval_task_name>

      您可以选择使用-m参数指定审批消息。

      $ opc approvaltask approve <approval_task_name> -m <message>
    • 要拒绝手动审批任务,请输入以下命令:

      $ opc approvaltask reject <approval_task_name>

      您可以选择使用-m参数指定拒绝消息。

      $ opc approvaltask reject <approval_task_name> -m <message>
其他资源