

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將工作流程元件新增至藍圖
<a name="comp-workflow-bp"></a>

Amazon CodeCatalyst 專案會使用工作流程，根據觸發條件執行動作。您可以使用工作流程元件來建置和組合工作流程 YAML 檔案。如需詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

**匯入 Amazon CodeCatalyst 藍圖工作流程元件**

在您的 `blueprint.ts`檔案中，新增下列項目：

```
import { WorkflowBuilder, Workflow } from '@amazon-codecatalyst/codecatalyst-workflows'
```

**Topics**
+ [工作流程元件範例](#comp-workflows-examples-bp)
+ [連線至環境](#comp-workflows-connect-env-bp)

## 工作流程元件範例
<a name="comp-workflows-examples-bp"></a>

### WorkflowBuilder 元件
<a name="comp-workflows-workflowbuilder-bp"></a>

您可以使用 類別來建置工作流程定義。可將 定義提供給工作流程元件，以便在儲存庫中轉譯。

```
import { WorkflowBuilder } from '@amazon-codecatalyst/codecatalyst-workflows'

const workflowBuilder = new WorkflowBuilder({} as Blueprint, {
  Name: 'my_workflow',
});

// trigger the workflow on pushes to branch 'main'
workflowBuilder.addBranchTrigger(['main']);

// add a build action
workflowBuilder.addBuildAction({
  // give the action a name
  actionName: 'build_and_do_some_other_stuff',

  // the action pulls from source code
  input: {
    Sources: ['WorkflowSource'],
  },

  // the output attempts to autodiscover test reports, but not in the node modules
  output: {
    AutoDiscoverReports: {
      Enabled: true,
      ReportNamePrefix: AutoDiscovered,
      IncludePaths: ['**/*'],
      ExcludePaths: ['*/node_modules/**/*'],
    },
  },
  // execute some arbitrary steps
  steps: [
    'npm install',
    'npm run myscript',
    'echo hello-world',
  ],
  // add an account connection to the workflow
  environment: convertToWorkflowEnvironment(myEnv),
});
```

### Workflow Projen 元件
<a name="comp-workflows-projen-bp"></a>

下列範例顯示如何使用 Projen 元件將工作流程 YAML 寫入儲存庫：

```
import { Workflow } from '@amazon-codecatalyst/codecatalyst-workflows'

...

const repo = new SourceRepository
const blueprint = this;
const workflowDef = workflowBuilder.getDefinition()

// creates a workflow.yaml at .aws/workflows/${workflowDef.name}.yaml
new Workflow(blueprint, repo, workflowDef);

// can also pass in any object and have it rendered as a yaml. This is unsafe and may not produce a valid workflow
new Workflow(blueprint, repo, {... some object ...});
```

## 連線至環境
<a name="comp-workflows-connect-env-bp"></a>

許多工作流程需要在 AWS 帳戶連線中執行。工作流程透過允許 動作透過帳戶和角色名稱規格連線到環境來處理此問題。

```
import { convertToWorkflowEnvironment } from '@amazon-codecatalyst/codecatalyst-workflows'


const myEnv = new Environment(...);

// can be passed into a workflow constructor
const workflowEnvironment = convertToWorkflowEnvironment(myEnv);


// add a build action
workflowBuilder.addBuildAction({
  ...
  // add an account connection to the workflow
  environment: convertToWorkflowEnvironment(myEnv),
});
```