|
# CODECHINA CI/CD 变量[](#gitlab-cicd-environment-variables "Permalink")
|
|
# CODECHINA CI/CD 变量[](#cicd-environment-variables "Permalink")
|
|
|
|
|
|
环境变量是一个动态命名的值,它可以影响正在运行的进程在操作系统上的行为方式。
|
|
环境变量是一个动态命名的值,它可以影响正在运行的进程在操作系统上的行为方式。
|
|
|
|
|
... | @@ -51,15 +51,15 @@ pages: |
... | @@ -51,15 +51,15 @@ pages: |
|
|
|
|
|
## 自定义 CI/CD 变量[](#custom-environment-variables "Permalink")
|
|
## 自定义 CI/CD 变量[](#custom-environment-variables "Permalink")
|
|
|
|
|
|
当需要特定的自定义环境变量时,可以[在 UI](#create-a-custom-variable-in-the-ui)、[API](../../api/project_level_variables.html)或直接[在`.codechina-ci.yml`文件中进行设置](#create-a-custom-variable-in-gitlab-ciyml) 。
|
|
当需要特定的自定义环境变量时,可以[在 UI](#create-a-custom-variable-in-the-ui)、[API](../../api/project_level_variables.html)或直接[在`.codechina-ci.yml`文件中进行设置](#create-a-custom-variable-in-ciyml) 。
|
|
|
|
|
|
每当流水线运行时,Runner 就会使用这些变量。 你还[可以手动覆盖特定流水线的变量值](../pipelines/index.html#specifying-variables-when-running-manual-jobs) 。
|
|
每当流水线运行时,Runner 就会使用这些变量。 你还[可以手动覆盖特定流水线的变量值](../pipelines/index.html#specifying-variables-when-running-manual-jobs) 。
|
|
|
|
|
|
变量有两种类型: **Variable**和**File** 。 你无法在`.codechina-ci.yml`文件中设置类型,但可以在 UI 和 API 中进行设置。
|
|
变量有两种类型: **Variable**和**File** 。 你无法在`.codechina-ci.yml`文件中设置类型,但可以在 UI 和 API 中进行设置。
|
|
|
|
|
|
### 在 `.codechina-ci.yml` 创建自定义变量[](#create-a-custom-variable-in-gitlab-ciyml "Permalink")
|
|
### 在 `.codechina-ci.yml` 创建自定义变量[](#create-a-custom-variable-in-ciyml "Permalink")
|
|
|
|
|
|
在[`.codechina-ci.yml`](/docs/ci/yaml.md#variables)文件中创建自定义`env_var`,在`variables` 下定义变量/值对:
|
|
在[`.codechina-ci.yml`](/docs/ci/yaml#variables)文件中创建自定义`env_var`,在`variables` 下定义变量/值对:
|
|
|
|
|
|
```
|
|
```
|
|
variables:
|
|
variables:
|
... | @@ -73,13 +73,13 @@ variables: |
... | @@ -73,13 +73,13 @@ variables: |
|
- echo "$TEST"
|
|
- echo "$TEST"
|
|
```
|
|
```
|
|
|
|
|
|
有关更多详细信息,请参见[`.codechina-ci.yml`定义的变量](#gitlab-ciyml-defined-variables) 。
|
|
有关更多详细信息,请参见[`.codechina-ci.yml`定义的变量](#ciyml-defined-variables) 。
|
|
|
|
|
|
### 在界面创建自定义变量[](#create-a-custom-variable-in-the-ui "Permalink")
|
|
### 在界面创建自定义变量[](#create-a-custom-variable-in-the-ui "Permalink")
|
|
|
|
|
|
在用户界面中,你可以添加或更新自定义环境变量:
|
|
在用户界面中,你可以添加或更新自定义环境变量:
|
|
|
|
|
|
1。 转到项目的**设置> CI/CD**,然后展开 **变量**部分。
|
|
1。 转到项目的**设置> DevOps**,然后展开 **变量**部分。
|
|
2。 单击**添加变量**按钮。 在" **添加变量**模式"中,填写详细信息:
|
|
2。 单击**添加变量**按钮。 在" **添加变量**模式"中,填写详细信息:
|
|
|
|
|
|
* **键** :必须是一行,没有空格,只能使用字母、数字或`_` 。
|
|
* **键** :必须是一行,没有空格,只能使用字母、数字或`_` 。
|
... | @@ -145,7 +145,7 @@ kubectl config set-cluster e2e --server="$KUBE_URL" --certificate-authority="$KU |
... | @@ -145,7 +145,7 @@ kubectl config set-cluster e2e --server="$KUBE_URL" --certificate-authority="$KU |
|
|
|
|
|
要屏蔽变量:
|
|
要屏蔽变量:
|
|
|
|
|
|
1. 转到**设置> CI/CD** 。
|
|
1. 转到**设置> DevOps** 。
|
|
2. 展开**变量**部分。
|
|
2. 展开**变量**部分。
|
|
3. 在你要保护的变量旁边,点击**编辑** 。
|
|
3. 在你要保护的变量旁边,点击**编辑** 。
|
|
4. 选择**掩码变量**复选框。
|
|
4. 选择**掩码变量**复选框。
|
... | @@ -164,7 +164,7 @@ kubectl config set-cluster e2e --server="$KUBE_URL" --certificate-authority="$KU |
... | @@ -164,7 +164,7 @@ kubectl config set-cluster e2e --server="$KUBE_URL" --certificate-authority="$KU |
|
|
|
|
|
### 保护自定义变量[](#protect-a-custom-variable "Permalink")
|
|
### 保护自定义变量[](#protect-a-custom-variable "Permalink")
|
|
|
|
|
|
变量可以被保护。 受保护的变量将安全地传递到仅在[受保护的分支](/docs/user/project/protected_branches.md)或[受保护的标签](/docs/user/project/protected_tags.md)上运行的流水线。 其他流水线不获取受保护的变量。
|
|
变量可以被保护。 受保护的变量将安全地传递到仅在[受保护的分支](/docs/user/project/protected_branches)或[受保护的标签](/docs/user/project/protected_tags)上运行的流水线。 其他流水线不获取受保护的变量。
|
|
|
|
|
|
要保护变量:
|
|
要保护变量:
|
|
|
|
|
... | @@ -174,7 +174,7 @@ kubectl config set-cluster e2e --server="$KUBE_URL" --certificate-authority="$KU |
... | @@ -174,7 +174,7 @@ kubectl config set-cluster e2e --server="$KUBE_URL" --certificate-authority="$KU |
|
4. 选择**保护变量**复选框。
|
|
4. 选择**保护变量**复选框。
|
|
5. Click **更新变量**。
|
|
5. Click **更新变量**。
|
|
|
|
|
|
该变量可用于所有后续流水线。 受保护的变量只能由拥有[维护者权限的](/docs/user/permissions.md#project-members-permissions)项目成员更新或查看。
|
|
该变量可用于所有后续流水线。 受保护的变量只能由拥有[维护者权限的](/docs/user/permissions#project-members-permissions)项目成员更新或查看。
|
|
|
|
|
|
### 由 GitLab 验证的自定义变量[](#custom-variables-validated-by-gitlab "Permalink")
|
|
### 由 GitLab 验证的自定义变量[](#custom-variables-validated-by-gitlab "Permalink")
|
|
|
|
|
... | @@ -299,7 +299,7 @@ export GITLAB_USER_EMAIL="user@example.com" |
... | @@ -299,7 +299,7 @@ export GITLAB_USER_EMAIL="user@example.com" |
|
export GITLAB_USER_ID="42"
|
|
export GITLAB_USER_ID="42"
|
|
```
|
|
```
|
|
|
|
|
|
## `.codechina-ci.yml` 定义的变量[](#gitlab-ciyml-defined-variables "Permalink")
|
|
## `.codechina-ci.yml` 定义的变量[](#ciyml-defined-variables "Permalink")
|
|
|
|
|
|
你可以将在构建环境中设置的变量添加到`.codechina-ci.yml` 。 这些变量保存在仓库中,它们旨在存储非敏感项目配置,例如`RAILS_ENV`或`DATABASE_URL` 。
|
|
你可以将在构建环境中设置的变量添加到`.codechina-ci.yml` 。 这些变量保存在仓库中,它们旨在存储非敏感项目配置,例如`RAILS_ENV`或`DATABASE_URL` 。
|
|
|
|
|
... | @@ -333,12 +333,12 @@ script: |
... | @@ -333,12 +333,12 @@ script: |
|
|
|
|
|
组级变量可以通过以下方式添加:
|
|
组级变量可以通过以下方式添加:
|
|
|
|
|
|
1. 导航到组的**设置> CI/CD**页面。
|
|
1. 导航到组的**设置> DevOps**页面。
|
|
2. 在 **变量**部分中输入变量类型,键和值。 [子组的](/docs/user/org/sub_org.md_)任何变量将被递归继承。
|
|
2. 在 **变量**部分中输入变量类型,键和值。 [子组的](/docs/user/org/sub_org_)任何变量将被递归继承。
|
|
|
|
|
|
设置它们后,它们将可用于所有后续流水线。 可以通过以下方式在项目中查看任何组级用户定义的变量:
|
|
设置它们后,它们将可用于所有后续流水线。 可以通过以下方式在项目中查看任何组级用户定义的变量:
|
|
|
|
|
|
1. 导航到项目的**设置> CI/CD**页面。
|
|
1. 导航到项目的**设置> DevOps**页面。
|
|
2. 展开**变量**部分。
|
|
2. 展开**变量**部分。
|
|
|
|
|
|
[![CI/CD settings - inherited variables](img/bcbedbd56c50879eb35c2fc2f534d693.png)](img/inherited_group_variables_v12_5.png)
|
|
[![CI/CD settings - inherited variables](img/bcbedbd56c50879eb35c2fc2f534d693.png)](img/inherited_group_variables_v12_5.png)
|
... | @@ -353,7 +353,7 @@ script: |
... | @@ -353,7 +353,7 @@ script: |
|
|
|
|
|
要添加实例级变量:
|
|
要添加实例级变量:
|
|
|
|
|
|
1. 导航到管理区域的**设置> CI/CD**,然后展开 **变量**部分。
|
|
1. 导航到管理区域的**设置> DevOps**,然后展开 **变量**部分。
|
|
2. 单击**添加变量**按钮,然后填写详细信息:
|
|
2. 单击**添加变量**按钮,然后填写详细信息:
|
|
|
|
|
|
* **键** :必须为一行,只能使用字母,数字或`_` (下划线),且不能有空格。
|
|
* **键** :必须为一行,只能使用字母,数字或`_` (下划线),且不能有空格。
|
... | @@ -386,7 +386,7 @@ Feature.enable(:instance_variables_ui) |
... | @@ -386,7 +386,7 @@ Feature.enable(:instance_variables_ui) |
|
|
|
|
|
该功能利用了[`artifacts:reports:dotenv`](../pipelines/job_artifacts.html#artifactsreportsdotenv)报告功能。
|
|
该功能利用了[`artifacts:reports:dotenv`](../pipelines/job_artifacts.html#artifactsreportsdotenv)报告功能。
|
|
|
|
|
|
带有[`dependencies`](/docs/ci/yaml.md#dependencies)关键字的示例。
|
|
带有[`dependencies`](/docs/ci/yaml#dependencies)关键字的示例。
|
|
|
|
|
|
```
|
|
```
|
|
build:
|
|
build:
|
... | @@ -405,7 +405,7 @@ deploy: |
... | @@ -405,7 +405,7 @@ deploy: |
|
- build
|
|
- build
|
|
```
|
|
```
|
|
|
|
|
|
带[`needs`](/docs/ci/yaml.md#artifact-downloads-with-needs)关键字的示例:
|
|
带[`needs`](/docs/ci/yaml#artifact-downloads-with-needs)关键字的示例:
|
|
|
|
|
|
```
|
|
```
|
|
build:
|
|
build:
|
... | @@ -431,7 +431,7 @@ deploy: |
... | @@ -431,7 +431,7 @@ deploy: |
|
|
|
|
|
变量的优先顺序为(从最高到最低):
|
|
变量的优先顺序为(从最高到最低):
|
|
|
|
|
|
1. 触发器变量, [计划的流水线变量](/docs/ci/pipelines/schedules.md#using-variables)和[手动流水线运行变量](#override-a-variable-by-manually-running-a-pipeline) 。
|
|
1. 触发器变量, [计划的流水线变量](/docs/ci/pipelines/schedules#using-variables)和[手动流水线运行变量](#override-a-variable-by-manually-running-a-pipeline) 。
|
|
2. 项目级 [变量](#custom-environment-variables) 或[受保护变量](#protect-a-custom-variable)。
|
|
2. 项目级 [变量](#custom-environment-variables) 或[受保护变量](#protect-a-custom-variable)。
|
|
3. 组织级 [变量](#group-level-environment-variables)或[受保护变量](#protect-a-custom-variable)。
|
|
3. 组织级 [变量](#group-level-environment-variables)或[受保护变量](#protect-a-custom-variable)。
|
|
4. [继承环境变量](#inherit-environment-variables)。
|
|
4. [继承环境变量](#inherit-environment-variables)。
|
... | @@ -471,7 +471,7 @@ deploy: |
... | @@ -471,7 +471,7 @@ deploy: |
|
|
|
|
|
### 通过手动运行流水线覆盖变量[](#override-a-variable-by-manually-running-a-pipeline "Permalink")
|
|
### 通过手动运行流水线覆盖变量[](#override-a-variable-by-manually-running-a-pipeline "Permalink")
|
|
|
|
|
|
你可以通过[手动运行流水线](/docs/ci/pipelines.md#run-a-pipeline-manually)来覆盖当前变量的值。
|
|
你可以通过[手动运行流水线](/docs/ci/pipelines#run-a-pipeline-manually)来覆盖当前变量的值。
|
|
|
|
|
|
例如,假设你添加了一个名为`$TEST`的自定义变量,并且想在手动流水线中覆盖它。
|
|
例如,假设你添加了一个名为`$TEST`的自定义变量,并且想在手动流水线中覆盖它。
|
|
|
|
|
... | @@ -489,8 +489,8 @@ runner 将覆盖先前设置的值,并将自定义值用于此特定流水线 |
... | @@ -489,8 +489,8 @@ runner 将覆盖先前设置的值,并将自定义值用于此特定流水线 |
|
|
|
|
|
在`.codechina-ci.yml` ,变量表达式可同时用于以下两种情况:
|
|
在`.codechina-ci.yml` ,变量表达式可同时用于以下两种情况:
|
|
|
|
|
|
* [`rules`](/docs/ci/yaml.md#rules) ,这是推荐的方法,以及
|
|
* [`rules`](/docs/ci/yaml#rules) ,这是推荐的方法,以及
|
|
* [`only`和`except`](/docs/ci/yaml.md#onlyexcept-basic) ,它们是不推荐使用的候选对象。
|
|
* [`only`和`except`](/docs/ci/yaml#onlyexcept-basic) ,它们是不推荐使用的候选对象。
|
|
|
|
|
|
与变量和触发的流水线变量结合使用时,这特别有用。
|
|
与变量和触发的流水线变量结合使用时,这特别有用。
|
|
|
|
|
... | @@ -508,7 +508,7 @@ deploy: |
... | @@ -508,7 +508,7 @@ deploy: |
|
|
|
|
|
如果`only`使用时`variables`任何条件评估为 true,则会创建一个新流水线任务。 如果在使用`except`任何表达式的结果为 true,则不会创建流水线任务。
|
|
如果`only`使用时`variables`任何条件评估为 true,则会创建一个新流水线任务。 如果在使用`except`任何表达式的结果为 true,则不会创建流水线任务。
|
|
|
|
|
|
这遵循[`only` / `except`策略](/docs/ci/yaml.md#onlyexcept-advanced)的常规规则。
|
|
这遵循[`only` / `except`策略](/docs/ci/yaml#onlyexcept-advanced)的常规规则。
|
|
|
|
|
|
### CI/CD 变量表达式的语法[](#syntax-of-environment-variable-expressions "Permalink")
|
|
### CI/CD 变量表达式的语法[](#syntax-of-environment-variable-expressions "Permalink")
|
|
|
|
|
... | @@ -623,7 +623,7 @@ testvariable: |
... | @@ -623,7 +623,7 @@ testvariable: |
|
|
|
|
|
如果一项工作没有按预期进行,则可能使问题难以调查。 在这种情况下,你可以在`.codechina-ci.yml`启用调试跟踪。此功能启用 shell 的执行日志,从而产生详细的流水线任务日志,其中列出了所有已运行的命令,已设置的变量等。
|
|
如果一项工作没有按预期进行,则可能使问题难以调查。 在这种情况下,你可以在`.codechina-ci.yml`启用调试跟踪。此功能启用 shell 的执行日志,从而产生详细的流水线任务日志,其中列出了所有已运行的命令,已设置的变量等。
|
|
|
|
|
|
在启用此功能之前,你应确保流水线任务[仅对团队成员](/docs/user/permissions.md#project-features)可见。 你还应该清除所有生成的流水线任务日志,然后才能再次显示它们。
|
|
在启用此功能之前,你应确保流水线任务[仅对团队成员](/docs/user/permissions#project-features)可见。 你还应该清除所有生成的流水线任务日志,然后才能再次显示它们。
|
|
|
|
|
|
要启用调试日志(跟踪),请将`CI_DEBUG_TRACE`变量设置为`true` :
|
|
要启用调试日志(跟踪),请将`CI_DEBUG_TRACE`变量设置为`true` :
|
|
|
|
|
... | | ... | |