

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

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

# 使用工作流进行构建、测试和部署
<a name="workflow"></a>

在[CodeCatalyst开发环境](devenvironment.md)中编写应用程序代码并将其推送到[CodeCatalyst 源存储库](source.md)后，就可以部署它了。可以通过工作流自动执行此操作。

*工作流*是一个自动化过程，它描述了如何在持续集成和持续交付（CI/CD）系统中构建、测试和部署代码。工作流定义了在工作流运行期间要执行的一系列步骤，也称为*操作*。工作流还定义了促使工作流启动的事件或*触发器*。要设置工作流程，您可以使用 CodeCatalyst 控制台[的可视化或 YAML 编辑器](https://docs.aws.amazon.com//codecatalyst/latest/userguide/flows.html#workflow.editors)创建*工作流程定义文件*。

**提示**  
要快速了解如何在项目中使用工作流，请[使用蓝图创建项目](https://docs.aws.amazon.com//codecatalyst/latest/userguide/projects-create.html#projects-create-console-template)。每个蓝图都部署了一个可以正常运行的工作流，您可以对工作流进行查看、运行和试验。

## 关于工作流定义文件
<a name="workflow.example"></a>

*工作流定义文件*是描述您的工作流的 YAML 文件。默认情况下，该文件存储在[源存储库](source-repositories.md)根目录下的 `~/.codecatalyst/workflows/` 文件夹中。该文件的扩展名可以为 .yml 或 .yaml，并且扩展名必须小写。

下面是一个简单的工作流定义文件示例。我们将在下表中逐行解释该示例。

```
Name: MyWorkflow
SchemaVersion: 1.0
RunMode: QUEUED
Triggers:
  - Type: PUSH
    Branches:
      - main
Actions:
  Build:
    Identifier: aws/build@v1
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:     
      Steps:
        - Run: docker build -t MyApp:latest .
```


| 行 | 说明 | 
| --- | --- | 
|  <pre>Name: MyWorkflow</pre>  | 指定工作流的名称。有关 `Name` 属性的更多信息，请参阅[顶级属性](workflow-reference.md#workflow.top.level)。 | 
|  <pre>SchemaVersion: 1.0</pre>  | 指定工作流架构版本。有关 `SchemaVersion` 属性的更多信息，请参阅[顶级属性](workflow-reference.md#workflow.top.level)。 | 
|  <pre>RunMode: QUEUED</pre>  | 表示如何 CodeCatalyst 处理多次运行。有关运行模式的更多信息，请参阅[配置运行的排队行为](workflows-configure-runs.md)。 | 
|  <pre>Triggers:</pre>  | 指定将导致工作流运行启动的逻辑。有关触发器的更多信息，请参阅[使用触发器自动启动工作流运行](workflows-add-trigger.md)。 | 
|  <pre>- Type: PUSH<br />  Branches:<br />    - main</pre>  | 指示只要向默认源存储库的 `main` 分支推送代码，工作流就必须启动。有关工作流源的更多信息，请参阅[将源存储库连接到工作流](workflows-sources.md)。 | 
|  <pre>Actions:</pre>  | 定义工作流运行期间要执行的任务。在此示例中，`Actions` 部分定义一个名为 `Build` 的操作。有关操作的更多信息，请参阅[配置工作流操作](workflows-actions.md)。 | 
|  <pre>Build:</pre>  | 定义 `Build` 操作的属性。有关构建操作的更多信息，请参阅[使用工作流进行构建](build-workflow-actions.md)。 | 
|  <pre>Identifier: aws/build@v1</pre>  | 为构建操作指定唯一的硬编码标识符。 | 
|  <pre>Inputs:<br />  Sources:<br />    - WorkflowSource</pre>  | 指示构建操作应在 `WorkflowSource` 源存储库中查找完成处理所需的文件。有关更多信息，请参阅 [将源存储库连接到工作流](workflows-sources.md)。 | 
|  <pre>Configuration:</pre>  | 包含特定于构建操作的配置属性。 | 
|  <pre>Steps:<br />  - Run: docker build -t MyApp:latest .</pre>  | 告诉构建操作构建名为 `MyApp` 的 Docker 映像并使用 `latest` 标记。 | 

有关工作流定义文件中所有可用属性的完整列表，请参阅[工作流 YAML 定义](workflow-reference.md)。

## 使用 CodeCatalyst 控制台的视觉编辑器和 YAML 编辑器
<a name="workflow.editors"></a>

要创建和编辑工作流程定义文件，您可以使用首选编辑器，但我们建议使用 CodeCatalyst 控制台的可视化编辑器或 YAML 编辑器。这些编辑器提供有用的文件验证功能，有助于确保 YAML 属性名称、值、嵌套、间距、大小写等正确无误。

下图显示了可视化编辑器中的工作流。可视化编辑器为您提供了一个完整的用户界面，您可以通过该界面创建和配置工作流定义文件。可视化编辑器包括一个显示工作流主要组件的工作流程图（1）和一个配置区域（2）。

![工作流可视化编辑器](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/flows/workflow-visual-editor.png)


您也可以使用 YAML 编辑器，如下图所示。使用 YAML 编辑器粘贴大型代码块（例如教程中的代码块），或添加可视化编辑器不提供的高级属性。

![工作流 YAML 编辑器](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/flows/workflow-yaml-editor.png)


您可以从可视化编辑器切换到 YAML 编辑器，查看您的配置对底层 YAML 代码的影响。

## 发现工作流
<a name="workflow.discovering"></a>

您可以在**工作流**摘要页面查看您的工作流，以及您在同一项目中设置的其它工作流。

下图显示了**工作流**摘要页面。它包含两个工作流程：**BuildToProd**和**UnitTests**。您可以看到两者都运行过几次。您可以选择**最近的运行**以快速查看运行历史记录，也可以选择工作流名称以查看工作流的 YAML 代码和其它详细信息。

![工作流日志](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/flows/workflow-list.png)


## 查看工作流运行详细信息
<a name="workflow.runs"></a>

您可以通过在**工作流**摘要页面中选择运行来查看工作流运行的详细信息。

下图显示了名为 **Run-cc11d** 的工作流运行的详细信息，该工作流是在提交到源时自动启动的。工作流程图表明某项操作已失败（1）。您可以导航到日志（2）以查看详细的日志消息并解决问题。有关工作流运行的更多信息，请参阅[运行工作流](workflows-working-runs.md)。

![工作流日志](http://docs.aws.amazon.com/zh_cn/codecatalyst/latest/userguide/images/flows/workflow-visual-logs.png)


## 后续步骤
<a name="workflow.next"></a>

要了解有关工作流概念的更多信息，请参阅[工作流概念](workflows-concepts.md)。

要创建您的第一个工作流，请参阅[入门工作流](workflows-getting-started.md)。