

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用用户定义的变量
<a name="workflows-using-variables"></a>

*用户定义的变量*是您定义的键-值对。这些变量分为两种类型：
+ **纯文本变量**，简称为**变量** – 这些是您在工作流定义文件中以纯文本形式定义的键-值对。
+ **密钥** — 这些是您在 Ama CodeCatalyst zon 控制台的单独**密钥**页面上定义的键值对。*键*（名称）是一个公共标签，*值*包含您要保密的信息。您只能在工作流定义文件中指定键。在工作流定义文件中，使用密钥代替密码和其他敏感信息。

**注意**  
为简洁起见，本指南使用术语*变量*来表示*纯文本变量*。

有关变量的更多信息，请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

**Topics**
+ [变量示例](workflows-working-with-variables-ex.md)
+ [定义变量](workflows-working-with-variables-define-input.md)
+ [定义密钥](workflows-working-with-variables-define-secret.md)
+ [导出变量以便其他操作使用](workflows-working-with-variables-export-input.md)
+ [在定义变量的操作中引用该变量](workflows-working-with-variables-reference-input.md)
+ [引用其他操作输出的变量](workflows-working-with-variables-reference-action.md)
+ [引用密钥](workflows-working-with-variables-reference-secret.md)

# 变量示例
<a name="workflows-working-with-variables-ex"></a>

以下示例演示了如何在工作流定义文件中定义和引用变量。

有关变量的更多信息，请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

**Topics**
+ [示例：使用 Inputs 属性定义变量](#workflows-working-with-variables-ex-define-inputs)
+ [示例：使用 Steps 属性定义变量](#workflows-working-with-variables-ex-define-steps)
+ [示例：使用 Outputs 属性导出变量](#workflows-working-with-variables-ex-export-outputs)
+ [示例：引用在同一操作中定义的变量](#workflows-working-with-variables-ex-refer-current)
+ [示例：引用在其他操作中定义的变量](#workflows-working-with-variables-ex-refer-other)
+ [示例：引用密钥](#workflows-working-with-variables-ex-refer-secret)

## 示例：使用 Inputs 属性定义变量
<a name="workflows-working-with-variables-ex-define-inputs"></a>

以下示例向您演示了如何在 `Inputs` 部分中定义两个变量 `VAR1` 和 `VAR2`。

```
Actions:
  Build:
    Identifier: aws/build@v1
    Inputs:
      Variables:
      - Name: VAR1
        Value: "My variable 1"
      - Name: VAR2
        Value: "My variable 2"
```

## 示例：使用 Steps 属性定义变量
<a name="workflows-working-with-variables-ex-define-steps"></a>

以下示例向您演示了如何在 `Steps` 部分中显式定义 `DATE` 变量。

```
Actions:
  Build:
    Identifier: aws/build@v1
    Configuration:    
      Steps:
        - Run: DATE=$(date +%m-%d-%y)
```

## 示例：使用 Outputs 属性导出变量
<a name="workflows-working-with-variables-ex-export-outputs"></a>

以下示例向您演示了如何使用 `Outputs` 部分定义两个变量 `REPOSITORY-URI` 和 `TIMESTAMP` 并导出它们。

```
Actions:
  Build:
    Identifier: aws/build@v1
    Inputs:
      Variables:
        - Name: REPOSITORY-URI
          Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo
    Configuration:
      Steps:
        - Run: TIMESTAMP=$(date +%m-%d-%y-%H-%m-%s) 
    Outputs:
      Variables:
        - REPOSITORY-URI
        - TIMESTAMP
```

## 示例：引用在同一操作中定义的变量
<a name="workflows-working-with-variables-ex-refer-current"></a>

以下示例向您演示了如何在 `MyBuildAction` 中指定变量 `VAR1`，然后使用 `$VAR1` 在同一个操作中引用该变量。

```
Actions:
  MyBuildAction:
    Identifier: aws/build@v1
    Inputs:
      Variables:
        - Name: VAR1
          Value: my-value
    Configuration:
      Steps:
        - Run: $VAR1
```

## 示例：引用在其他操作中定义的变量
<a name="workflows-working-with-variables-ex-refer-other"></a>

以下示例向您演示了如何在 `BuildActionA` 中指定变量 `TIMESTAMP`，使用 `Outputs` 属性导出变量，然后使用 `${BuildActionA.TIMESTAMP}` 在 `BuildActionB` 中进行引用。

```
Actions:
  BuildActionA:
    Identifier: aws/build@v1
    Configuration:    
      Steps:
        - Run: TIMESTAMP=$(date +%m-%d-%y-%H-%m-%s) 
    Outputs:
      Variables:
        - TIMESTAMP
  BuildActionB:
    Identifier: aws/build@v1
    Configuration:
      Steps:
        - Run: docker build -t my-ecr-repo/image-repo:latest .      
        - Run: docker tag my-ecr-repo/image-repo:${BuildActionA.TIMESTAMP}
        
        # Specifying just '$TIMESTAMP' here will not work 
        # because TIMESTAMP is not a variable 
        # in the BuildActionB action.
```

## 示例：引用密钥
<a name="workflows-working-with-variables-ex-refer-secret"></a>

以下示例演示如何引用 `my-password` 密钥。`my-password` 是密钥的键。此密钥的密钥和相应的密码值必须先在 CodeCatalyst 控制台的 S **ec** rets 页面上指定，然后才能在工作流程定义文件中使用。有关更多信息，请参阅 [使用密钥遮蔽数据](workflows-secrets.md)。

```
Actions:
  BuildActionA:
    Identifier: aws/build@v1
    Configuration:    
      Steps:
        - Run: curl -u LiJuan:${Secrets.my-password} https://example.com
```

# 定义变量
<a name="workflows-working-with-variables-define-input"></a>

您可以通过两种方式定义变量：
+ 在工作流操作的 `Inputs` 部分 – 请参阅[在“输入”部分中定义变量](#workflows-to-define-variable-input)
+ 在工作流操作的 `Steps` 部分 – 请参阅[在“步骤”部分中定义变量](#workflows-to-define-variable-steps)
**注意**  
该`Steps`方法仅适用于 CodeCatalyst 构建、测试和**GitHub 操作**操作，因为这些是唯一包含`Steps`部分的操作。

有关示例，请参阅 [变量示例](workflows-working-with-variables-ex.md)。

有关变量的更多信息，请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

------
#### [ Visual ]

**在“输入”部分中定义变量（可视化编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择**可视化**。

1. 在工作流图表中，选择要设置变量的操作。

1. 选择**输入**。

1. 在**变量 – 可选**中，选择**添加变量**，然后执行以下操作：

   指定一系列 name/value 对，用于定义要提供给操作的输入变量。变量名称仅限字母数字字符（a-z、A-Z、0-9）、连字符（-）和下划线（\$1）。不允许使用空格。不能使用引号以使变量名能够包含特殊字符和空格。

   有关变量的更多信息（包括示例），请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------
#### [ YAML ]

**在“输入”部分中定义变量（YAML 编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在工作流操作中，添加类似于下文的代码：

   ```
   action-name:
     Inputs:
       Variables:
         - Name: variable-name
           Value: variable-value
   ```

   有关更多示例，请参阅[变量示例](workflows-working-with-variables-ex.md)。有关更多信息，请参阅相应操作的[工作流 YAML 定义](workflow-reference.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------

------
#### [ Visual ]

**在“步骤”部分中定义变量（可视化编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择**可视化**。

1. 在工作流图表中，选择要设置变量的操作。

1. 选择**配置**。

1. 在 **Shell 命令**或 GitHub Actions **YAML**（无论哪个可用）中，在操作中显式或隐`Steps`式地定义一个变量。
   + 要显式定义变量，请将其直接包含在 `Steps` 部分的 bash 命令中。
   + 要隐式定义变量，请在操作的 `Steps` 部分引用的文件中指定该变量。

     有关示例，请参阅 [变量示例](workflows-working-with-variables-ex.md)。有关更多信息，请参阅相应操作的[工作流 YAML 定义](workflow-reference.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------
#### [ YAML ]

**在“步骤”部分中定义变量（YAML 编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在工作流操作中，在操作的 `Steps` 部分中显式或隐式定义变量。
   + 要显式定义变量，请将其直接包含在 `Steps` 部分的 bash 命令中。
   + 要隐式定义变量，请在操作的 `Steps` 部分引用的文件中指定该变量。

     有关示例，请参阅 [变量示例](workflows-working-with-variables-ex.md)。有关更多信息，请参阅相应操作的[工作流 YAML 定义](workflow-reference.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------

# 定义密钥
<a name="workflows-working-with-variables-define-secret"></a>

您可以在 CodeCatalyst控制台的 “密钥” 页面上定义**密**钥。有关更多信息，请参阅 [使用密钥遮蔽数据](workflows-secrets.md)。

例如，您可以定义一个如下所示的密钥：
+ 名称（键）：**my-password**
+ 值：**^\$1H3\$1\$1b9**

定义密钥后，您可以在工作流定义文件中指定密钥的键（**my-password**）。有关如何执行此操作的示例，请参阅[示例：引用密钥](workflows-working-with-variables-ex.md#workflows-working-with-variables-ex-refer-secret)。

# 导出变量以便其他操作使用
<a name="workflows-working-with-variables-export-input"></a>

按照以下说明从操作中导出变量，以便在其他操作中引用该变量。

在导出变量之前，请注意以下事项：
+ 如果您只需要在定义变量的操作中引用该变量，则无需将其导出。
+ 并非所有操作都支持导出变量。要确定您的操作是否支持此功能，请仔细阅读后文的可视化编辑器说明，并查看操作的**输出**选项卡上是否包含**变量**按钮。如果是，则支持导出变量。
+ 要从 GitHub 操作中导出变量，请参阅[导出 GitHub 输出参数](integrations-github-action-export.md)。

有关变量的更多信息，请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

**先决条件**  
确保您已定义要导出的变量。有关更多信息，请参阅[定义变量](workflows-working-with-variables-define-input.md)。

------
#### [ Visual ]

**导出变量（可视化编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择**可视化**。

1. 在工作流图表中，选择要从中导出变量的操作。

1. 选择**输出**。

1. 在**变量 – 可选**中，选择**添加变量**，然后执行以下操作：

   指定希望操作导出的变量的名称。此变量必须已在同一操作的 `Inputs` 或 `Steps` 部分中定义。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------
#### [ YAML ]

**导出变量（YAML 编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在要从中导出变量的操作中，添加类似于下文的代码：

   ```
   action-name:
     Outputs:
       Variables:
         - Name: variable-name
   ```

   有关更多示例，请参阅[变量示例](workflows-working-with-variables-ex.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------

# 在定义变量的操作中引用该变量
<a name="workflows-working-with-variables-reference-input"></a>

按照以下说明在定义变量的操作中引用该变量。

**注意**  
要引用 GitHub 操作生成的变量，请参见[引用 GitHub 输出参数](integrations-github-action-referencing.md)。

有关变量的更多信息，请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

**先决条件**  
确保您已定义了要引用的变量。有关更多信息，请参阅 [定义变量](workflows-working-with-variables-define-input.md)。

------
#### [ Visual ]

*不可用。选择 YAML 以查看 YAML 说明。*

------
#### [ YAML ]

**在定义变量的操作中引用该变量**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在定义要引用的变量的 CodeCatalyst 操作中，使用以下 bash 语法添加变量：

   ```
   $variable-name
   ```

   例如：

   ```
   MyAction:
       Configuration:
         Steps:
           - Run: $variable-name
   ```

   有关更多示例，请参阅[变量示例](workflows-working-with-variables-ex.md)。有关更多信息，请参阅[工作流 YAML 定义](workflow-reference.md)中相应操作的参考信息。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------

# 引用其他操作输出的变量
<a name="workflows-working-with-variables-reference-action"></a>

按照以下说明引用其他操作输出的变量。

**注意**  
 要引用 GitHub 操作的变量输出，请参见[引用 GitHub 输出参数](integrations-github-action-referencing.md)。

有关变量的更多信息，请参阅[在工作流中使用变量](workflows-working-with-variables.md)。

**先决条件**  
确保您已导出了要引用的变量。有关更多信息，请参阅[导出变量以便其他操作使用](workflows-working-with-variables-export-input.md)。

------
#### [ Visual ]

*不可用。选择 YAML 以查看 YAML 说明。*

------
#### [ YAML ]

**引用其他操作输出的变量（YAML 编辑器）**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 选择您的项目。

1. 在导航窗格中，选择 **CI/CD**，然后选择**工作流**。

1. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选，也可以按工作流名称或状态筛选。

1. 选择**编辑**。

1. 选择 **YAML**。

1. 在 CodeCatalyst 操作中，使用以下语法添加对变量的引用：

   ```
   ${action-group-name.action-name.variable-name}
   ```

   进行如下替换：
   + *action-group-name*使用包含输出变量的操作的操作组的名称。
**注意**  
*action-group-name*如果没有操作组，或者变量是由同一操作组中的操作生成的，则可以省略。
   + *action-name*使用输出变量的操作的名称。
   + *variable-name*使用变量的名称。

   例如：

   ```
   MySecondAction:
       Configuration:
         Steps:
           - Run: ${MyFirstAction.TIMESTAMP}
   ```

   有关更多示例，请参阅[变量示例](workflows-working-with-variables-ex.md)。有关更多信息，请参阅相应操作的[工作流 YAML 定义](workflow-reference.md)。

1. （可选）选择**验证**，在提交之前验证工作流的 YAML 代码。

1. 选择**提交**，输入提交消息，然后再次选择**提交**。

------

# 引用密钥
<a name="workflows-working-with-variables-reference-secret"></a>

有关在工作流定义文件中引用密钥的说明，请参阅[使用密钥](workflows-secrets.using.md)。

有关示例，请参阅[示例：引用密钥](workflows-working-with-variables-ex.md#workflows-working-with-variables-ex-refer-secret)。