... | ... | @@ -4,14 +4,14 @@ |
|
|
|
|
|
流水线包括:
|
|
|
|
|
|
* 流水线任务,定义*要做*什么。 例如,编译或测试代码的流水线任务。
|
|
|
* Stages,定义*何时*运行流水线任务。 例如,在编译代码的阶段之后运行测试的阶段。
|
|
|
* 流水线任务,定义*要做* 什么。 例如,编译或测试代码的流水线任务。
|
|
|
* Stages,定义*何时* 运行流水线任务。 例如,在编译代码的阶段之后运行测试的阶段。
|
|
|
|
|
|
流水线任务由[Runners](/docs/ci/runners)执行。 如果有足够的并发 runners,则可以并行执行同一阶段中的多个流水线任务。
|
|
|
流水线任务由 [Runners](/docs/ci/runners) 执行。 如果有足够的并发 runners,则可以并行执行同一阶段中的多个流水线任务。
|
|
|
|
|
|
如果一个stage中的*所有*流水线任务都成功,则流水线将继续进行下一个stage。
|
|
|
如果一个stage中的*所有* 流水线任务都成功,则流水线将继续进行下一个 stage。
|
|
|
|
|
|
如果某个stage中的任何流水线任务失败,则(通常)不会执行下一stage,并且流水线会提前结束。
|
|
|
如果某个 stage 中的任何流水线任务失败,则(通常)不会执行下一个 stage,并且流水线会提前结束。
|
|
|
|
|
|
通常,流水线是自动执行的,创建后就无需干预。 但是,有时你还可以手动与流水线进行交互。
|
|
|
|
... | ... | @@ -22,7 +22,7 @@ |
|
|
* 一个`staging`阶段,其流水线任务称为`deploy-to-stage` 。
|
|
|
* 一个`production`阶段,其流水线任务称为`deploy-to-prod` 。
|
|
|
|
|
|
**注意:**如果你有[从 CODECHINA 提取镜像的仓库](/docs/user/project/repo/repo_mirror#pulling-from-a-remote-repository-starter),则可能需要在项目的**设置>仓库>镜像仓库>触发流水线更新镜像**中启用流水线触发。
|
|
|
**注意:**如果你有[从 CODECHINA 提取镜像的仓库](/docs/user/project/repo/repo-mirror#pulling-from-a-remote-repository-starter),则可能需要在项目的**设置 >仓库 >镜像仓库 >触发流水线更新镜像**中启用流水线触发。
|
|
|
|
|
|
## 流水线类型[](#types-of-pipelines "Permalink")
|
|
|
|
... | ... | @@ -40,7 +40,7 @@ |
|
|
|
|
|
在 CI/CD 流水线配置文件中为每个项目定义了流水线及其组件流水线任务和 stages。
|
|
|
|
|
|
* [流水线任务](../jobs/index)是基本的配置组件。
|
|
|
* 流水线任务是基本的配置组件。
|
|
|
* Stages 是通过使用[`stages`](/docs/ci/yaml#stages)关键字定义的。
|
|
|
|
|
|
有关 CI 流水线文件中配置选项的列表,请参见《 [CODECHINA CI/CD 流水线配置参考》](/docs/ci/yaml) 。
|
... | ... | @@ -53,9 +53,9 @@ |
|
|
|
|
|
### 查看流水线[](#view-pipelines "Permalink")
|
|
|
|
|
|
你可以在项目的**CI/CD>流水线**页面下找到当前和历史流水线运行。你还可以通过导航到" **流水线"**选项卡来访问合并请求的**流水线** 。
|
|
|
你可以在项目的 **DevOps >流水线**页面下找到当前和历史流水线运行。你还可以通过导航到 **流水线**选项卡来访问合并请求的**流水线** 。
|
|
|
|
|
|
[![Pipelines index page](img/44be1cce97f886ea1f1c93950d764041.png)](img/pipelines_index_v13_0.png)
|
|
|
[![Pipelines index page](/docs/img/pipelines_index.png)](/docs/img/pipelines_index.png)
|
|
|
|
|
|
单击流水线打开**流水线详细信息**页面,并显示为该流水线运行的任务。在这里,你可以取消正在运行的流水线,在发生故障的流水线上重试流水线任务或[删除流水线](#delete-a-pipeline)。
|
|
|
|
... | ... | @@ -63,7 +63,7 @@ |
|
|
|
|
|
你可以通过以下方式过滤流水线列表:
|
|
|
|
|
|
* 触发作者
|
|
|
* 触发者
|
|
|
* 分支名称
|
|
|
* 状态
|
|
|
* 标签
|
... | ... | @@ -76,10 +76,10 @@ |
|
|
|
|
|
要手动执行流水线:
|
|
|
|
|
|
1. 导航到项目的**CI/CD>流水线** 。
|
|
|
1. 导航到项目的 **DevOps >流水线** 。
|
|
|
2. 单击**运行流水线**按钮。
|
|
|
3. 在 **运行流水线**页面上:
|
|
|
1. 在 **运行分支或 tag**字段中选择要为其运行流水线的分支或 tag。
|
|
|
1. 在 **运行分支或 tag** 字段中选择要为其运行流水线的分支或 tag。
|
|
|
2. 输入流水线运行所需的任何[环境变量](/docs/ci/variables) 。
|
|
|
3. 单击**运行流水线**按钮。
|
|
|
|
... | ... | @@ -87,7 +87,7 @@ |
|
|
|
|
|
### 使用 URL 查询字符串运行流水线[](#run-a-pipeline-by-using-a-url-query-string "Permalink")
|
|
|
|
|
|
你可以使用查询字符串来预填充" **运行流水线"**页面。 例如,查询字符串使用以下内容`.../pipelines/new?ref=my_branch&var[foo]=bar&file_var[file_foo]=file_bar`预填充" **运行流水线"**页面:
|
|
|
你可以使用查询字符串来预填充**运行流水线**页面。 例如,查询字符串使用以下内容`.../pipelines/new?ref=my_branch&var[foo]=bar&file_var[file_foo]=file_bar`预填充 **运行流水线** 页面:
|
|
|
|
|
|
- **运行** 字段: `my_branch`。
|
|
|
- **变量** 部分:
|
... | ... | @@ -118,7 +118,7 @@ |
|
|
|
|
|
你可以直接从流水线图执行此操作。 只需单击播放按钮即可执行该特定流水线任务。
|
|
|
|
|
|
例如,你的流水线可能会自动启动,但是需要手动操作才能[部署到生产中](../environments/index.html#configuring-manual-deployments)。在下面的示例中, `production`阶段有一个需要手动操作的工作。
|
|
|
例如,你的流水线可能会自动启动,但是需要手动操作才能部署到生产中。在下面的示例中, `production`阶段有一个需要手动操作的工作。
|
|
|
|
|
|
[![Pipelines example](/docs/img/pipelines.png)](/docs/img/pipelines.png)
|
|
|
|
... | ... | @@ -133,7 +133,7 @@ |
|
|
|
|
|
### 删除流水线[](#delete-a-pipeline "Permalink")
|
|
|
|
|
|
在项目中具有[所有者权限的](/docs/user/permissions)用户可以通过以下方式删除流水线:单击**CI/CD>流水线**以转到**流水线详细信息**页面,然后使用 **删除"**按钮。
|
|
|
在项目中具有[所有者权限的](/docs/user/permissions)用户可以通过以下方式删除流水线:单击 **CI/CD >流水线**以转到**流水线详细信息**页面,然后使用 **删除**按钮。
|
|
|
|
|
|
[![Pipeline Delete Button](/docs/img/pipeline-delete.png)](/docs/img/pipeline-delete.png)
|
|
|
|
... | ... | @@ -143,7 +143,7 @@ |
|
|
|
|
|
每个用户都有一个个人流水线配额,该配额跟踪所有个人项目中共享 runners 的使用情况。每个组都有一个使用配额 ,该配额跟踪该组内创建的所有项目的共享 runners 的使用。
|
|
|
|
|
|
触发流水线时,无论是谁触发的,都会使用项目所有者的[namespace](/docs/user/org#命名空间)的流水线配额。在这种情况下,namespace 可以是拥有项目的用户或组。
|
|
|
触发流水线时,无论是谁触发的,都会使用项目所有者的 [namespace](/docs/user/org#命名空间) 的流水线配额。在这种情况下,namespace 可以是拥有项目的用户或组。
|
|
|
|
|
|
#### 如何计算流水线持续时间[](#how-pipeline-duration-is-calculated "Permalink")
|
|
|
|
... | ... | @@ -183,16 +183,16 @@ A,B 和 C 的并集是(1、4)和(6、7)。 因此,总运行时间为 |
|
|
|
|
|
### 受保护分支上的流水线安全[](#pipeline-security-on-protected-branches "Permalink")
|
|
|
|
|
|
在[受保护的分支](/docs/user/project/protected_branches)上执行流水线时,将强制执行严格的安全模型。
|
|
|
在[受保护的分支](/docs/user/project/protected_branch)上执行流水线时,将强制执行严格的安全模型。
|
|
|
|
|
|
仅当[允许用户合并或推送到](/docs/user/project/protected_branches.html#using-the-allowed-to-merge-and-allowed-to-push-settings)该特定分支时,才可以在受保护的分支上执行以下操作:
|
|
|
仅当[允许用户合并或推送到](/docs/user/project/protected_branch#using-the-allowed-to-merge-and-allowed-to-push-settings)该特定分支时,才可以在受保护的分支上执行以下操作:
|
|
|
|
|
|
* 运行手动流水线(使用[Web UI](#run-a-pipeline-manually)或[流水线 API](#pipelines-api) )。
|
|
|
* 运行手动流水线(使用 [Web UI](#run-a-pipeline-manually)或[流水线 API](#pipelines-api) )。
|
|
|
* 运行预定的流水线。
|
|
|
* 使用触发器运行流水线。
|
|
|
* 在现有流水线上触发手动操作。
|
|
|
* 重试或取消现有流水线任务(使用 Web UI 或流水线 API)。
|
|
|
|
|
|
标记为**受保护的** **变量**只能由在受保护的分支上运行的流水线任务访问,从而防止不受信任的用户意外访问敏感信息,如部署凭据和令牌。
|
|
|
标记为**受保护的变量**只能由在受保护的分支上运行的流水线任务访问,从而防止不受信任的用户意外访问敏感信息,如部署凭据和令牌。
|
|
|
|
|
|
**Runners**标记为**保护**只能保护分支运行的流水线任务,防止不可信代码在受保护执行和不小心被访问保护部署密钥和其它凭证。 为了确保打算在受保护的 runner 上执行的流水线任务不会使用常规运行程序,必须对它们进行相应标记。 |
|
|
\ No newline at end of file |