mirror of
https://github.com/rancher/rancher-docs.git
synced 2026-05-04 20:23:24 +00:00
af77fc8954
Signed-off-by: Sunil Singh <sunil.singh@suse.com>
635 lines
26 KiB
Markdown
635 lines
26 KiB
Markdown
---
|
||
title: 流水线配置参考
|
||
---
|
||
|
||
在本文中,你将学习如何配置流水线。
|
||
|
||
|
||
## 步骤类型
|
||
|
||
在每个阶段中,你都可以添加任意数量的步骤。一个阶段中的多个步骤会并发运行。
|
||
|
||
步骤类型包括:
|
||
|
||
- [运行脚本](#步骤类型运行脚本)
|
||
- [构建和发布镜像](#步骤类型构建和发布镜像)
|
||
- [发布商店应用模板](#步骤类型发布商店应用模板)
|
||
- [部署 YAML](#步骤类型部署-yaml)
|
||
- [部署商店应用](#步骤类型部署商店应用)
|
||
|
||
<!--
|
||
### Clone
|
||
|
||
The first stage is preserved to be a cloning step that checks out source code from your repo. Rancher handles the cloning of the git repository. This action is equivalent to `git clone <repository_link> <workspace_dir>`.
|
||
-->
|
||
|
||
### 通过 UI 配置步骤
|
||
|
||
如果你还没有添加任何阶段,请单击**为此分支配置流水线**以在 UI 中配置流水线。
|
||
|
||
1. 通过单击**添加阶段**将阶段添加到流水线执行中。
|
||
|
||
1. 输入流水线中各个阶段的**名称**。
|
||
1. 你可以单击**显示高级选项**来配置[触发阶段的规则](#触发器和触发器规则)。注意,你之后还可以更新它们。
|
||
|
||
1. 创建阶段后,单击**添加步骤**来开始[添加步骤](#步骤类型)。你可以向每个阶段添加多个步骤。
|
||
|
||
### 通过 YAML 配置步骤
|
||
|
||
你可以在每个阶段中添加多个步骤。如需了解如何配置 YAML,请阅读每个[步骤类型](#步骤类型)和高级选项的更多信息。以下是一个小示例,说明如何配置多个阶段,其中各个阶段中都只有一个步骤:
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
# 阶段的条件
|
||
when:
|
||
branch: master
|
||
event: [ push, pull_request ]
|
||
# 多个步骤并发运行
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: date -R
|
||
- name: Publish my image
|
||
steps:
|
||
- publishImageConfig:
|
||
dockerfilePath: ./Dockerfile
|
||
buildContext: .
|
||
tag: rancher/rancher:v2.0.0
|
||
# 可选择推送到远端镜像仓库
|
||
pushRemote: true
|
||
registry: reg.example.com
|
||
```
|
||
|
||
## 步骤类型:运行脚本
|
||
|
||
**运行脚本**步骤用于在指定容器内的工作空间中执行命令。你可以根据基础镜像提供的实用程序,使用这个步骤来构建、测试,以及执行更多其他操作。为方便起见,你可以使用变量来引用流水线执行的元数据。有关可用变量的列表,请参阅[流水线变量替换参考](#流水线变量替换参考)。
|
||
|
||
### 通过 UI 配置脚本
|
||
|
||
1. 从**步骤类型**下拉列表中,选择**运行脚本**并填写表单。
|
||
|
||
1. 单击**添加**。
|
||
|
||
### 通过 YAML 配置脚本
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
steps:
|
||
- runScriptConfig:
|
||
image: golang
|
||
shellScript: go build
|
||
```
|
||
## 步骤类型:构建和发布镜像
|
||
|
||
**构建和发布镜像**步骤用于构建并发布 Docker 镜像。此步骤需要源代码仓库中的 Dockerfile。
|
||
|
||
UI 中不提供将镜像发布到不安全镜像仓库的选项。但你可以在 YAML 中指定一个环境变量,从而将镜像发布到不安全的镜像仓库。
|
||
|
||
### 通过 UI 配置镜像的构建和发布
|
||
1. 从**步骤类型**下拉菜单中,选择**构建和发布**。
|
||
|
||
1. 完成表单的剩余部分。下面列出了每个字段的说明。完成后,请单击**添加**。
|
||
|
||
| 字段 | 描述 |
|
||
---------|----------|
|
||
| Dockerfile 路径 | 源代码仓库中 Dockerfile 的相对路径。如果 Dockerfile 位于根目录,则默认路径为 `./Dockerfile`。你可以在不同用例中将其设置为其他路径(例如 `./path/to/myDockerfile`)。 |
|
||
| 镜像名称 | `name:tag` 格式的镜像名称。不需要填写镜像仓库地址。例如,如果要构建 `example.com/repo/my-image:dev`,请输入 `repo/my-image:dev`。 |
|
||
| 将镜像推送到远端仓库 | 设置用于发布已构建的镜像的镜像仓库。要使用此选项,请启用它并从下拉列表中选择一个镜像仓库。如果禁用此选项,则将镜像推送到内部镜像仓库。 |
|
||
| 构建上下文 <br/><br/>(**显示高级选项**) | 默认是源代码的根目录 (`.`)。有关更多详细信息,请参阅 Docker [构建命令文档](https://docs.docker.com/engine/reference/commandline/build/)。 |
|
||
|
||
### 通过 YAML 配置镜像的构建和发布
|
||
|
||
你可以为 Docker daemon 和构建使用特定参数。UI 中没有开放这些参数,但你能以流水线 YAML 格式配置这些参数,如下例所示。可用的环境变量包括:
|
||
|
||
| 变量名称 | 描述 |
|
||
------------------------|------------------------------------------------------------
|
||
| PLUGIN_DRY_RUN | 禁用 Docker push |
|
||
| PLUGIN_DEBUG | Docker daemon 在调试模式下执行 |
|
||
| PLUGIN_MIRROR | Docker daemon 镜像仓库 mirror |
|
||
| PLUGIN_INSECURE | Docker daemon 允许不安全的镜像仓库 |
|
||
| PLUGIN_BUILD_ARGS | Docker 构建参数(逗号分隔的列表) |
|
||
|
||
<br/>
|
||
|
||
```yaml
|
||
# 此示例展示了在"推送镜像"步骤中使用的环境变量。
|
||
# 此变量允许你
|
||
# 将镜像发布到不安全的镜像仓库:
|
||
|
||
stages:
|
||
- name: Publish Image
|
||
steps:
|
||
- publishImageConfig:
|
||
dockerfilePath: ./Dockerfile
|
||
buildContext: .
|
||
tag: repo/app:v1
|
||
pushRemote: true
|
||
registry: example.com
|
||
env:
|
||
PLUGIN_INSECURE: "true"
|
||
```
|
||
|
||
## 步骤类型:发布商店应用模板
|
||
|
||
**发布商店应用模板**步骤将商店应用模板的版本(即 Helm Chart)发布到 Git 托管的镜像仓库。它生成一个 Git commit 并将其推送到你的 chart 仓库。要让这个步骤成功完成,需要源代码仓库中的 Chart 文件夹和专用流水线命名空间中的预配置密文。Chart 文件夹中的任何文件都支持[流水线变量替换参考](#流水线变量替换参考)中的变量。
|
||
|
||
### 通过 UI 配置发布商店应用的模板
|
||
|
||
1. 从**步骤类型**下拉菜单中,选择**发布商店应用模板**。
|
||
|
||
1. 完成表单的剩余部分。下面列出了每个字段的说明。完成后,请单击**添加**。
|
||
|
||
| 字段 | 描述 |
|
||
---------|----------|
|
||
| Chart 文件夹 | `Chart.yaml` 文件所在的源代码仓库中, chart 文件夹的相对路径。 |
|
||
| 商店应用模板名称 | 模板的名称。例如,wordpress。 |
|
||
| 商店应用模板版本 | 你要发布的模板版本,应该和 `Chart.yaml` 文件中定义的版本一致。 |
|
||
| 协议 | 可以选择使用 HTTP(S) 或 SSH 协议发布。 |
|
||
| 密文 | 存储 Git 凭证的密文。在添加此步骤之前,你需要在项目的专用流水线命名空间中创建一个密文。如果你使用 HTTP(S) 协议,请将 Git 用户名和密码存储在密文的 `USERNAME` 和 `PASSWORD` 键中。如果你使用 SSH 协议,请将 Git 部署密钥存储在密文的 `DEPLOY_KEY` 中。创建密文后,在此选项中选择它。 |
|
||
| Git URL | 用于发布模板的 chart 仓库的 Git URL。 |
|
||
| Git 分支 | 用于发布模板的 chart 仓库的 Git 分支。 |
|
||
| 提交者姓名 | Commit 消息中使用的提交者姓名。 |
|
||
| 提交者邮箱 | Commit 消息中使用的提交者邮箱。 |
|
||
|
||
|
||
### 通过 YAML 配置发布商店应用的模板
|
||
|
||
你可以直接在 `.rancher-pipeline.yml` 文件中添加**发布商店应用模板**步骤。
|
||
|
||
在 `steps` 中,使用 `publishCatalogConfig` 添加一个步骤。你需要提供以下信息:
|
||
|
||
* Path:`Chart.yaml` 文件所在的源代码仓库中, chart 文件夹的相对路径。
|
||
* CatalogTemplate:模板的名称。
|
||
* Version:你要发布的模板版本,应该和 `Chart.yaml` 文件中定义的版本一致。
|
||
* GitUrl:用于发布模板的 chart 仓库的 Git URL。
|
||
* GitBranch:用于发布模板的 chart 仓库的 Git 分支。
|
||
* GitAuthor:Commit 消息中使用的提交者姓名。
|
||
* GitEmail:Commit 消息中使用的提交者邮箱。
|
||
* Credentials:需要通过引用专用流水线命名空间中的密文来提供 Git 凭证。如果你使用 SSH 协议进行发布,请将部署密钥保存在 `DEPLOY_KEY` 环境变量中。如果你使用 HTTP(S) 协议进行发布,请将你的用户名和密码保存在 `USERNAME` 和 `PASSWORD` 环境变量中。
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Publish Wordpress Template
|
||
steps:
|
||
- publishCatalogConfig:
|
||
path: ./charts/wordpress/latest
|
||
catalogTemplate: wordpress
|
||
version: ${CICD_GIT_TAG}
|
||
gitUrl: git@github.com:myrepo/charts.git
|
||
gitBranch: master
|
||
gitAuthor: example-user
|
||
gitEmail: user@example.com
|
||
envFrom:
|
||
- sourceName: publish-keys
|
||
sourceKey: DEPLOY_KEY
|
||
```
|
||
|
||
## 步骤类型:部署 YAML
|
||
|
||
此步骤将任意 Kubernetes 资源部署到项目中。此部署需要 Kubernetes 清单文件存在于源代码仓库中。清单文件中支持流水线变量替换。你可以在 [GitHub](https://github.com/rancher/pipeline-example-go/blob/master/deployment.yaml) 中查看示例文件。有关可用变量的列表,请参阅[流水线变量替换参考](#流水线变量替换参考)。
|
||
|
||
### 通过 UI 配置 YAML 的部署
|
||
|
||
1. 从**步骤类型**下拉列表中,选择**部署 YAML** 并填写表单。
|
||
|
||
1. 输入 **YAML 路径**,即源代码中清单文件的路径。
|
||
|
||
1. 单击**添加**。
|
||
|
||
### 通过 YAML 配置 YAML 的部署
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Deploy
|
||
steps:
|
||
- applyYamlConfig:
|
||
path: ./deployment.yaml
|
||
```
|
||
|
||
## 步骤类型:部署商店应用
|
||
|
||
**部署商店应用**步骤用于在项目中部署商店应用。如果应用不存在,则将安装一个新应用,或升级现有应用。
|
||
|
||
### 通过 UI 配置商店应用的部署
|
||
|
||
1. 从**步骤类型**下拉菜单中,选择**部署商店应用**。
|
||
|
||
1. 完成表单的剩余部分。下面列出了每个字段的说明。完成后,请单击**添加**。
|
||
|
||
| 字段 | 描述 |
|
||
---------|----------|
|
||
| Catalog | 将使用应用模板的商店应用。 |
|
||
| 模板名称 | 应用模板的名称。例如,wordpress。 |
|
||
| 模板版本 | 要部署的应用模板的版本。 |
|
||
| 命名空间 | 要部署应用的目标命名空间。 |
|
||
| 应用名称 | 要部署的应用的名称。 |
|
||
| 答案 | 用于部署应用的答案的键值对。 |
|
||
|
||
|
||
### 通过 YAML 配置商店应用的部署
|
||
|
||
你可以直接在 `.rancher-pipeline.yml` 文件中添加**部署商店应用**步骤。
|
||
|
||
在 `steps` 中,使用 `applyAppConfig` 添加一个步骤。你需要提供以下信息:
|
||
|
||
* CatalogTemplate:模板的 ID。你可以单击`启动应用`,并选择该应用的`查看详情`来找到 ID。它是 URL 的最后一部分。
|
||
* Version:要部署的模板的版本。
|
||
* Answers:用于部署应用的答案的键值对。
|
||
* Name:要部署的应用的名称。
|
||
* TargetNamespace:要部署应用的目标命名空间。
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Deploy App
|
||
steps:
|
||
- applyAppConfig:
|
||
catalogTemplate: cattle-global-data:library-mysql
|
||
version: 0.3.8
|
||
answers:
|
||
persistence.enabled: "false"
|
||
name: testmysql
|
||
targetNamespace: test
|
||
```
|
||
|
||
## 超时
|
||
|
||
默认情况下,每个流水线执行的超时时间为 60 分钟。如果流水线执行无法在超时期限内完成,则流水线将中止。
|
||
|
||
### 通过 UI 配置超时
|
||
|
||
在**超时**字段中输入所需的值。
|
||
|
||
### 通过 YAML 配置超时
|
||
|
||
在 `timeout` 中,输入超时值(以分钟为单位)。
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: ls
|
||
# 以分钟为单位的超时
|
||
timeout: 30
|
||
```
|
||
|
||
## 通知
|
||
|
||
你可以根据流水线的构建状态,启用对通知器的通知。在启用通知之前,Rancher 建议你先设置通知器,以便立即添加收件人。
|
||
|
||
### 通过 UI 配置通知
|
||
|
||
1. 在**通知**中,单击**启用**以打开通知。
|
||
|
||
1. 选择通知的条件。你可以选择接收以下状态的通知:`失败`、`成功`或`已更改`。例如,如果你想在执行失败时接收通知,请选择**失败**。
|
||
|
||
1. 如果你没有现有的通知器,Rancher 会提示未设置通知器的警告,并显示跳转到通知器页面的链接。你可以按照[说明](https://github.com/rancher/rancher-docs/tree/main/archived_docs/en/version-2.0-2.4/explanations/integrations-in-rancher/notifiers.md)添加通知器。如果你已经有通知器,你可以单击**添加收件人**按钮,将他们添加到通知中。
|
||
|
||
:::note
|
||
|
||
通知器是在集群级别配置的,需要不同级别的权限。
|
||
|
||
:::
|
||
|
||
1. 在下拉列表中为每个收件人选择通知器类型。根据通知器的类型,你可以使用默认收件人或覆盖收件人。例如,如果你有 _Slack_ 通知器,你可以更新通知发送的频道。你可以通过单击**添加收件人**来添加其他通知。
|
||
|
||
### 通过 YAML 配置通知
|
||
|
||
在 `notification` 中,你需要提供以下信息:
|
||
|
||
* **Recipients**:接收通知的通知器/收件人的列表。
|
||
* **Notifier**:通知器的 ID。你可以先找到通知器,并选择**在 API 中查看**来获取 ID。
|
||
* **Recipient**:根据通知器的类型,你可以使用“默认收件人”,或使用不同的收件人来覆盖默认收件人。例如,在配置 slack 通知器时,你选择一个频道作为默认收件人,但如果你想将通知发送到不同的频道,你也可以选择不同的收件人。
|
||
* **Condition**:发送通知的条件。
|
||
* **Message(可选)**:如果你想更改默认通知消息,你可以在 yaml 中进行编辑。注意:此选项在 UI 中不可用。
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: ls
|
||
notification:
|
||
recipients:
|
||
- # Recipient
|
||
recipient: "#mychannel"
|
||
# Notifier 的 ID
|
||
notifier: "c-wdcsr:n-c9pg7"
|
||
- recipient: "test@example.com"
|
||
notifier: "c-wdcsr:n-lkrhd"
|
||
# 选择发送通知的条件
|
||
condition: ["Failed", "Success", "Changed"]
|
||
# 覆盖默认消息(可选)
|
||
message: "my-message"
|
||
```
|
||
|
||
## 触发器和触发器规则
|
||
|
||
配置流水线后,你可以使用不同的方法触发它:
|
||
|
||
- **手动**:
|
||
|
||
配置流水线后,你可以使用 Rancher UI 中的最新 CI 定义来触发构建。流水线执行被触发后,Rancher 会动态配置一个 Kubernetes pod 来运行你的 CI 任务,然后在完成后将该 Pod 移除。
|
||
|
||
- **自动**:
|
||
|
||
为流水线启用仓库后,Webhook 会自动添加到版本控制系统中。当项目用户通过推送代码、新建 PR 或创建标签与仓库交互时,版本控制系统会向 Rancher Server 发送一个 webhook,从而触发流水线执行。
|
||
|
||
要使用此自动化,仓库需要 webhook 管理权限。因此,当用户进行身份验证并 fetch 仓库时,只会显示他们具有 webhook 管理权限的仓库。
|
||
|
||
你可以创建触发规则,从而对流水线配置中的流水线执行进行细粒度控制。触发规则有两种:
|
||
|
||
- **Run this when**:在触发器被显式触发时,此类规则将启动流水线、阶段或步骤。
|
||
|
||
- **Do Not Run this when**:当触发器被显式触发时,这类规则会跳过流水线、阶段或步骤。
|
||
|
||
如果所有条件都评估为 `true`,则执行流水线/阶段/步骤。否则将会跳过。跳过流水线时,不会执行任何流水线。如果一个阶段/步骤被跳过了,它会被认为是成功的,而且后续阶段/步骤会继续运行。
|
||
|
||
`branch` 条件支持通配符 (`*`) 扩展。
|
||
|
||
### 配置流水线触发器
|
||
|
||
1. 在左上角,单击 **☰ > 集群管理**。
|
||
1. 转到要配置流水线的集群,然后单击 **Explore**。
|
||
1. 在顶部导航栏的下拉菜单中,选择要配置流水线的项目。
|
||
1. 在左侧导航栏中,单击 **Legacy > 项目 > 流水线**。
|
||
1. 在要管理触发器规则的仓库中,选择 **⋮ > 编辑配置**。
|
||
1. 点击**显示高级选项**。
|
||
1. 在**触发器**中,配置规则以运行或跳过流水线。
|
||
|
||
1. 单击**添加规则**。在**值**字段中,输入触发流水线的分支名称。
|
||
|
||
1. **可选**:添加更多触发构建的分支。
|
||
|
||
1. 单击**完成**。
|
||
|
||
### 配置阶段触发器
|
||
|
||
1. 在左上角,单击 **☰ > 集群管理**。
|
||
1. 转到要配置流水线的集群,然后单击 **Explore**。
|
||
1. 在顶部导航栏的下拉菜单中,选择要配置流水线的项目。
|
||
1. 在左侧导航栏中,单击 **Legacy > 项目 > 流水线**。
|
||
1. 在要管理触发器规则的仓库中,选择 **⋮ > 编辑配置**。
|
||
1. 找到要用于管理触发规则的**阶段**,单击该阶段的**编辑**图标。
|
||
1. 单击**显示高级选项**。
|
||
1. 在**触发器**中,配置规则以运行或跳过阶段。
|
||
|
||
1. 单击**添加规则**。
|
||
|
||
1. 选择触发阶段的**类型**并输入一个值。
|
||
|
||
| 类型 | 值 |
|
||
| ------ | -------------------------------------------------------------------- |
|
||
| 分支 | 触发阶段的分支名称。 |
|
||
| 事件 | 触发阶段的事件类型。可选值为 `Push`,`Pull Request` 和 `Tag`。 |
|
||
|
||
1. 单击**保存**。
|
||
|
||
### 配置步骤触发器
|
||
|
||
1. 在左上角,单击 **☰ > 集群管理**。
|
||
1. 转到要配置流水线的集群,然后单击 **Explore**。
|
||
1. 在顶部导航栏的下拉菜单中,选择要配置流水线的项目。
|
||
1. 在左侧导航栏中,单击 **Legacy > 项目 > 流水线**。
|
||
1. 在要管理触发器规则的仓库中,选择 **⋮ > 编辑配置**。
|
||
1. 找到要用于管理触发规则的**步骤**,单击该步骤的**编辑**图标。
|
||
1. 单击**显示高级选项**。
|
||
1. 在**触发器**中,配置规则以运行或跳过步骤。
|
||
|
||
1. 单击**添加规则**。
|
||
|
||
1. 选择触发步骤的**类型**并输入一个值。
|
||
|
||
| 类型 | 值 |
|
||
| ------ | -------------------------------------------------------------------- |
|
||
| 分支 | 触发步骤的分支名称。 |
|
||
| 事件 | 触发步骤的事件类型。可选值为 `Push`,`Pull Request` 和 `Tag`。 |
|
||
|
||
1. 单击**保存**。
|
||
|
||
|
||
### 通过 YAML 配置触发器
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
# 阶段的条件
|
||
when:
|
||
branch: master
|
||
event: [ push, pull_request ]
|
||
# 多个步骤并发运行
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: date -R
|
||
# 步骤条件
|
||
when:
|
||
branch: [ master, dev ]
|
||
event: push
|
||
# 流水线的分支条件
|
||
branch:
|
||
include: [ master, feature/*]
|
||
exclude: [ dev ]
|
||
```
|
||
|
||
## 环境变量
|
||
|
||
配置流水线时,某些[步骤类型](#步骤类型)会允许你使用环境变量来配置步骤的脚本。
|
||
|
||
### 通过 UI 配置环境变量
|
||
|
||
1. 在左上角,单击 **☰ > 集群管理**。
|
||
1. 转到要配置流水线的集群,然后单击 **Explore**。
|
||
1. 在顶部导航栏的下拉菜单中,选择要配置流水线的项目。
|
||
1. 在左侧导航栏中,单击 **Legacy > 项目 > 流水线**。
|
||
1. 找到要编辑构建触发器的流水线,然后选择 **⋮ > 编辑配置**。
|
||
1. 在其中一个阶段中,找到要为其添加环境变量的**步骤**,然后单击**编辑**图标。
|
||
1. 单击**显示高级选项**。
|
||
1. 单击**添加变量**,然后在出现的字段中输入键和值。根据需要添加更多的变量。
|
||
1. 将你的环境变量添加到脚本或文件中。
|
||
1. 单击**保存**。
|
||
|
||
### 通过 YAML 配置环境变量
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: echo ${FIRST_KEY} && echo ${SECOND_KEY}
|
||
env:
|
||
FIRST_KEY: VALUE
|
||
SECOND_KEY: VALUE2
|
||
```
|
||
|
||
## 密文
|
||
|
||
如果你需要在流水线脚本中使用安全敏感信息(如密码),你可以使用 Kubernetes [密文](../../how-to-guides/new-user-guides/kubernetes-resources-setup/secrets.md)来传入这些信息。
|
||
|
||
### 先决条件
|
||
在与流水线相同的项目中创建一个密文,或者在运行流水线构建 pod 的命名空间中显式创建一个密文。
|
||
<br/>
|
||
|
||
:::note
|
||
|
||
[PR 事件](#触发器和触发器规则)中的密文传入是禁用的。
|
||
|
||
:::
|
||
|
||
### 通过 UI 配置密文
|
||
|
||
1. 在左上角,单击 **☰ > 集群管理**。
|
||
1. 转到要配置流水线的集群,然后单击 **Explore**。
|
||
1. 在顶部导航栏的下拉菜单中,选择要配置流水线的项目。
|
||
1. 在左侧导航栏中,单击 **Legacy > 项目 > 流水线**。
|
||
1. 找到要编辑构建触发器的流水线,然后选择 **⋮ > 编辑配置**。
|
||
1. 在其中一个阶段中,找到要使用密文的**步骤**,然后单击**编辑**图标。
|
||
1. 单击**显示高级选项**。
|
||
1. 单击**使用密文添加**。选择要使用的密文文件。然后选择密钥。或者,你也可以输入密钥的别名。
|
||
1. 单击**保存**。
|
||
|
||
### 通过 YAML 配置密文
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: echo ${ALIAS_ENV}
|
||
# 来自项目密文的环境变量
|
||
envFrom:
|
||
- sourceName: my-secret
|
||
sourceKey: secret-key
|
||
targetKey: ALIAS_ENV
|
||
```
|
||
|
||
## 流水线变量替换参考
|
||
|
||
为了方便你的使用,我们提供了以下在流水线配置脚本中可以使用的变量。在流水线执行期间,这些变量会被元数据替换。你可以使用 `${VAR_NAME}` 格式引用这些变量。
|
||
|
||
| 变量名称 | 描述 |
|
||
------------------------|------------------------------------------------------------
|
||
| `CICD_GIT_REPO_NAME` | 仓库名称(省略 GitHub 组织)。 |
|
||
| `CICD_GIT_URL` | Git 仓库的 URL。 |
|
||
| `CICD_GIT_COMMIT` | 正在执行的 Git commit ID。 |
|
||
| `CICD_GIT_BRANCH` | 此事件的 Git 分支。 |
|
||
| `CICD_GIT_REF` | 此事件的 Git 参考规范。 |
|
||
| `CICD_GIT_TAG` | Git 标签名称,在标签事件上设置。 |
|
||
| `CICD_EVENT` | 触发构建的事件(`push`、`pull_request` 或 `tag`)。 |
|
||
| `CICD_PIPELINE_ID` | 流水线的 Rancher ID。 |
|
||
| `CICD_EXECUTION_SEQUENCE` | 流水线的生成号(build number)。 |
|
||
| `CICD_EXECUTION_ID` | `{CICD_PIPELINE_ID}-{CICD_EXECUTION_SEQUENCE}` 的组合。 |
|
||
| `CICD_REGISTRY` | 上一个发布镜像步骤的 Docker 镜像仓库地址,可在`部署 YAML` 步骤的 Kubernetes 清单文件中找到。 |
|
||
| `CICD_IMAGE` | 上一个发布镜像步骤构建的镜像的名称,可在 `Deploy YAML` 步骤的 Kubernetes 清单文件中找到。不包含镜像标签。<br/><br/> [示例](https://github.com/rancher/pipeline-example-go/blob/master/deployment.yaml) |
|
||
|
||
## 全局流水线执行设置
|
||
|
||
配置版本控制提供商后,你可以在 Rancher 中全局配置流水线的几个执行选项。
|
||
|
||
### 更改流水线设置
|
||
|
||
:::note 先决条件:
|
||
|
||
由于流水线应用已被弃用并替换为 Fleet,因此在使用流水线之前,你需要打开旧版功能的功能开关。请注意,我们不再支持 Kubernetes 1.21+ 中的流水线。
|
||
|
||
1. 在左上角,单击 **☰ > 全局设置**。
|
||
1. 单击**功能开关**。
|
||
1. 转到`旧版应用 `功能开关并单击 **⋮ > 激活**。
|
||
|
||
:::
|
||
|
||
要编辑这些设置:
|
||
|
||
1. 在左上角,单击 **☰ > 集群管理**。
|
||
1. 转到要配置流水线的集群,然后单击 **Explore**。
|
||
1. 在顶部导航栏的下拉菜单中,选择要配置流水线的项目。
|
||
1. 在左侧导航栏中,单击 **Legacy > 项目 > 流水线**。
|
||
|
||
- [Executor 配额](#executor-配额)
|
||
- [Executor 的资源配额](#executor-的资源配额)
|
||
- [自定义 CA](#自定义-ca)
|
||
|
||
### Executor 配额
|
||
|
||
选择流水线 Executor 的最大数量。_executor 配额_ 决定了项目中可以同时运行多少个构建。如果触发的构建数量超过配额,后续构建将排队并等待空缺。默认情况下,配额为 `2`。如果配置为 `0` 或更小的值,则表示删除配额限制。
|
||
|
||
### Executor 的资源配额
|
||
|
||
为 Jenkins Agent 容器配置计算资源。当触发流水线执行时,会动态配置构建 pod 以运行你的 CI 任务。在底层,一个构建 pod 由一个 Jenkins Agent 容器和一个用于各个流水线步骤的容器组成。你可以为 pod 中的每个容器[管理计算资源](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)。
|
||
|
||
编辑**内存预留**、**内存限制**、**CPU 预留**或 **CPU 限制**,然后点击**更新限制和预留**。
|
||
|
||
要为流水线步骤容器配置计算资源:
|
||
|
||
你可以在 `.rancher-pipeline.yml` 文件中为流水线步骤容器配置计算资源。
|
||
|
||
在步骤中,你需要提供以下信息:
|
||
|
||
* **CPU 预留 (`CpuRequest`)**:对流水线步骤的容器的 CPU 请求。
|
||
* **CPU 预留 (`CpuRequest`)**:对流水线步骤的容器的 CPU 限制。
|
||
* **内存预留 (`MemoryRequest`)**:对流水线步骤的容器的内存请求。
|
||
* **内存限制(`MemoryLimit`)**:对流水线步骤的容器的内存限制。
|
||
|
||
```yaml
|
||
# 示例
|
||
stages:
|
||
- name: Build something
|
||
steps:
|
||
- runScriptConfig:
|
||
image: busybox
|
||
shellScript: ls
|
||
cpuRequest: 100m
|
||
cpuLimit: 1
|
||
memoryRequest:100Mi
|
||
memoryLimit: 1Gi
|
||
- publishImageConfig:
|
||
dockerfilePath: ./Dockerfile
|
||
buildContext: .
|
||
tag: repo/app:v1
|
||
cpuRequest: 100m
|
||
cpuLimit: 1
|
||
memoryRequest:100Mi
|
||
memoryLimit: 1Gi
|
||
```
|
||
|
||
:::note
|
||
|
||
Rancher 为流水线步骤设置了默认计算资源(`构建和发布镜像`和`运行脚本`步骤除外)。你可以通过指定计算资源来覆盖默认值。
|
||
|
||
:::
|
||
|
||
### 自定义 CA
|
||
|
||
如果你想将版本控制提供商与自定义/内部 CA 根证书一起使用,则需要将 CA 根证书添加到版本控制提供商的配置中,从而让流水线构建 pod 成功运行。
|
||
|
||
1. 单击**编辑证书**。
|
||
|
||
1. 粘贴 CA 根证书并单击**保存 CA 证书**。
|
||
|
||
**结果**:你现在可以使用流水线,而且新的 pod 将能够使用自签名证书。
|
||
|
||
## 流水线组件的持久化数据
|
||
|
||
默认情况下,内部 Docker 镜像仓库和 Minio 工作负载都使用临时卷。这是开箱即用的默认存储方式,能让测试变得更加便利。但如果运行 Docker 镜像仓库或 Minio 的节点出现故障,你将丢失构建镜像和构建日志。在大多数情况下,这不是太大的问题。如果你希望构建镜像和日志能够在节点故障中幸免于难,你可以让 Docker 镜像仓库和 Minio 使用持久卷。
|
||
|
||
有关为流水线设置持久存储的详细信息,请参阅[此页面](configure-persistent-data.md)。
|
||
|
||
## 示例 rancher-pipeline.yml
|
||
|
||
如果你需要查看示例流水线配置文件,请参见[此页面](example-yaml.md)。
|