4.8. 使用 Pipelines as Code


重要

Pipelines as Code 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

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

使用 Pipelines 作为 Code,具有所需权限的集群管理员和用户可以将管道模板定义为源代码 Git 存储库的一部分。当由源代码推送或配置的 Git 存储库的拉取请求触发时,该功能将运行管道和报告状态。

4.8.1. 主要特性

作为代码的管道支持以下功能:

  • 在托管 Git 仓库的平台上拉取请求状态并控制。
  • GitHub Checks API 以设置管道运行的状态,包括重新检查。
  • GitHub 拉取请求和提交事件。
  • 在注释中拉取请求操作,如 /retest
  • Git 事件过滤和每个事件一个单独的管道。
  • Pipelines 中的自动任务解析,包括本地任务、Tekton Hub 和远程 URL。
  • 使用 GitHub blob 和对象 API 检索配置。
  • 通过 GitHub 组织的访问控制列表 (ACL),或使用 Prow 风格的 OWNER 文件。
  • 用于管理 bootstrap 和 Pipelines 作为代码软件仓库的 tkn-pac CLI 插件。
  • 支持 GitHub App、GitHub Webhook、Bitbucket 服务器和 Bitbucket 云。

4.8.2. 在 OpenShift Container Platform 上安装 Pipelines 作为代码

在安装 Red Hat OpenShift Pipelines Operator 时,默认将安装 Pipelines 作为代码。如果您使用 Pipelines 1.7 或更高版本,请跳过将 Pipelines 作为代码手动安装的步骤。

但是,如果要使用 Red Hat OpenShift Pipelines Operator 禁用 Pipelines 的默认安装,请在 TektonConfig 自定义资源中将 enablePipelinesAsCode 字段的值设置为 false

...
spec:
    addon:
      enablePipelinesAsCode: false
...

要使用 Operator 将 Pipelines 作为代码安装,请将 enablePipelinesAsCode 字段的值设置为 true

流程

  1. 要在 OpenShift Container Platform 集群上手动安装 Pipelines,而不是通过 Red Hat OpenShift Pipelines Operator 进行默认安装,请运行以下命令:

    $ VERSION=0.5.4
    $ oc apply -f https://raw.githubusercontent.com/openshift-pipelines/pipelines-as-code/release-$VERSION/release-$VERSION.yaml
    注意

    如需最新的稳定版本,请查看发行版本页面。另外,检查 Red Hat OpenShift Pipelines 发行注记,以确保 Pipelines 作为代码版本与 Red Hat OpenShift Pipelines 版本兼容。

    此命令在 pipelines-as-code 命名空间中安装 Pipelines 作为代码,并为 Pipelines 作为代码事件监听程序创建用户角色和路由 URL。

  2. 记录集群中创建的 Pipelines 的路由 URL 作为代码控制器:

    $ echo https://$(oc get route -n pipelines-as-code el-pipelines-as-code-interceptor -o jsonpath='{.spec.host}')

    在配置 Git 存储库托管服务提供商时,需要此 URL。

  3. (可选)要允许非管理员用户在相应的命名空间中创建存储库自定义资源定义 (CRD),请在该命名空间中创建一个名为 openshift-pipeline-as-code-clusterroleRoleBinding 对象。例如,要允许用户在 user-ci 命名空间中创建存储库 CRD,请运行以下命令:

    $ oc adm policy add-role-to-user openshift-pipeline-as-code-clusterrole user -n user-ci

    或者,使用 oc apply -f <RoleBinding.yaml> 命令应用以下 YAML 文件:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: openshift-pipeline-as-code-clusterrole
      namespace: user-ci
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: openshift-pipeline-as-code-clusterrole
    subjects:
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: user

4.8.3. 将管道安装为代码 CLI

集群管理员可以在本地机器中使用 tkn-pac CLI 工具,或作为容器进行测试。当您为 Red Hat OpenShift Pipelines 安装 tkn CLI 时,tkn-pac CLI 工具会自动安装。

您还可以为支持的平台安装 tkn-pac tkn-pac 版本 0.23.1 二进制文件:

4.8.4. 将 Pipelines 配置为 Git 存储库托管服务提供商的代码

安装 Pipelines 作为代码后,集群管理员可以配置 Git 存储库托管服务提供商。目前,支持以下服务:

  • GitHub 应用程序
  • GitHub Webhook
  • Bitbucket 服务器
  • Bitbucket 云
注意

GitHub App 是使用 Pipelines 作为代码的建议服务。

4.8.4.1. 为 GitHub 应用程序配置 Pipelines 作为代码

GitHub Apps 充当 Red Hat OpenShift Pipelines 的集点,并为 OpenShift Pipelines 提供了基于 Git 的工作流的优势。集群管理员可以为所有集群用户配置单个 GitHub 应用程序。对于 GitHub Apps 需要使用 Pipelines 作为代码,请确保 GitHub App 的 Webhook 指向 Pipelines,作为代码事件监听器路由(或入口端点)用于侦听 GitHub 事件。

4.8.4.1.1. 配置 GitHub 应用程序

集群管理员可以通过运行以下命令来创建 GitHub 应用程序:

$ tkn pac bootstrap github-app

如果没有安装 tkn pac CLI 插件,您可以手动创建 GitHub App。

流程

要手动为 Pipelines 作为代码创建和配置 GitHub 应用程序,请执行以下步骤:

  1. 登录您的 GitHub 帐户。
  2. 进入 Settings -→ Developer settings -→ GitHub Apps,然后点 New GitHub App
  3. 在 GitHub App 表单中提供以下信息:

    • GitHub 应用程序名称OpenShift Pipelines
    • 主页 URL :OpenShift 控制台 URL
    • Webhook URL :作为代码路由或入口 URL 的 Pipelines。您可以执行命令 echo https://$(oc get route -n pipelines-as-code el-pipelines-as-code-interceptor -o jsonpath='{.spec.host}') 来找到它。

      注意

      对于使用 Red Hat OpenShift Pipelines Operator 默认安装的的 Pipelines as Code,请使用 openshift-pipelines 命名空间而不是 pipelines-as-code

    • Webhook secret :一个任意的机密。您可以通过执行命令 openssl rand -hex 20 来生成 secret。
  4. 选择以下仓库权限

    • Checks: Read & Write
    • Contents: Read & Write
    • Issues: Read & Write
    • Metadata: Read-only
    • Pull request: Read & Write
  5. 选择以下机构权限

    • Members: Readonly
    • Plan: Readonly
  6. 选择以下用户权限

    • Commit comment
    • Issue comment
    • Pull request
    • Pull request review
    • Pull request review comment
    • push
  7. Create GitHub App
  8. 在新创建的 GitHub App 的 Details 页面中,记录顶部显示的 App ID
  9. Private key 部分,点 Generate Private key 自动生成并下载 GitHub 应用的私钥。安全地存储私钥,以备将来参考和使用。
4.8.4.1.2. 配置 Pipelines as Code 来访问一个 GitHub 应用程序

要将 Pipelines as Code 配置为访问新创建的 GitHub 应用程序,请执行以下命令:

+

$ oc -n <pipelines-as-code> create secret generic pipelines-as-code-secret \ 1
        --from-literal github-private-key="$(cat <PATH_PRIVATE_KEY>)" \ 2
        --from-literal github-application-id="<APP_ID>" \ 3
        --from-literal webhook.secret="<WEBHOOK_SECRET>" 4
1
对于使用 Red Hat OpenShift Pipelines Operator 默认安装的的 Pipelines as Code,请使用 openshift-pipelines 命名空间而不是 pipelines-as-code
2
配置 GitHub 应用程序时下载的私钥的路径。
3
GitHub 应用程序的 App ID
4
创建 GitHub 应用程序时提供的 webhook secret。
注意

Pipelines as Code 通过检测从 GitHub Enterprise 集的标头集并将其用于 GitHub Enterprise API 授权 URL 来自动工作。

4.8.5. Pipelines as Code 命令参考

tkn-pac CLI 工具提供以下功能:

  • Bootstrap Pipelines as Code 安装和配置。figuration.
  • 创建一个新的 Pipelines as Code 仓库。
  • 列出所有 Pipelines as Code 仓库。
  • 描述一个 Pipelines as Code 仓库和相关联的运行。
  • 生成简单的管道运行以开始。
  • 如由 Pipelines as Code 执行来解析一个管道运行。
提示

您可以使用与功能对应的命令进行测试和试验,因此您不必对包含应用源代码的 Git 仓库进行更改。

4.8.5.1. 基本语法

$ tkn pac [command or options] [arguments]

4.8.5.2. 全局选项

$ tkn pac --help

4.8.5.3. 工具命令

4.8.5.3.1. bootstrap
表 4.7. 将管道作为代码安装和配置引导
命令描述

tkn pac bootstrap

安装并配置 Pipelines 作为 Git 仓库托管服务提供商的 Code,如 GitHub 和 GitHub Enterprise。

tkn pac bootstrap --nightly

安装每天(nightly)构建的 Pipelines as Code。

tkn pac bootstrap --route-url <public_url_to_ingress_spec>

覆盖 OpenShift 路由 URL。

默认情况下,tkn pac bootstrap 会检测 OpenShift 路由,该路由会自动与 Pipelines as Code 控制器服务关联。

如果您没有 OpenShift Container Platform 集群,它会要求您输入指向入口端点的公共 URL。

tkn pac bootstrap github-app

pipelines-as-code 命名空间中创建 GitHub 应用程序和 secret。

4.8.5.3.2. 软件仓库
表 4.8. 管理 Pipelines 作为代码软件仓库
命令描述

tkn pac repo create

根据管道运行模板创建一个新的 Pipelines as Code 仓库以及一个命名空间。

tkn pac repo list

列出所有 Pipelines as Code 软件仓库,并显示关联运行的最后一个状态。

tkn pac repo describe

描述一个 Pipelines as Code 仓库和相关联的运行。

4.8.5.3.3. generate
表 4.9. 使用 Pipelines as Code 创建管道运行
命令描述

tkn pac generate

生成简单的管道运行。

从包含源代码的目录执行时,它会自动检测当前的 Git 信息。

另外,它使用基本的语言检测功能,并根据语言添加额外的任务。

例如,如果它在仓库的 root 中检测到一个 setup.py 文件,则 pylint 任务会自动添加到生成的管道运行中。

4.8.5.3.4. 解析
表 4.10. 使用 Pipelines as Code 解析并执行管道运行
命令描述

tkn pac resolve

执行管道运行,就像由 Pipelines as Code 服务中所有的一样。

tkn pac resolve -f .tekton/pull-request.yaml | oc apply -f -

显示在 .tekton/pull-request.yaml 中使用模板的实时管道运行状态。

结合在本地机器上运行的 Kubernetes 安装,您可以在不生成新提交的情况下观察管道运行。

如果从源代码存储库运行命令,它会尝试检测当前的 Git 信息并自动解析当前修订或分支等参数。

tkn pac resolve -f .tekton/pr.yaml -p revision=main -p repo_name=<repository_name>

通过覆盖从 Git 存储库派生的默认参数值来执行管道运行。

-f 选项也可以接受目录路径,并在该目录中的所有 .yaml.yml 文件中应用 tkn pac resolve 命令。您还可以在同一命令中多次使用 -f 标志。

您可以使用 -p 选项指定参数值,覆盖 Git 仓库收集的默认信息。例如,您可以使用 Git 分支作为修订和不同的仓库名称。

4.8.6. 自定义 Pipelines as Code 配置

要自定义 Pipelines as Code,集群管理员可使用 pipelines-as-code 命名空间中的 pipelines-as-code 配置映射配置以下参数:

表 4.11. 自定义 Pipelines as Code 配置
参数描述默认值

application-name

应用程序的名称。例如,GitHub Checks 标签中显示的名称。

"Pipelines as Code CI"

max-keep-days

执行的管道运行的天数保存在 pipelines-as-code 命名空间中。

请注意,此配置映射设置不会影响用户的管道运行的清理,这由用户 GitHub 仓库中管道运行定义上的注解控制。

 

secret-auto-create

指明是否应使用 GitHub 应用中生成的令牌自动创建 secret。然后可将这个 secret 用于私有仓库。

enabled

remote-tasks

启用后,允许来自管道运行注解的远程任务。

enabled

hub-url

Tekton Hub API 的基本 URL。

https://hub.tekton.dev/

4.8.7. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.