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
。
流程
要在 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。记录集群中创建的 Pipelines 的路由 URL 作为代码控制器:
$ echo https://$(oc get route -n pipelines-as-code el-pipelines-as-code-interceptor -o jsonpath='{.spec.host}')
在配置 Git 存储库托管服务提供商时,需要此 URL。
(可选)要允许非管理员用户在相应的命名空间中创建存储库自定义资源定义 (CRD),请在该命名空间中创建一个名为
openshift-pipeline-as-code-clusterrole
的RoleBinding
对象。例如,要允许用户在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
二进制文件:
- Linux (x86_64, amd64)
- Linux on IBM Z and LinuxONE (s390x)
- Linux on IBM Power Systems (ppc64le)
- Mac
- 注意
二进制文件与
tkn
版本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 应用程序,请执行以下步骤:
- 登录您的 GitHub 帐户。
- 进入 Settings -→ Developer settings -→ GitHub Apps,然后点 New GitHub App。
在 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。
-
GitHub 应用程序名称:
选择以下仓库权限 :
-
Checks:
Read & Write
-
Contents:
Read & Write
-
Issues:
Read & Write
-
Metadata:
Read-only
-
Pull request:
Read & Write
-
Checks:
选择以下机构权限 :
-
Members:
Readonly
-
Plan:
Readonly
-
Members:
选择以下用户权限 :
- Commit comment
- Issue comment
- Pull request
- Pull request review
- Pull request review comment
- push
- 点 Create GitHub App。
- 在新创建的 GitHub App 的 Details 页面中,记录顶部显示的 App ID。
- 在 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
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
命令 | 描述 |
---|---|
| 安装并配置 Pipelines 作为 Git 仓库托管服务提供商的 Code,如 GitHub 和 GitHub Enterprise。 |
| 安装每天(nightly)构建的 Pipelines as Code。 |
| 覆盖 OpenShift 路由 URL。
默认情况下, 如果您没有 OpenShift Container Platform 集群,它会要求您输入指向入口端点的公共 URL。 |
|
在 |
4.8.5.3.2. 软件仓库
命令 | 描述 |
---|---|
| 根据管道运行模板创建一个新的 Pipelines as Code 仓库以及一个命名空间。 |
| 列出所有 Pipelines as Code 软件仓库,并显示关联运行的最后一个状态。 |
| 描述一个 Pipelines as Code 仓库和相关联的运行。 |
4.8.5.3.3. generate
命令 | 描述 |
---|---|
| 生成简单的管道运行。 从包含源代码的目录执行时,它会自动检测当前的 Git 信息。 另外,它使用基本的语言检测功能,并根据语言添加额外的任务。
例如,如果它在仓库的 root 中检测到一个 |
4.8.5.3.4. 解析
命令 | 描述 |
---|---|
| 执行管道运行,就像由 Pipelines as Code 服务中所有的一样。 |
|
显示在 结合在本地机器上运行的 Kubernetes 安装,您可以在不生成新提交的情况下观察管道运行。 如果从源代码存储库运行命令,它会尝试检测当前的 Git 信息并自动解析当前修订或分支等参数。 |
| 通过覆盖从 Git 存储库派生的默认参数值来执行管道运行。
您可以使用 |
4.8.6. 自定义 Pipelines as Code 配置
要自定义 Pipelines as Code,集群管理员可使用 pipelines-as-code
命名空间中的 pipelines-as-code
配置映射配置以下参数:
参数 | 描述 | 默认值 |
---|---|---|
| 应用程序的名称。例如,GitHub Checks 标签中显示的名称。 |
|
|
执行的管道运行的天数保存在 请注意,此配置映射设置不会影响用户的管道运行的清理,这由用户 GitHub 仓库中管道运行定义上的注解控制。 | |
| 指明是否应使用 GitHub 应用中生成的令牌自动创建 secret。然后可将这个 secret 用于私有仓库。 |
|
| 启用后,允许来自管道运行注解的远程任务。 |
|
| Tekton Hub API 的基本 URL。 |