

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

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

# 設定工作流程動作
<a name="workflows-actions"></a>

*動作*是工作流程的主要建置區塊，並定義要在工作流程執行期間執行的邏輯工作單位或任務。一般而言，工作流程包含多個動作，這些動作會根據您設定的方式依序或平行執行。

**Topics**
+ [動作類型](#workflows-actions-types)
+ [將動作新增至工作流程](workflows-add-action.md)
+ [從工作流程移除動作](workflows-delete-action.md)
+ [開發自訂動作](workflows-custom-action.md)
+ [將動作分組為動作群組](workflows-group-actions.md)
+ [定序動作](workflows-depends-on.md)
+ [在動作之間共用成品和檔案](workflows-working-artifacts.md)
+ [指定要使用的動作版本](workflows-action-versions.md)
+ [列出可用的動作版本](workflows-action-versions-determine.md)
+ [檢視動作的原始程式碼](workflows-view-source.md)
+ [與 GitHub 動作整合](integrations-github-actions.md)

## 動作類型
<a name="workflows-actions-types"></a>

在 Amazon CodeCatalyst 工作流程中，您可以使用下列類型的動作。

**Topics**
+ [CodeCatalyst 動作](#workflows-actions-types-cc)
+ [CodeCatalyst 實驗室動作](#workflows-actions-types-cc-labs)
+ [GitHub Actions](#workflows-actions-types-github)
+ [第三方動作](#workflows-actions-types-3p)

### CodeCatalyst 動作
<a name="workflows-actions-types-cc"></a>

*CodeCatalyst 動作*是由 CodeCatalyst 開發團隊撰寫、維護和完全支援的動作。

有 CodeCatalyst 動作可用來建置、測試和部署應用程式，以及執行各種任務，例如叫用 AWS Lambda 函數。

下列 CodeCatalyst 動作可供使用：
+ **建置**

  此動作會建置您的成品，並在 Docker 容器中執行您的單元測試。如需詳細資訊，請參閱[新增建置動作](build-add-action.md)。
+ **測試**

  此動作會針對您的應用程式或成品執行整合和系統測試。如需詳細資訊，請參閱[新增測試動作](test-add-action.md)。
+ **Amazon S3 發佈**

  此動作會將您的應用程式成品複製到 Amazon S3 儲存貯體。如需詳細資訊，請參閱[使用工作流程將檔案發佈至 Amazon S3](s3-pub-action.md)。
+ **AWS CDK 引導**

  此動作會佈建 部署 CDK 應用程式 AWS CDK 所需的資源。如需詳細資訊，請參閱[使用工作流程引導 AWS CDK 應用程式](cdk-boot-action.md)。
+ **AWS CDK 部署**

  此動作會合成和部署 AWS Cloud Development Kit (AWS CDK) 應用程式。如需詳細資訊，請參閱[使用工作流程部署 AWS CDK 應用程式](cdk-dep-action.md)。
+ **AWS Lambda 叫用**

  此動作會叫用 AWS Lambda 函數。如需詳細資訊，請參閱[使用工作流程叫用 Lambda 函數](lam-invoke-action.md)。
+ **GitHub 動作**

  此動作是 *CodeCatalyst* 動作，可讓您在 CodeCatalyst 工作流程中執行 GitHub 動作。如需詳細資訊，請參閱[使用工作流程叫用 Lambda 函數](lam-invoke-action.md)。
+ **部署 CloudFormation 堆疊**

  此動作會部署 CloudFormation 堆疊。如需詳細資訊，請參閱[部署 CloudFormation 堆疊](deploy-action-cfn.md)。
+ **部署至 Amazon ECS**

  此動作會註冊 Amazon ECS 任務定義，並將其部署到 Amazon ECS 服務。如需詳細資訊，請參閱[使用工作流程部署至 Amazon ECS](deploy-action-ecs.md)。
+ **部署至 Kubernetes 叢集**

  此動作會將應用程式部署到 Kubernetes 叢集。如需詳細資訊，請參閱[使用工作流程部署至 Amazon EKS](deploy-action-eks.md)。
+ **轉譯 Amazon ECS 任務定義**

  此動作會將容器映像 URI 插入 Amazon ECS 任務定義 JSON 檔案，建立新的任務定義檔案。如需詳細資訊，請參閱[修改 Amazon ECS 任務定義](render-ecs-action.md)。

CodeCatalyst 動作的文件可在本指南和每個動作的讀我檔案中找到。

如需可用 CodeCatalyst 動作以及如何將一個新增至工作流程的資訊，請參閱 [將動作新增至工作流程](workflows-add-action.md)。

### CodeCatalyst 實驗室動作
<a name="workflows-actions-types-cc-labs"></a>

*CodeCatalyst Labs 動作*是 Amazon CodeCatalyst Labs 的一部分，為實驗應用程式提供了證明。已開發 CodeCatalyst 實驗室動作來展示 AWS 與服務的整合。

下列 CodeCatalyst 實驗室動作可供使用：
+ **部署至 AWS Amplify 託管**

  此動作會將應用程式部署到 Amplify 託管。
+ **部署至 AWS App Runner**

  此動作會將來源映像儲存庫中的最新映像部署至 App Runner。
+ **部署至 Amazon CloudFront 和 Amazon S3**

  此動作會將應用程式部署到 CloudFront 和 Amazon S3。
+ **使用 部署 AWS SAM**

  此動作會使用 AWS Serverless Application Model () 部署您的無伺服器應用程式AWS SAM。
+ **使 Amazon CloudFront 快取失效**

  此動作會使指定路徑集的 CloudFront 快取失效。
+ **傳出 Webhook**

  此動作可讓使用者使用 HTTPS 請求，將工作流程中的訊息傳送至任意 Web 伺服器。
+ **發佈至 AWS CodeArtifact**

  此動作會將套件發佈至 CodeArtifact 儲存庫。
+ **發佈至 Amazon SNS**

  此動作可讓使用者透過建立主題、發佈至主題或訂閱主題來與 Amazon SNS 整合。
+ **推送至 Amazon ECR**

  此動作會建置 Docker 映像並將其發佈至 Amazon Elastic Container Registry (Amazon ECR) 儲存庫。
+ **使用 Amazon CodeGuru Security 進行掃描**

  此動作會建立已設定程式碼路徑的 zip 封存檔，並使用 CodeGuru Security 執行程式碼掃描。
+ **Terraform Community Edition**

  此動作會執行 Terraform Community Edition `plan`和 `apply` 操作。

CodeCatalyst 實驗室動作的文件可在每個動作的讀我檔案中找到。

如需將 CodeCatalyst 實驗室動作新增至工作流程和檢視其讀我檔案的詳細資訊，請參閱 [將動作新增至工作流程](workflows-add-action.md)。

### GitHub Actions
<a name="workflows-actions-types-github"></a>

*GitHub 動作*非常類似 [CodeCatalyst 動作](#workflows-actions-types-cc)，但其開發用於 GitHub 工作流程。如需 GitHub 動作的詳細資訊，請參閱 [GitHub 動作](https://docs.github.com/en/actions)文件。

您可以在 CodeCatalyst 工作流程中使用 GitHub 動作與原生 CodeCatalyst 動作。

為了方便起見，CodeCatalyst 主控台可讓您存取數個熱門的 GitHub 動作。您也可以使用 GitHub [Marketplace 中列出的任何 GitHub ](https://github.com/marketplace/actions) 動作 （受到一些限制）。

GitHub 動作的文件可在每個動作的讀我檔案中找到。

如需詳細資訊，請參閱[與 GitHub 動作整合](integrations-github-actions.md)。

### 第三方動作
<a name="workflows-actions-types-3p"></a>

*第三方動作*是由第三方供應商撰寫，並在 CodeCatalyst 主控台中提供的動作。第三方動作的範例包括 **Mend SCA** 和 **SonarCloud Scan** 動作，分別由 Mend 和 Sonar 撰寫。

每個動作的讀我檔案都可以使用第三方動作的文件。第三方廠商也可能提供其他文件。

如需將第三方動作新增至工作流程和檢視其讀我檔案的詳細資訊，請參閱 [將動作新增至工作流程](workflows-add-action.md)。

# 將動作新增至工作流程
<a name="workflows-add-action"></a>

使用以下指示將 動作新增至工作流程，然後加以設定。

**新增和設定 動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 在左上角，選擇 **\$1 動作**，即會顯示**動作**目錄。

1. 在下拉式清單中，執行下列其中一項操作：
   + 選擇 **Amazon CodeCatalyst** 以檢視 [CodeCatalyst](workflows-actions.md#workflows-actions-types-cc)、[CodeCatalyst 實驗室 ](workflows-actions.md#workflows-actions-types-cc-labs)[或第三方](workflows-actions.md#workflows-actions-types-3p)動作。
     + CodeCatalyst 動作具有**依 AWS**標籤的 。
     + CodeCatalyst 實驗室動作具有 ** CodeCatalyst 實驗室**標籤的 。
     + 第三方動作具有**按*廠商***標籤的 ，其中*廠商*是第三方廠商的名稱。
   + 選擇 **GitHub** 以檢視 [ GitHub 動作的精選清單](integrations-github-action-add-curated.md)。

1. 在動作目錄中，搜尋動作，然後執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程。
   + 選擇動作的名稱以檢視其讀我檔案。

1. 設定 動作。選擇**視覺化**以使用視覺化編輯器，或選擇 **YAML** 以使用 YAML 編輯器。如需詳細說明，請參閱下列連結。

   如需新增 [CodeCatalyst 動作](workflows-actions.md#workflows-actions-types-cc)的說明，請參閱：
   + [新增建置動作](build-add-action.md)
   + [新增測試動作](test-add-action.md)
   + [將 'Deploy 新增至 Amazon ECS' 動作](deploy-action-ecs-adding.md)
   + [將 'Deploy 新增至 Kubernetes 叢集' 動作](deploy-action-eks-adding.md)
   + [新增「部署 CloudFormation 堆疊」動作](deploy-action-cfn-adding.md)
   + [新增「AWS CDK 部署」動作](cdk-dep-action-add.md)
   + [新增 'AWS CDK bootstrap' 動作](cdk-boot-action-add.md)
   + [新增「Amazon S3 發佈」動作](s3-pub-action-add.md)
   + [新增「AWS Lambda 調用」動作](lam-invoke-action-add.md)
   + [新增「轉譯 Amazon ECS 任務定義」動作](render-ecs-action-add.md)

   如需新增 [CodeCatalyst 實驗室動作](workflows-actions.md#workflows-actions-types-cc-labs)的說明，請參閱：
   + 動作的讀我檔案。您可以在動作目錄中選擇動作的名稱來尋找讀我檔案。

   如需新增 [GitHub 動作](workflows-actions.md#workflows-actions-types-github)的說明，請參閱：
   + [與 GitHub 動作整合](integrations-github-actions.md)

   如需新增[第三方動作](workflows-actions.md#workflows-actions-types-3p)的說明，請參閱：
   + 動作的讀我檔案。您可以在動作目錄中選擇動作的名稱來尋找讀我檔案。

1. （選用） 選擇**驗證**以確保 YAML 程式碼有效。

1. 選擇**遞交**以遞交您的變更。

# 從工作流程移除動作
<a name="workflows-delete-action"></a>

使用以下指示從工作流程中移除 動作。

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

**使用視覺化編輯器移除動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在工作流程圖表中，在您要移除的動作中，選擇垂直省略號圖示 (![\[Ellipsis.\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/images/flows/elipsis.png))，然後選擇**移除**。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器移除動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 尋找包含您要移除之動作的 YAML 區段。

   選取 區段，然後按鍵盤上的刪除鍵。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 開發自訂動作
<a name="workflows-custom-action"></a>

您可以使用 CodeCatalyst 動作開發套件 (ADK) 開發要在工作流程中使用的自訂動作。然後，您可以將動作發佈到 CodeCatalyst 動作目錄，以便其他 CodeCatalyst 使用者可以在工作流程中檢視和使用它。

**開發、測試和發佈動作 （高階任務）**

1. 安裝開發 動作所需的工具和套件。

1. 建立 CodeCatalyst 儲存庫以存放您的動作程式碼。

1. 初始化 動作。這會配置 動作所需的來源檔案，包括您可以使用自己的程式碼更新的動作定義檔案 (`action.yml`)。

1. 引導動作程式碼，以取得建置、測試和發行動作專案所需的工具和程式庫。

1. 在本機電腦上建置 動作，並將變更推送至 CodeCatalyst 儲存庫。

1. 在本機使用單元測試測試動作，並在 CodeCatalyst 中執行 ADK 產生的工作流程。

1. 選擇 CodeCatalyst 主控台中的**發佈**按鈕，將動作發佈至 CodeCatalyst 動作目錄。

如需詳細步驟，請參閱《[Amazon CodeCatalyst 動作開發套件開發人員指南](https://docs.aws.amazon.com/codecatalyst/latest/adk/what-is-action-development-kit.html)》。

# 將動作分組為動作群組
<a name="workflows-group-actions"></a>

*動作群組*包含一或多個動作。將動作分組為動作群組可協助您整理工作流程，也可讓您設定不同群組之間的相依性。

**注意**  
您無法在其他動作群組或動作中巢狀化動作群組。

**Topics**
+ [定義動作群組](#workflows-define-action-group)
+ [範例：定義兩個動作群組](workflows-group-actions-example.md)

## 定義動作群組
<a name="workflows-define-action-group"></a>

使用下列指示來定義 CodeCatalyst 動作群組。

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

*無法使用。選擇 YAML 以檢視 YAML 指示。*

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

**定義群組**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在 中`Actions`，新增類似下列的程式碼：

   ```
   Actions:
     action-group-name: 
       Actions:
         action-1:
           Identifier: aws/build@v1
           Configuration:
             ...
         action-2:
           Identifier: aws/build@v1
           Configuration:
             ...
   ```

   如需其他範例，請參閱[範例：定義兩個動作群組](workflows-group-actions-example.md)。如需詳細資訊，請參閱 中 [動作](workflow-reference.md#actions-reference)的 `action-group-name` 屬性描述[工作流程 YAML 定義](workflow-reference.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 範例：定義兩個動作群組
<a name="workflows-group-actions-example"></a>

下列範例示範如何定義兩個 Amazon CodeCatalyst 動作群組： `BuildAndTest`和 `Deploy`。`BuildAndTest` 群組包含兩個動作 (`Build` 和 `Test`)，而`Deploy`群組也包含兩個動作 (`DeployCloudFormationStack` 和 `DeployToECS`)。

```
Actions:
  BuildAndTest: # Action group 1
    Actions:
      Build:
        Identifier: aws/build@v1
        Configuration:
          ...
      Test:
        Identifier: aws/managed-test@v1
        Configuration:
  Deploy: #Action group 2
    Actions:
      DeployCloudFormationStack:
        Identifier: aws/cfn-deploy@v1
        Configuration:
          ...
      DeployToECS:
        Identifier: aws/ecs-deploy@v1
        Configuration:
          ...
```

# 定序動作
<a name="workflows-depends-on"></a>

根據預設，當您將動作新增至工作流程時，它們會在[視覺化編輯器](workflow.md#workflow.editors)中並排新增。這表示當您啟動工作流程執行時，動作會平行執行。如果您希望動作按順序執行 （並在視覺化編輯器中垂直顯示），您必須在它們之間設定相依性。例如，您可以設定`Test`動作來相依`Build`動作，讓測試動作在建置動作之後執行。

您可以在動作和動作群組之間設定相依性。您也可以設定one-to-many相依性，讓一個動作依賴其他幾個動作才能開始。請參閱 中的準則[在動作之間設定相依性](workflows-depends-on-set-up.md)，以確保您的相依性設定符合工作流程的 YAML 語法。

**Topics**
+ [如何在動作之間設定相依性的範例](workflows-depends-on-examples.md)
+ [在動作之間設定相依性](workflows-depends-on-set-up.md)

# 如何在動作之間設定相依性的範例
<a name="workflows-depends-on-examples"></a>

下列範例示範如何在工作流程定義檔案中設定動作和群組之間的相依性。

**Topics**
+ [範例：設定簡單的相依性](#workflows-depends-on-example-simple)
+ [範例：設定動作群組以相依於 動作](#workflows-depends-on-example-action-groups-actions)
+ [範例：設定動作群組以依賴另一個動作群組](#workflows-depends-on-example-two-action-groups)
+ [範例：設定動作群組以相依於多個動作](#workflows-depends-on-example-advanced)

## 範例：設定簡單的相依性
<a name="workflows-depends-on-example-simple"></a>

下列範例示範如何使用 `DependsOn` 屬性將`Test`動作設定為相依於`Build`動作。

```
Actions:
  Build:
    Identifier: aws/build@v1
    Configuration:
      ...
  Test:
    DependsOn:
      - Build
    Identifier: aws/managed-test@v1
     Configuration:
       ...
```

## 範例：設定動作群組以相依於 動作
<a name="workflows-depends-on-example-action-groups-actions"></a>

下列範例示範如何設定`DeployGroup`動作群組以相依於 `FirstAction`動作。請注意，動作和動作群組位於相同層級。

```
Actions:
  FirstAction: #An action outside an action group
    Identifier: aws/github-actions-runner@v1
    Configuration:
      ...
  DeployGroup: #An action group containing two actions
    DependsOn: 
      - FirstAction
    Actions:
      DeployAction1:
      ...
      DeployAction2:
      ...
```

## 範例：設定動作群組以依賴另一個動作群組
<a name="workflows-depends-on-example-two-action-groups"></a>

下列範例顯示如何設定`DeployGroup`動作群組以相依於`BuildAndTestGroup`動作群組。請注意，動作群組位於相同層級。

```
Actions:
  BuildAndTestGroup: # Action group 1
    Actions:
      BuildAction:
      ...
      TestAction:
      ...
  DeployGroup: #Action group 2
    DependsOn: 
      - BuildAndTestGroup
    Actions:
      DeployAction1:
      ...
      DeployAction2:
      ...
```

## 範例：設定動作群組以相依於多個動作
<a name="workflows-depends-on-example-advanced"></a>

下列範例示範如何設定`DeployGroup`動作群組以相依於`FirstAction`動作、`SecondAction`動作以及`BuildAndTestGroup`動作群組。請注意， `DeployGroup` 與 `FirstAction`、 `SecondAction`和 位於相同層級`BuildAndTestGroup`。

```
Actions:
  FirstAction: #An action outside an action group
    ...
  SecondAction: #Another action 
    ...
  BuildAndTestGroup: #Action group 1
    Actions:
      Build:
      ...
      Test:
      ...
  DeployGroup: #Action group 2
    DependsOn: 
      - FirstAction
      - SecondAction
      - BuildAndTestGroup
    Actions:
      DeployAction1:
      ...
      DeployAction2:
      ...
```

# 在動作之間設定相依性
<a name="workflows-depends-on-set-up"></a>

使用下列指示來設定工作流程中動作之間的相依性。

設定相依性時，請遵循下列準則：
+ 如果動作位於群組中，則該動作只能依賴相同群組中的其他動作。
+ 動作和動作群組可以依賴 YAML 階層中*相同層級*的其他動作和動作群組，但*不能*依賴不同層級的動作和動作群組。

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

**使用視覺化編輯器設定相依性**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在工作流程圖表中，選擇將相依於另一個動作的動作。

1. 選擇**輸入**索引標籤。

1. 在 **中，視 - 選用**而定，執行下列動作：

   指定必須成功執行的動作、動作群組或閘道，才能執行此動作。

   如需 'depends on' 功能的詳細資訊，請參閱 [定序動作](workflows-depends-on.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器設定相依性**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在相依於另一個動作的動作中，新增類似下列的程式碼：

   ```
   action-name:
     DependsOn:
       - action-1
   ```

   如需更多範例，請參閱[如何在動作之間設定相依性的範例](workflows-depends-on-examples.md)。如需一般準則，請參閱 [在動作之間設定相依性](#workflows-depends-on-set-up)。如需詳細資訊，請參閱 中 [工作流程 YAML 定義](workflow-reference.md) 動作的 `DependsOn` 屬性描述。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 在動作之間共用成品和檔案
<a name="workflows-working-artifacts"></a>

*成品*是工作流程動作的輸出，通常由資料夾或檔案封存組成。成品很重要，因為它們允許您在動作之間共用檔案和資訊。

例如，您可能有一個*產生*`sam-template.yml`檔案的建置動作，但您希望部署動作*使用*它。在此案例中，您會使用成品來允許建置動作與部署動作共用`sam-template.yml`檔案。程式碼看起來可能會像這樣：

```
Actions:
  BuildAction:
    Identifier: aws/build@v1
    Steps:
      - Run: sam package --output-template-file sam-template.yml
    Outputs:
      Artifacts:
        - Name: MYARTIFACT
          Files:
            - sam-template.yml
  DeployAction:
    Identifier: aws/cfn-deploy@v1  
    Inputs:
      Artifacts:
        - MYARTIFACT
    Configuration:
      template: sam-template.yml
```

在先前的程式碼中，建置動作 (`BuildAction`) 會產生`sam-template.yml`檔案，然後將其新增至名為 的輸出成品`MYARTIFACT`。後續部署動作 (`DeployAction`) 會指定 `MYARTIFACT`做為輸入，讓它能夠存取 `sam-template.yml` 檔案。

**Topics**
+ [我是否可以共用成品，而不將其指定為輸出和輸入？](#workflows-working-artifacts-share)
+ [我可以在工作流程之間共用成品嗎？](#workflows-working-artifacts-share-wf)
+ [成品範例](workflows-working-artifacts-ex.md)
+ [定義輸出成品](workflows-working-artifacts-output.md)
+ [定義輸入成品](workflows-working-artifacts-refer.md)
+ [參考成品中的檔案](workflows-working-artifacts-refer-files.md)
+ [下載成品](workflows-download-workflow-outputs.md)

## 我是否可以共用成品，而不將其指定為輸出和輸入？
<a name="workflows-working-artifacts-share"></a>

可以，您可以在動作之間共用成品，而無需在動作 YAML 程式碼的 `Outputs`和 `Inputs`區段中指定它們。若要這樣做，您必須開啟運算共用。如需運算共用以及如何在開啟時指定成品的詳細資訊，請參閱 [跨動作共用運算](compute-sharing.md)。

**注意**  
雖然運算共用功能可讓您透過消除對 `Outputs`和 `Inputs`區段的需求來簡化工作流程的 YAML 程式碼，但此功能具有您在開啟它之前應注意的限制。如需這些限制的相關資訊，請參閱 [運算共用的考量](compute-sharing.md#compare-compute-sharing)。

## 我可以在工作流程之間共用成品嗎？
<a name="workflows-working-artifacts-share-wf"></a>

否，您無法在不同工作流程之間共用成品；不過，您可以在相同工作流程中的動作之間共用成品。

# 成品範例
<a name="workflows-working-artifacts-ex"></a>

下列範例示範如何在 Amazon CodeCatalyst 工作流程定義檔案中輸出、輸入和參考成品。

**Topics**
+ [範例：輸出成品](#workflows-working-artifacts-ex-basic)
+ [範例：輸入另一個動作產生的成品](#workflows-working-artifacts-ex-ref)
+ [範例：參考多個成品中的檔案](#workflows-working-artifacts-ex-ref-file)
+ [範例：參考單一成品中的檔案](#workflows-working-artifacts-ex-ref-file-one)
+ [範例：當 WorkflowSource 存在時，參考成品中的檔案](#workflows-working-artifacts-ex-ref-file-wf-source)
+ [範例：存在動作群組時參考成品中的檔案](#workflows-working-artifacts-ex-groups)

## 範例：輸出成品
<a name="workflows-working-artifacts-ex-basic"></a>

下列範例示範如何輸出包含兩個 .jar 檔案的成品。

```
Actions:
  Build:
    Identifier: aws/build@v1
    Outputs:
      Artifacts:
        - Name: ARTIFACT1
          Files:
            - build-output/file1.jar
            - build-output/file2.jar
```

## 範例：輸入另一個動作產生的成品
<a name="workflows-working-artifacts-ex-ref"></a>

下列範例示範如何輸出 `ARTIFACT4`中稱為 的成品`BuildActionA`，並將其輸入 `BuildActionB`。

```
Actions:
  BuildActionA:
    Identifier: aws/build@v1  
    Outputs:
      Artifacts:
        - Name: ARTIFACT4
          Files:
            - build-output/file1.jar
            - build-output/file2.jar
  BuildActionB:
    Identifier: aws/build@v1  
    Inputs:
      Artifacts:
        - ARTIFACT4
    Configuration:
```

## 範例：參考多個成品中的檔案
<a name="workflows-working-artifacts-ex-ref-file"></a>

下列範例示範如何在 `ART6`中輸出兩個名為 `ART5`和 的成品`BuildActionC`，然後在 `file5.txt`（在 下`ART5`) 中參考兩個名為 `file6.txt`（在成品 中） 和 `BuildActionD`（在成品 中`ART6`) 的檔案`Steps`。

**注意**  
如需參考檔案的詳細資訊，請參閱 [參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

**注意**  
雖然範例顯示正在使用的`$CATALYST_SOURCE_DIR_ART5`字首，但您可以省略它。這是因為 `ART5`是*主要輸入*。若要進一步了解主要輸入，請參閱 [參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

```
Actions:
  BuildActionC:
    Identifier: aws/build@v1  
    Outputs:
      Artifacts:
        - Name: ART5
          Files:
            - build-output/file5.txt
        - Name: ART6
          Files:
            - build-output/file6.txt
  BuildActionD:
    Identifier: aws/build@v1  
    Inputs:
      Artifacts:
        - ART5
        - ART6
    Configuration:
      Steps:
        - run: cd $CATALYST_SOURCE_DIR_ART5/build-output && cat file5.txt
        - run: cd $CATALYST_SOURCE_DIR_ART6/build-output && cat file6.txt
```

## 範例：參考單一成品中的檔案
<a name="workflows-working-artifacts-ex-ref-file-one"></a>

下列範例示範如何在 `ART7`中輸出名為 的一個成品`BuildActionE`，然後在 `file7.txt`（在成品 `ART7`下） 中參考 `BuildActionF`（在成品 )`Steps`。

請注意，參考不需要`build-output`目錄前面的`$CATALYST_SOURCE_DIR_`*成品名稱*字首，就像在 中一樣[範例：參考多個成品中的檔案](#workflows-working-artifacts-ex-ref-file)。這是因為 下只有一個指定項目`Inputs`。

**注意**  
如需參考檔案的詳細資訊，請參閱 [參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

```
Actions:
  BuildActionE:
    Identifier: aws/build@v1  
    Outputs:
      Artifacts:
        - Name: ART7
          Files:
            - build-output/file7.txt
  BuildActionF:
    Identifier: aws/build@v1  
    Inputs:
      Artifacts:
        - ART7
    Configuration:
      Steps:
        - run: cd build-output && cat file7.txt
```

## 範例：當 WorkflowSource 存在時，參考成品中的檔案
<a name="workflows-working-artifacts-ex-ref-file-wf-source"></a>

下列範例示範如何在 `ART8`中輸出名為 的一個成品`BuildActionG`，然後在 `file8.txt`（在成品 `ART8`下） 中參考 `BuildActionH`（在成品 )`Steps`。

請注意，參考需要`$CATALYST_SOURCE_DIR_`*成品名稱*字首的方式，如同在 中一樣[範例：參考多個成品中的檔案](#workflows-working-artifacts-ex-ref-file)。這是因為在 `Inputs`（來源和成品） 下指定了多個項目，因此您需要 字首來指出在何處尋找檔案。

**注意**  
如需參考檔案的詳細資訊，請參閱 [參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

```
Actions:
  BuildActionG:
    Identifier: aws/build@v1  
    Outputs:
      Artifacts:
        - Name: ART8
          Files:
            - build-output/file8.txt
  BuildActionH:
    Identifier: aws/build@v1  
    Inputs:
      Sources:
        - WorkflowSource
      Artifacts:
        - ART8
    Configuration:
      Steps:
        - run: cd $CATALYST_SOURCE_DIR_ART8/build-output && cat file8.txt
```

## 範例：存在動作群組時參考成品中的檔案
<a name="workflows-working-artifacts-ex-groups"></a>

下列範例示範如何輸出名為 `ActionGroup1`、 `ART9`的成品`ActionI`，然後在 中參考 `file9.txt`（成品 `ART9`)`ActionJ`。

如需參考檔案的詳細資訊，請參閱 [參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

```
Actions:
  ActionGroup1:
    Actions:
      ActionI:
        Identifier: aws/build@v1
        Outputs:
          Artifacts:
            - Name: ART9
              Files:
                - build-output/file9.yml
      ActionJ:
        Identifier: aws/cfn-deploy@v1 
        Inputs:
          Sources:
            - WorkflowSource
          Artifacts:
            - ART9
        Configuration:
          template: /artifacts/ActionGroup1@ActionJ/ART9/build-output/file9.yml
```

# 定義輸出成品
<a name="workflows-working-artifacts-output"></a>

使用下列指示來定義您希望 Amazon CodeCatalyst 動作輸出的成品。然後，此成品可供其他動作使用。

**注意**  
並非所有動作都支援輸出成品。若要判斷您的動作是否支援它們，請執行以下視覺化編輯器說明，並查看動作是否包含輸出索引標籤上的**輸出****成品**按鈕。如果是，則支援輸出成品。

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

**使用視覺化編輯器定義輸出成品**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在工作流程圖表中，選擇會產生成品的動作。

1. 選擇 **Output (輸出)** 索引標籤。

1. 在**成品**下，選擇**新增成品**。

1. 選擇**新增成品**，然後在欄位中輸入資訊，如下所示。

    **組建成品名稱** 

   指定 動作產生的成品名稱。成品名稱在工作流程中必須是唯一的，且僅限於英數字元 (a-z、A-Z、0-9) 和底線 (\$1)。不允許使用空格、連字號 (-) 和其他特殊字元。您無法使用引號在輸出成品名稱中啟用空格、連字號和其他特殊字元。

   如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

    **組建產生的檔案** 

   指定 CodeCatalyst 在由 動作輸出的成品中包含的檔案。這些檔案在執行時由工作流程動作產生，也可在您的來源儲存庫中使用。檔案路徑可以位於來源儲存庫或先前動作的成品中，並與來源儲存庫或成品根相關。您可以使用 glob 模式來指定路徑。範例：
   + 若要指定位於建置位置根目錄或來源儲存庫位置的單一檔案，請使用 `my-file.jar`。
   + 若要在子目錄中指定單一檔案，請使用 `directory/my-file.jar`或 `directory/subdirectory/my-file.jar`。
   + 若要指定所有檔案，請使用 `"**/*"`。`**` 全域模式表示 符合任意數量的子目錄。
   + 若要在名為 的目錄中指定所有檔案和目錄`directory`，請使用 `"directory/**/*"`。`**` 全域模式表示 符合任意數量的子目錄。
   + 若要指定目錄中名為 的所有檔案`directory`，但不是其任何子目錄，請使用 `"directory/*"`。
**注意**  
如果您的檔案路徑包含一或多個星號 (`*`) 或其他特殊字元，請以雙引號 () 括住路徑`""`。如需特殊字元的詳細資訊，請參閱 [語法準則和慣例](workflow-reference.md#workflow.terms.syntax.conv)。

   如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。
**注意**  
您可能需要在檔案路徑中新增字首，以指出要找到它的成品或來源。如需詳細資訊，請參閱[參考來源儲存庫檔案](workflows-sources-reference-files.md)及[參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器定義輸出成品**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在工作流程動作中，新增類似下列的程式碼：

   ```
   action-name:
     Outputs:
       Artifacts:
         - Name: artifact-name
           Files:
             - file-path-1
             - file-path-2
   ```

   如需更多範例，請參閱[成品範例](workflows-working-artifacts-ex.md)。如需詳細資訊，請參閱您動作[工作流程 YAML 定義](workflow-reference.md)的 。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 定義輸入成品
<a name="workflows-working-artifacts-refer"></a>

如果您想要使用另一個 Amazon CodeCatalyst 動作產生的成品，您必須將其指定為目前動作的輸入。您可以指定多個成品做為輸入，這取決於 動作。如需詳細資訊，請參閱您動作[工作流程 YAML 定義](workflow-reference.md)的 。

**注意**  
您無法參考來自其他工作流程的成品。

使用下列指示來指定另一個動作的成品，做為目前動作的輸入。

**先決條件**  
開始之前，請確定您已從其他動作輸出成品。如需詳細資訊，請參閱[定義輸出成品](workflows-working-artifacts-output.md)。輸出成品可讓其他動作使用。

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

**將成品指定為動作的輸入 （視覺化編輯器）**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在工作流程圖表中，選擇您要指定成品做為輸入的動作。

1. 選擇**輸入**。

1. 在**成品 - 選用**中，執行下列動作：

   指定您要提供作為此動作輸入之先前動作的成品。這些成品必須已定義為先前動作中的輸出成品。

   如果您未指定任何輸入成品，則必須在 下指定至少一個來源儲存庫`action-name/Inputs/Sources`。

   如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。
**注意**  
如果**成品 - 選用**下拉式清單無法使用 （視覺化編輯器），或者您在驗證 YAML (YAML 編輯器） 時在 中發生錯誤，可能是因為動作僅支援一個輸入。在此情況下，請嘗試移除來源輸入。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**將成品指定為動作的輸入 (YAML 編輯器）**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在您要指定成品做為輸入的 動作中，新增類似下列的程式碼：

   ```
   action-name:
     Inputs:
       Artifacts:
         - artifact-name
   ```

   如需更多範例，請參閱[成品範例](workflows-working-artifacts-ex.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 參考成品中的檔案
<a name="workflows-working-artifacts-refer-files"></a>

如果您的檔案位於成品中，而且您需要在其中一個 Amazon CodeCatalyst 工作流程動作中參考此檔案，請完成下列程序。

**注意**  
另請參閱[參考來源儲存庫檔案](workflows-sources-reference-files.md)。

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

*無法使用。選擇 YAML 以檢視 YAML 指示。*

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

**參考成品中的檔案 (YAML 編輯器）**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在您要參考檔案的動作中，新增類似下列的程式碼：

   ```
   Actions:
     My-action:
       Inputs:
         Sources:
           - WorkflowSource
         Artifacts:
           - artifact-name  
       Configuration:
         template: artifact-path/path/to/file.yml
   ```

   在先前的程式碼中，取代：
   + *artifact-name* 與成品的名稱。
   + *artifact-path*，具有下表中的值。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codecatalyst/latest/userguide/workflows-working-artifacts-refer-files.html)

   如需範例，請參閱 [成品範例](workflows-working-artifacts-ex.md)。
**注意**  
如果符合下列條件，您可以省略*成品路徑*，並僅指定相對於成品根目錄的檔案路徑：  
您包含參考的動作只會在 下包含一個項目 `Inputs`（例如，它包含一個輸入成品且無來源）。
您要參考的檔案位於主要輸入中。如果沒有 `WorkflowSource`，*則主要輸入*為 或列出的第一個輸入成品`WorkflowSource`。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 下載成品
<a name="workflows-download-workflow-outputs"></a>

您可以下載並檢查 Amazon CodeCatalyst 工作流程動作所產生的成品，以進行故障診斷。您可以下載兩種類型的成品：
+ **來源成品** – 包含來源儲存庫內容快照的成品，當執行開始時已存在。
+ **工作流程成品** – 在工作流程組態檔案的 `Outputs` 屬性中定義的成品。

**下載工作流程輸出的成品**

1. 開啟 CodeCatalyst 主控台，網址為 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 在工作流程的名稱下，選擇**執行**。

1. 在**執行歷史記錄**的**執行 ID** 欄中，選擇執行。例如：`Run-95a4d`。

1. 在執行的名稱下，選擇**成品**。

1. 在成品旁，選擇**下載**。封存檔案下載。其檔案名稱由七個隨機字元組成。

1. 使用您選擇的封存擷取公用程式來擷取封存。

# 指定要使用的動作版本
<a name="workflows-action-versions"></a>

根據預設，當您將動作新增至工作流程時，Amazon CodeCatalyst 會使用 格式，將完整版本新增至工作流程定義檔案：

 `vmajor.minor.patch` 

例如：

```
My-Build-Action:
  Identifier: aws/build@v1.0.0
```

您可以在 `Identifier` 屬性中縮短完整版本，讓工作流程一律使用最新的 動作次要或修補程式版本。

例如，如果您指定：

```
My-CloudFormation-Action:
  Identifier: aws/cfn-deploy@v1.0
```

...且最新的修補程式版本為 `1.0.4`，則動作將使用 `1.0.4`。如果發行更新版本，請說 `1.0.5`，動作將使用 `1.0.5`。如果發行次要版本，請說 `1.1.0`，則動作將繼續使用 `1.0.5`。

如需指定版本的詳細說明，請參閱下列其中一個主題。

使用下列指示來指出您希望工作流程使用的動作版本。您可以指定最新的主要或次要版本，或特定的修補程式版本。

我們建議您使用最新的 動作次要或修補程式版本。

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

 *無法使用。選擇 YAML 以檢視 YAML 指示。*

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

**設定工作流程以使用動作的最新版本或特定修補程式版本**

1. 開啟 CodeCatalyst 主控台，網址為 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 尋找您要編輯其版本的動作。

1. 尋找動作的 `Identifier` 屬性，並將版本設定為下列其中一項：
   + action-identifier@v*major* – 使用此語法讓工作流程使用特定的主要版本，並允許自動選擇最新的次要和修補程式版本。
   + action-identifier@v*major*.*minor* – 使用此語法讓工作流程使用特定的次要版本，並允許自動選擇最新的修補程式版本。
   + action-identifier@v*major*.*minor*.*patch* – 使用此語法讓工作流程使用特定的修補程式版本。
**注意**  
如果您不確定哪些版本可用，請參閱 [列出可用的動作版本](workflows-action-versions-determine.md)。
**注意**  
您無法省略主要版本。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 列出可用的動作版本
<a name="workflows-action-versions-determine"></a>

使用下列指示來判斷您可以在工作流程中使用的動作版本。

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

**判斷可用的動作版本**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 尋找您要檢視其版本的動作：

   1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

   1. 選擇任何工作流程的名稱，或建立一個。如需建立工作流程的詳細資訊，請參閱 [建立工作流程](workflows-create-workflow.md)。

   1. 選擇**編輯**。

   1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

   1. 在下拉式清單中，選擇 **Amazon CodeCatalyst** 以檢視 CodeCatalyst、CodeCatalyst 實驗室和第三方動作，或選擇 **GitHub** 以檢視策劃的 GitHub 動作。

   1. 搜尋動作，然後選擇其名稱。請勿選擇加號 (**\$1**)。

      動作的詳細資訊隨即出現。

1. 在動作詳細資訊對話方塊中，靠近右上角，選擇**版本**下拉式清單以查看動作的可用版本清單。

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

 *無法使用。選擇「視覺效果」以檢視視覺效果編輯器指示。*

------

# 檢視動作的原始程式碼
<a name="workflows-view-source"></a>

您可以檢視動作的原始程式碼，以確保它不包含有風險的程式碼、安全漏洞或其他瑕疵。

使用下列指示來檢視 [CodeCatalyst](workflows-actions.md#workflows-actions-types-cc)、[CodeCatalyst 實驗室](workflows-actions.md#workflows-actions-types-cc-labs)[或第三方](workflows-actions.md#workflows-actions-types-3p)動作的原始程式碼。

**注意**  
若要檢視 [GitHub 動作](workflows-actions.md#workflows-actions-types-github)的原始碼，請前往 [GitHub Marketplace](https://github.com/marketplace/actions) 中的動作頁面。此頁面包含動作儲存庫的連結，您可以在其中找到動作的原始程式碼。

**注意**  
您無法檢視下列 CodeCatalyst 動作的原始碼：[建置](build-workflow-actions.md)、[測試](test-workflow-actions.md)、[GitHub 動作](integrations-github-action-add.md)。

**注意**  
AWS 不支援或保證 GitHub 動作或第三方動作的動作程式碼。<a name="workflows-to-view-source-cc"></a>

**檢視動作的原始程式碼**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 尋找您要檢視其程式碼的動作：

   1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

   1. 選擇任何工作流程的名稱，或建立一個。如需建立工作流程的詳細資訊，請參閱 [建立工作流程](workflows-create-workflow.md)。

   1. 選擇**編輯**。

   1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

   1. 在下拉式清單中，選擇 **Amazon CodeCatalyst** 以檢視 CodeCatalyst、CodeCatalyst 實驗室和第三方動作。

   1. 搜尋動作，然後選擇其名稱。請勿選擇加號 (**\$1**)。

      動作的詳細資訊隨即出現。

1. 在動作詳細資訊對話方塊中，靠近底部，選擇**下載**。

   隨即出現頁面，顯示動作原始碼所在的 Amazon S3 儲存貯體。如需 Amazon S3 的詳細資訊，請參閱[什麼是 Amazon S3？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) *Amazon Simple Storage Service 使用者指南*中的 。

1. 檢查程式碼，確保其符合您對品質和安全性的期望。

# 與 GitHub 動作整合
<a name="integrations-github-actions"></a>

*GitHub 動作*非常類似 [CodeCatalyst 動作](workflows-actions.md#workflows-actions-types-cc)，但其開發用於 GitHub 工作流程。如需 GitHub 動作的詳細資訊，請參閱 [GitHub 動作](https://docs.github.com/en/actions)文件。

您可以在 CodeCatalyst 工作流程中使用 GitHub 動作與原生 CodeCatalyst 動作。

有兩種方式可將 GitHub 動作新增至 CodeCatalyst 工作流程：
+ 您可以從 CodeCatalyst 主控台的策劃清單中選取 GitHub 動作。有數個熱門的 GitHub 動作可供使用。如需詳細資訊，請參閱[新增精選的 GitHub 動作](integrations-github-action-add-curated.md)。
+ 如果您想要使用的 GitHub 動作無法在 CodeCatalyst 主控台中使用，您可以使用 **GitHub 動作**新增它。

  ***GitHub Actions*** 動作是 *CodeCatalyst 動作*，可包裝 GitHub 動作，使其與 CodeCatalyst 工作流程相容。

  以下是包裝 [Super-Linter](https://github.com/marketplace/actions/super-linter) **GitHub 動作**的 GitHub 動作動作範例：

  ```
  Actions:
    GitHubAction:
      Identifier: aws/github-actions-runner@v1
      Configuration:
        Steps:
          - name: Lint Code Base
            uses: github/super-linter@v4
            env:
              VALIDATE_ALL_CODEBASE: "true"
              DEFAULT_BRANCH: main
  ```

  在先前的程式碼中，CodeCatalyst **GitHub Actions** 動作 （由 識別`aws/github-actions-runner@v1`) 會包裝 Super-Linter 動作 （由 識別`github/super-linter@v4`)，使其可在 CodeCatalyst 工作流程中運作。

  如需詳細資訊，請參閱[新增「GitHub 動作」動作](integrations-github-action-add.md)。

所有 GitHub 動作 - 無論是否經過策劃，都必須包裝在 **GitHub 動作**動作 (`aws/github-actions-runner@v1`) 內，如上一個範例所示。動作需要包裝函式才能正常運作。

**Topics**
+ [GitHub 動作與 CodeCatalyst 動作有何不同？](#integrations-github-actions-how-different)
+ [GitHub 動作是否可以與工作流程中的其他 CodeCatalyst 動作互動？](#integrations-github-actions-interactions.title)
+ [我可以使用哪些 GitHub 動作？](#integrations-github-actions-supported)
+ [CodeCatalyst 中 GitHub 動作的限制](#integrations-github-actions-limitations)
+ [如何新增 GitHub 動作 （高階步驟）？](#integrations-github-actions-how-to)
+ [GitHub 動作是否在 GitHub 中執行？](#integrations-github-actions-where-it-runs)
+ [也可以使用 GitHub 工作流程嗎？](#integrations-github-actions-workflows-support.title)
+ [「GitHub 動作」動作所使用的執行期映像](#integrations-github-actions-runtime)
+ [教學課程：使用 GitHub 動作的 Lint 程式碼](integrations-github-action-tutorial.md)
+ [新增「GitHub 動作」動作](integrations-github-action-add.md)
+ [新增精選的 GitHub 動作](integrations-github-action-add-curated.md)
+ [匯出 GitHub 輸出參數](integrations-github-action-export.md)
+ [參考 GitHub 輸出參數](integrations-github-action-referencing.md)
+ [「GitHub 動作」動作 YAML](github-action-ref.md)

## GitHub 動作與 CodeCatalyst 動作有何不同？
<a name="integrations-github-actions-how-different"></a>

在 CodeCatalyst 工作流程中使用的 GitHub 動作與 CodeCatalyst 動作的存取和整合層級不同 AWS 和 CodeCatalyst 功能 （例如[環境](deploy-environments.md)和[問題](issues.md))。

## GitHub 動作是否可以與工作流程中的其他 CodeCatalyst 動作互動？
<a name="integrations-github-actions-interactions.title"></a>

是。例如，GitHub Actions 可以使用其他 CodeCatalyst 動作產生的變數做為輸入，也可以與 CodeCatalyst 動作共用輸出參數和成品。如需詳細資訊，請參閱[匯出 GitHub 輸出參數](integrations-github-action-export.md)及[參考 GitHub 輸出參數](integrations-github-action-referencing.md)。

## 我可以使用哪些 GitHub 動作？
<a name="integrations-github-actions-supported"></a>

您可以使用 CodeCatalyst 主控台提供的任何 GitHub 動作，以及 GitHub [Marketplace 中提供的任何 GitHub ](https://github.com/marketplace/actions)動作。如果您決定從 Marketplace 使用 GitHub 動作，請記住下列[限制](#integrations-github-actions-limitations)。

## CodeCatalyst 中 GitHub 動作的限制
<a name="integrations-github-actions-limitations"></a>
+ GitHub 動作無法與 CodeCatalyst [Lambda 運算類型](workflows-working-compute.md#compute.types)搭配使用。
+ GitHub 動作會在 [2022 年 11 月](build-images.md#build.previous-image)執行時間環境 Docker 映像上執行，其中包含較舊的工具。如需映像和工具的詳細資訊，請參閱 [指定執行時間環境映像](build-images.md)。
+ 內部依賴[`github`內容](https://docs.github.com/en/actions/learn-github-actions/contexts#github-context)或參考 GitHub 特定資源的 GitHub 動作無法在 CodeCatalyst 中運作。例如，下列動作無法在 CodeCatalyst 中運作：
  + 嘗試新增、變更或更新 GitHub 資源的動作。範例包括更新提取請求的動作，或在 GitHub 中建立問題。
  + 幾乎所有列於 https：//[https://github.com/actions](https://github.com/actions) 的動作。
+ 屬於 Docker 容器動作的 GitHub 動作將可運作，但必須由預設的 Docker 使用者 （根） 執行。 [https://docs.github.com/en/actions/creating-actions/about-custom-actions#docker-container-actions](https://docs.github.com/en/actions/creating-actions/about-custom-actions#docker-container-actions)請勿以使用者 1001 身分執行動作。（撰寫時，使用者 1001 可在 GitHub 中運作，但無法在 CodeCatalyst.) 如需詳細資訊，請參閱 [Dockerfile 支援 GitHub 動作](https://docs.github.com/en/actions/creating-actions/dockerfile-support-for-github-actions)中的 [USER](https://docs.github.com/en/actions/creating-actions/dockerfile-support-for-github-actions#user) 主題。

如需透過 CodeCatalyst 主控台提供的 GitHub 動作清單，請參閱 [新增精選的 GitHub 動作](integrations-github-action-add-curated.md)。

## 如何新增 GitHub 動作 （高階步驟）？
<a name="integrations-github-actions-how-to"></a>

將 GitHub 動作新增至 CodeCatalyst 工作流程的高階步驟如下所示：

1. 在 CodeCatalyst 專案中，您可以**建立工作流程**。工作流程是您定義如何建置、測試和部署應用程式的地方。如需詳細資訊，請參閱[工作流程入門](workflows-getting-started.md)。

1. 在工作流程中，您可以**新增策劃的 GitHub 動作**，或**新增 GitHub 動作**動作。

1. 您執行下列其中一項操作：
   + 如果您選擇新增策劃的動作，請進行設定。如需詳細資訊，請參閱[新增精選的 GitHub 動作](integrations-github-action-add-curated.md)。
   + 如果您選擇新增非策劃的動作，請在 **GitHub 動作**動作中**貼上 GitHub 動作的 YAML 程式碼**。您可以在 GitHub [GitHub Marketplace](https://github.com/marketplace/actions) 中所選 GitHub 動作的詳細資訊頁面上找到此程式碼。您可能需要稍微修改程式碼，才能在 CodeCatalyst 中運作。如需詳細資訊，請參閱[新增「GitHub 動作」動作](integrations-github-action-add.md)。

1. （選用） 在工作流程中，**您可以新增其他動作**，例如建置和測試動作。如需詳細資訊，請參閱[使用工作流程建置、測試和部署使用工作流程建置、測試和部署](workflow.md)。

1. 您可以透過觸發手動或自動**啟動工作流程**。工作流程會執行 GitHub 動作和工作流程中的任何其他動作。如需詳細資訊，請參閱[手動啟動工作流程執行](workflows-manually-start.md)。

如需詳細步驟，請參閱：
+ [新增精選的 GitHub 動作](integrations-github-action-add-curated.md).
+ [新增「GitHub 動作」動作](integrations-github-action-add.md).

## GitHub 動作是否在 GitHub 中執行？
<a name="integrations-github-actions-where-it-runs"></a>

否。GitHub 動作會使用 CodeCatalyst 的[執行期環境映像](workflows-working-compute.md)，在 CodeCatalyst 中執行。

## 也可以使用 GitHub 工作流程嗎？
<a name="integrations-github-actions-workflows-support.title"></a>

否。

## 「GitHub 動作」動作所使用的執行期映像
<a name="integrations-github-actions-runtime"></a>

CodeCatalyst **GitHub 動作**會在 [2022 年 11 月映像](build-images.md#build.previous-image)上執行。如需詳細資訊，請參閱[作用中映像](build-images.md#build-curated-images)。

# 教學課程：使用 GitHub 動作的 Lint 程式碼
<a name="integrations-github-action-tutorial"></a>

在本教學課程中，您將[超級層 GitHub 動作](https://github.com/marketplace/actions/super-linter)新增至 Amazon CodeCatalyst 工作流程。Super-Linter 動作會檢查程式碼、尋找程式碼發生錯誤、格式化問題和可疑建構的區域，然後將結果輸出到 CodeCatalyst 主控台）。將 linter 新增至工作流程後，您會執行工作流程，將範例 Node.js 應用程式 (`app.js`) 內嵌。然後，您可以修正報告的問題，並再次執行工作流程，以查看修正是否有效。

**提示**  
考慮使用 Super-Linter 來內嵌 YAML 檔案，例如 [CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)。

**Topics**
+ [先決條件](#integrations-github-action-tutorial-prereqs)
+ [步驟 1：建立來源儲存庫](#integrations-github-action-tutorial-create-source-repo)
+ [步驟 2：新增 app.js 檔案](#integrations-github-action-tutorial-add-appjs)
+ [步驟 3：建立執行 Super-Linter 動作的工作流程](#integrations-github-action-tutorial-create-workflow)
+ [步驟 4：修正 Super-Linter 發現的問題](#integrations-github-action-tutorial-fix-probs)
+ [清除](#integrations-github-action-tutorial-cleanup)

## 先決條件
<a name="integrations-github-action-tutorial-prereqs"></a>

開始之前，您將需要：
+ 已連線的 CodeCatalyst **空間** AWS 帳戶。如需詳細資訊，請參閱[建立空間](spaces-create.md)。
+ CodeCatalyst 空間中的空專案，稱為 `codecatalyst-linter-project`。選擇**從頭開始**選項以建立此專案。

  ```
  ```

  如需詳細資訊，請參閱[在 Amazon CodeCatalyst 中建立空專案](projects-create.md#projects-create-empty)。

## 步驟 1：建立來源儲存庫
<a name="integrations-github-action-tutorial-create-source-repo"></a>

在此步驟中，您會在 CodeCatalyst 中建立來源儲存庫。您將使用此儲存庫來存放`app.js`本教學課程的範例應用程式來源檔案 。

如需來源儲存庫的詳細資訊，請參閱 [建立來源儲存庫](source-repositories-create.md)。

**建立來源儲存庫**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 導覽至您的專案 `codecatalyst-linter-project`。

1. 在導覽窗格中，選擇**程式碼**，然後選擇**來源儲存庫**。

1. 選擇**新增儲存庫**，然後選擇**建立儲存庫**。

1. 在**儲存庫名稱**中，輸入：

   ```
   codecatalyst-linter-source-repository
   ```

1. 選擇**建立**。

## 步驟 2：新增 app.js 檔案
<a name="integrations-github-action-tutorial-add-appjs"></a>

在此步驟中，您會將 `app.js` 檔案新增至來源儲存庫。`app.js` 包含函數程式碼，其中有一些 linter 會發現的錯誤。

**新增 app.js 檔案**

1. 在 CodeCatalyst 主控台中，選擇您的專案 `codecatalyst-linter-project`。

1. 在導覽窗格中，選擇**程式碼**，然後選擇**來源儲存庫**。

1. 從來源儲存庫清單中，選擇您的儲存庫 `codecatalyst-linter-source-repository`。

1. 在**檔案中**，選擇**建立檔案**。

1. 在文字方塊中，輸入下列程式碼：

   ```
   // const axios = require('axios')
   // const url = 'http://checkip.amazonaws.com/';
   let response;
   /**
    *
    * Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format
    * @param {Object} event - API Gateway Lambda Proxy Input Format
    *
    * Context doc: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html 
    * @param {Object} context
    *
    * Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
    * @returns {Object} object - API Gateway Lambda Proxy Output Format
    *
    */
   exports.lambdaHandler = async (event, context) => {
     try {
       // const ret = await axios(url);
       response = {
         statusCode: 200,
         'body': JSON.stringify({
           message: 'hello world'
           // location: ret.data.trim()
         })
       }
     } catch (err) {
       console.log(err)
       return err
     }
   
       return response
   }
   ```

1. 針對**檔案名稱**，輸入 `app.js`。保留其他預設選項。

1. 選擇 **Commit** (遞交)。

   您現在已建立名為 的檔案`app.js`。

## 步驟 3：建立執行 Super-Linter 動作的工作流程
<a name="integrations-github-action-tutorial-create-workflow"></a>

在此步驟中，您會建立工作流程，在將程式碼推送至來源儲存庫時執行 Super-Linter 動作。工作流程包含下列建置區塊，您在 YAML 檔案中定義：
+ **觸發**條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ **「GitHub 動作」動作** – 在觸發時，**GitHub 動作**動作會執行超級互動動作，進而檢查來源儲存庫中的所有檔案。如果 linter 發現問題，工作流程動作會失敗。

**建立執行 Super-Linter 動作的工作流程**

1. 在 CodeCatalyst 主控台中，選擇您的專案 `codecatalyst-linter-project`。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇**建立工作流程**。

1. 針對**來源儲存庫**，選擇 `codecatalyst-linter-source-repository`。

1. 針對**分支**，選擇 `main`。

1. 選擇**建立**。

1. 刪除 YAML 範例程式碼。

1. 新增下列 YAML：

   ```
   Name: codecatalyst-linter-workflow
   SchemaVersion: "1.0"
   Triggers:
     - Type: PUSH
       Branches:
         - main
   Actions:
     SuperLinterAction:
       Identifier: aws/github-actions-runner@v1
       Configuration:
         Steps:
           github-action-code
   ```

   在上述程式碼中，將 *github-action-code* 取代為 Super-Linter 動作程式碼，如此程序的下列步驟所述。

1. 前往 GitHub Marketplace 中的 [Super-Linter 頁面](https://github.com/marketplace/actions/super-linter)。

1. 在 `steps:`（小寫） 下，尋找程式碼並將其貼到 `Steps:`（大寫） 下的 CodeCatalyst 工作流程中。

   調整 GitHub 動作程式碼以符合 CodeCatalyst 標準，如下列程式碼所示。

   您的 CodeCatalyst 工作流程現在如下所示：

   ```
   Name: codecatalyst-linter-workflow
   SchemaVersion: "1.0"
   Triggers:
     - Type: PUSH
       Branches:
         - main
   Actions:
     SuperLinterAction:
       Identifier: aws/github-actions-runner@v1
       Configuration:
         Steps:
           - name: Lint Code Base
             uses: github/super-linter@v4
             env:
               VALIDATE_ALL_CODEBASE: "true"
               DEFAULT_BRANCH: main
   ```

1. （選用） 選擇**驗證**，以確保 YAML 程式碼在遞交之前有效。

1. 選擇**遞交**，輸入**遞交訊息**，選擇您的`codecatalyst-linter-source-repository`**儲存庫**，然後再次選擇**遞交**。

   您現在已建立工作流程。由於工作流程頂端定義的觸發條件，工作流程執行會自動啟動。

**檢視進行中工作流程執行**

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇您剛建立的工作流程：`codecatalyst-linter-workflow`。

1. 在工作流程圖表中，選擇 **SuperLinterAction**。

1. 等待動作失敗。預期會發生此失敗，因為 linter 在程式碼中發現問題。

1. 保持 CodeCatalyst 主控台開啟，並前往 [步驟 4：修正 Super-Linter 發現的問題](#integrations-github-action-tutorial-fix-probs)。

## 步驟 4：修正 Super-Linter 發現的問題
<a name="integrations-github-action-tutorial-fix-probs"></a>

Super-Linter 應該在`app.js`程式碼以及來源儲存庫中包含`README.md`的檔案中找到問題。

**修正 linter 找到的問題**

1. 在 CodeCatalyst 主控台中，選擇 **Logs** 索引標籤，然後選擇 **Lint Code Base**。

   隨即顯示超級燒錄動作產生的日誌。

1. 在 Super-Linter 日誌中，向下捲動到行 90 周圍，您可以在其中找到問題的起點。它們看起來類似以下內容：

   ```
   /github/workspace/hello-world/app.js:3:13: Extra semicolon.
   /github/workspace/hello-world/app.js:9:92: Trailing spaces not allowed.
   /github/workspace/hello-world/app.js:21:7: Unnecessarily quoted property 'body' found.
   /github/workspace/hello-world/app.js:31:1: Expected indentation of 2 spaces but found 4.
   /github/workspace/hello-world/app.js:32:2: Newline required at end of file but not found.
   ```

1. 修正來源儲存庫`README.md`中的 `app.js` 和 ，並遞交您的變更。
**提示**  
若要修正 `README.md`，請將 `markdown`新增至程式碼區塊，如下所示：  

   ```
   ```markdown
   Setup examples:
   ...
   ```
   ```

   您的變更會自動開始另一個工作流程執行。等待工作流程完成。如果您修正所有問題，工作流程應該會成功。

## 清除
<a name="integrations-github-action-tutorial-cleanup"></a>

在 CodeCatalyst 中清除 ，以從環境中移除此教學課程的追蹤。

**在 CodeCatalyst 中清除**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 刪除 `codecatalyst-linter-source-repository`。

1. 刪除 `codecatalyst-linter-workflow`。

在本教學課程中，您已了解如何將超級層 GitHub 動作新增至 CodeCatalyst 工作流程，以便內嵌一些程式碼。

# 新增「GitHub 動作」動作
<a name="integrations-github-action-add"></a>

***GitHub 動作***動作是 *CodeCatalyst 動作*，可包裝 GitHub 動作，使其與 CodeCatalyst 工作流程相容。

如需詳細資訊，請參閱[與 GitHub 動作整合](integrations-github-actions.md)。

若要將 **GitHub 動作**動作新增至工作流程，請遵循下列步驟。

**提示**  
如需說明如何使用 **GitHub 動作**動作的教學課程，請參閱 [教學課程：使用 GitHub 動作的 Lint 程式碼](integrations-github-action-tutorial.md)。

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

**使用視覺化編輯器新增「GitHub 動作」動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **GitHub**。

1. 搜尋 **GitHub 動作**動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇 **GitHub 動作**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**檢視來源**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 在**輸入**和**組態**索引標籤中，根據您的需求完成欄位。如需每個欄位的說明，請參閱 [「GitHub 動作」動作 YAML](github-action-ref.md)。此參考提供在 YAML 和視覺化編輯器中顯示的每個欄位 （和對應的 YAML 屬性值） 的詳細資訊。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器新增「GitHub 動作」動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中選擇 **GitHub**。

1. 搜尋 **GitHub 動作**動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇 **GitHub 動作**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**檢視來源**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 根據您的需求修改 YAML 程式碼中的屬性。中提供了每個可用屬性的說明[「GitHub 動作」動作 YAML](github-action-ref.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

## 「GitHub 動作」動作定義
<a name="integrations-github-action-add-definition"></a>

**GitHub 動作**定義為工作流程定義檔案內的一組 YAML 屬性。如需這些屬性的詳細資訊，請參閱 [「GitHub 動作」動作 YAML](github-action-ref.md) 中的 [工作流程 YAML 定義](workflow-reference.md)。

# 新增精選的 GitHub 動作
<a name="integrations-github-action-add-curated"></a>

*策劃的 GitHub 動作*是在 CodeCatalyst 主控台中提供的 GitHub 動作，做為如何在 CodeCatalyst 工作流程中使用 GitHub 動作的範例。

統籌 GitHub 動作包裝在 CodeCatalyst 撰寫的 [**GitHub 動作**](integrations-github-action-add.md)中，以識別`aws/github-actions-runner@v1`符識別。例如，以下是精選 GitHub 動作 [TruffleHog OSS](https://github.com/marketplace/actions/trufflehog-oss) 的外觀：

```
Actions:
  TruffleHogOSS_e8:
    Identifier: aws/github-actions-runner@v1
    Inputs:
      Sources:
        - WorkflowSource # This specifies that the action requires this Workflow as a source
    Configuration:
      Steps:
        - uses: trufflesecurity/trufflehog@v3.16.0
          with:
            path: ' ' # Required; description: Repository path
            base: ' ' # Required; description: Start scanning from here (usually main branch).
            head: ' ' # Optional; description: Scan commits until here (usually dev branch).
            extra_args: ' ' # Optional; description: Extra args to be passed to the trufflehog cli.
```

在先前的程式碼中，CodeCatalyst **GitHub Actions** 動作 （由 識別`aws/github-actions-runner@v1`) 會包裝 TruffleHog OSS 動作 （由 識別`trufflesecurity/trufflehog@v3.16.0`)，使其可在 CodeCatalyst 工作流程中運作。

若要設定此動作，您可以將 下的空字串取代`with:`為您自己的值。例如：

```
Actions:
  TruffleHogOSS_e8:
    Identifier: aws/github-actions-runner@v1
    Inputs:
      Sources:
        - WorkflowSource # This specifies that the action requires this Workflow as a source
    Configuration:
      Steps:
        - uses: trufflesecurity/trufflehog@v3.16.0
          with:
            path: ./
            base: main # Required; description: Start scanning from here (usually main branch).
            head: HEAD # Optional; description: Scan commits until here (usually dev branch).
            extra_args: '‐‐debug ‐‐only-verified' # Optional; description: Extra args to be passed to the trufflehog cli.
```

若要將精選的 GitHub 動作新增至工作流程，請使用下列程序。如需在 CodeCatalyst 工作流程中使用 GitHub 動作的一般資訊，請參閱 [與 GitHub 動作整合](integrations-github-actions.md)。

**注意**  
如果您在策劃的動作清單中看不到 GitHub 動作，您仍然可以使用 **GitHub 動作**將其新增至工作流程。如需詳細資訊，請參閱[新增「GitHub 動作」動作](integrations-github-action-add.md)。

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

**使用視覺化編輯器新增策劃的 GitHub 動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **GitHub**。

1. 瀏覽或搜尋 GitHub 動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇 GitHub 動作的名稱。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**檢視來源**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 在**輸入**、**組態**和**輸出**索引標籤中，根據您的需求完成欄位。如需每個欄位的說明，請參閱 [「GitHub 動作」動作 YAML](github-action-ref.md)。此參考提供有關 **GitHub 動作**動作可用的每個欄位 （和對應的 YAML 屬性值） 的詳細資訊，因為它會顯示在 YAML 和視覺化編輯器中。

   如需適用於精選 GitHub 動作之組態選項的相關資訊，請參閱其文件。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

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

**使用 YAML 編輯器新增策劃的 GitHub 動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **GitHub**。

1. 瀏覽或搜尋 GitHub 動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇 GitHub 動作的名稱。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**檢視來源**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 根據您的需求修改 YAML 程式碼中的屬性。有關 **GitHub 動作**動作可用的每個屬性的說明，請參閱 [「GitHub 動作」動作 YAML](github-action-ref.md)。

   如需適用於精選 GitHub 動作之組態選項的相關資訊，請參閱其文件。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 匯出 GitHub 輸出參數
<a name="integrations-github-action-export"></a>

您可以在 CodeCatalyst 工作流程中使用 [GitHub 輸出參數](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter)。

**注意**  
*輸出參數*的另一個單字是*可變*的。由於 GitHub 在其文件中使用 術語*輸出參數*，因此我們也會使用此術語。

使用下列指示從 GitHub 動作匯出 GitHub 輸出參數，以便供其他 CodeCatalyst 工作流程動作使用。

**匯出 GitHub 輸出參數**

1. 開啟工作流程，然後選擇**編輯**。如需詳細資訊，請參閱[建立工作流程](workflows-create-workflow.md)。

1. 在產生您要匯出的輸出參數的 **GitHub 動作**動作中，新增具有如下所示之基礎`Variables`屬性的 `Outputs`區段：

   ```
   Actions:
     MyGitHubAction:
       Identifier: aws/github-actions-runner@v1
       Outputs:
         Variables:
           - 'step-id_output-name'
   ```

   取代：
   + *step-id*，其值為 GitHub 動作`steps`區段中的 `id:` 屬性。
   + *output-name* 與 GitHub 輸出參數的名稱。

**範例**  
下列範例說明如何匯出名為 的 GitHub 輸出參數`SELECTEDCOLOR`。

   ```
   Actions:
     MyGitHubAction:
       Identifier: aws/github-actions-runner@v1
       Outputs:
         Variables:
           - 'random-color-generator_SELECTEDCOLOR'
       Configuration:
         Steps:
           - name: Set selected color
             run: echo "SELECTEDCOLOR=green" >> $GITHUB_OUTPUT
             id: random-color-generator
   ```

# 參考 GitHub 輸出參數
<a name="integrations-github-action-referencing"></a>

使用下列指示來參考 GitHub 輸出參數。

**參考 GitHub 輸出參數**

1. 完成「[匯出 GitHub 輸出參數](integrations-github-action-export.md)」中的步驟。

   GitHub 輸出參數現在可用於其他動作。

1. 請記下輸出參數`Variables`的值。它包含底線 (\$1)。

1. 使用下列語法參考輸出參數：

   ```
   ${action-name.output-name}
   ```

   取代：
   + *action-name* 與產生輸出參數的 CodeCatalyst **GitHub 動作**名稱 （請勿使用 GitHub 動作的 `name`或 `id`)。
   + *output-name* 以及您稍早記下的輸出參數`Variables`值。

   **範例**

   ```
   BuildActionB:
     Identifier: aws/build@v1
     Configuration:
       Steps:
         - Run: echo ${MyGitHubAction.random-color-generator_SELECTEDCOLOR}
   ```

**具有內容的範例**  
下列範例示範如何在 中設定`SELECTEDCOLOR`變數`GitHubActionA`、輸出變數，然後在 中參考變數`BuildActionB`。

   ```
   Actions:
     GitHubActionA:
       Identifier: aws/github-actions-runner@v1
       Configuration:
         Steps:
           - name: Set selected color
             run: echo "SELECTEDCOLOR=green" >> $GITHUB_OUTPUT
             id: random-color-generator
       Outputs:
         Variables:
         - 'random-color-generator_SELECTEDCOLOR'
         
      BuildActionB:
       Identifier: aws/build@v1
       Configuration:
         Steps:
           - Run: echo ${GitHubActionA.random-color-generator_SELECTEDCOLOR}
   ```

# 「GitHub 動作」動作 YAML
<a name="github-action-ref"></a>

以下是 **GitHub 動作**的 YAML 定義。

此動作定義以區段的形式存在於更廣泛的工作流程定義檔案中。如需有關此檔案的詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

在下列程式碼中選擇 YAML 屬性，以查看描述。

**注意**  
下列大多數 YAML 屬性在視覺化編輯器中都有對應的 UI 元素。若要查詢 UI 元素，請使用 **Ctrl\$1F**。 元素將與其相關聯的 YAML 屬性一起列出。

```
# The workflow definition starts here.
# See 最上層屬性 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.
  action-name:
    Identifier:  aws/github-actions-runner@v1
    DependsOn:
      - dependent-action-name-1
    Compute:
      Fleet: fleet-name
    Timeout: timeout-minutes
    Environment:
      Name: environment-name
      Connections:
        - Name: account-connection-name
          Role: iam-role-name
    Inputs:
      Sources:
        - source-name-1
        - source-name-2
      Artifacts:
        - artifact-name
      Variables:
        - Name: variable-name-1
          Value: variable-value-1
        - Name: variable-name-2
          Value: variable-value-2   
    Outputs:
      Artifacts:
        - Name: output-artifact-1
          Files: 
            - github-output/artifact-1.jar
            - "github-output/build*"
        - Name: output-artifact-2
          Files:
            - github-output/artifact-2.1.jar
            - github-output/artifact-2.2.jar
      Variables:
        - variable-name-1
        - variable-name-2
      AutoDiscoverReports:
        Enabled: true | false
        ReportNamePrefix: AutoDiscovered
        IncludePaths:
          - "**/*"
        ExcludePaths:
          - node_modules/cdk/junit.xml
        SuccessCriteria:
          PassRate: percent
          LineCoverage: percent
          BranchCoverage: percent
          Vulnerabilities:
            Severity: CRITICAL|HIGH|MEDIUM|LOW|INFORMATIONAL
            Number: whole-number
      Reports:
        report-name-1:
          Format: format
          IncludePaths:
            - "*.xml"
          ExcludePaths:
            - report2.xml
            - report3.xml
          SuccessCriteria:
            PassRate: percent
            LineCoverage: percent
            BranchCoverage: percent
            Vulnerabilities:
              Severity: CRITICAL|HIGH|MEDIUM|LOW|INFORMATIONAL
              Number: whole-number
    Configuration      
      Steps:
        - github-actions-code
```

## action-name
<a name="github.name"></a>

(必要)

指定動作的名稱。工作流程中的所有動作名稱都必須是唯一的。動作名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您無法使用引號在動作名稱中啟用特殊字元和空格。

對應的 UI：組態索引標籤/*action-name*

## Identifier
<a name="github.identifier"></a>

(*action-name*/**Identifier**)

識別 動作。除非您想要變更版本，否則請勿變更此屬性。如需詳細資訊，請參閱[指定要使用的動作版本](workflows-action-versions.md)。

將 `aws/github-actions-runner@v1`用於 **GitHub 動作**。

對應的 UI：工作流程圖表/*action-name*/**aws/github-actions-runner@v1** 標籤

## DependsOn
<a name="github.depends-on"></a>

(*action-name*/**DependsOn**)

(選用)

指定必須成功執行的動作、動作群組或閘道，才能執行此動作。

如需 'depends on' 功能的詳細資訊，請參閱 [定序動作](workflows-depends-on.md)。

對應的 UI：輸入索引標籤/**取決於 - 選用**

## Compute
<a name="github.computename"></a>

(*action-name*/**Compute**)

(選用)

用來執行工作流程動作的運算引擎。您可以在工作流程層級或動作層級指定運算，但不能同時指定兩者。在工作流程層級指定時，運算組態會套用至工作流程中定義的所有動作。在工作流程層級，您也可以在相同的執行個體上執行多個動作。如需詳細資訊，請參閱[跨動作共用運算](compute-sharing.md)。

對應的 UI：*無*

## Fleet
<a name="github.computefleet"></a>

(*action-name*/Compute/**Fleet**)

(選用)

指定將執行工作流程或工作流程動作的機器或機群。使用隨需機群時，當動作開始時，工作流程會佈建所需的資源，並在動作完成時銷毀機器。隨需機群的範例：`Linux.x86-64.Large`、`Linux.x86-64.XLarge`。如需隨需機群的詳細資訊，請參閱[隨需機群屬性](workflows-working-compute.md#compute.on-demand)。

使用佈建機群，您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態，準備好立即處理動作。如需佈建機群的詳細資訊，請參閱 [佈建的機群屬性](workflows-working-compute.md#compute.provisioned-fleets)。

如果省略 `Fleet` ，則預設值為 `Linux.x86-64.Large`。

對應的 UI：組態索引標籤/**運算機群 - 選用**

## Timeout
<a name="github.timeout"></a>

(*action-name*/**Timeout**)

(選用)

指定動作在 CodeCatalyst 結束動作之前可執行的時間，以分鐘為單位 (YAML 編輯器） 或小時和分鐘為單位。最小值為 5 分鐘，最大值如 中所述[CodeCatalyst 中工作流程的配額](workflows-quotas.md)。預設逾時與最大逾時相同。

對應的 UI：組態索引標籤/**逾時 - 選用 **

## Environment
<a name="github.environment"></a>

(*action-name*/**Environment**)

(選用)

指定要與 動作搭配使用的 CodeCatalyst 環境。動作會連線至所選環境中指定的 AWS 帳戶 和選用 Amazon VPC。動作會使用環境中指定的預設 IAM 角色來連線至 AWS 帳戶，並使用 [Amazon VPC 連線](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色來連線至 Amazon VPC。

**注意**  
如果預設 IAM 角色沒有 動作所需的許可，您可以將動作設定為使用不同的角色。如需詳細資訊，請參閱[變更 動作的 IAM 角色](deploy-environments-switch-role.md)。

如需環境的詳細資訊，請參閱 [部署至 AWS 帳戶 和 VPCs](deploy-environments.md)和 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：組態索引標籤/**環境**

## Name
<a name="github.environment.name"></a>

(*action-name*/Environment/**Name**)

（如果[Environment](#github.environment)包含 則為必要）

指定您要與動作建立關聯的現有環境名稱。

對應的 UI：組態索引標籤/**環境**

## Connections
<a name="github.environment.connections"></a>

(*action-name*/Environment/**Connections**)

(選用)

指定要與動作建立關聯的帳戶連線。您可以在 下指定最多一個帳戶連線`Environment`。

如果您未指定帳戶連線：
+ 動作會使用 CodeCatalyst 主控台中環境指定的 AWS 帳戶 連線和預設 IAM 角色。如需將帳戶連線和預設 IAM 角色新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。
+ 預設 IAM 角色必須包含 動作所需的政策和許可。若要判斷這些政策和許可是什麼，請參閱動作 YAML 定義文件中**角色**屬性的描述。

如需帳戶連線的詳細資訊，請參閱 [允許存取已連線 AWS 的資源 AWS 帳戶](ipa-connect-account.md)。如需將帳戶連線新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：組態tab/Environment/What*我的環境*是什麼？/三個點功能表/**切換角色**

## Name
<a name="github.environment.connections.name"></a>

(*action-name*/Environment/Connections/**Name**)

（如果[Connections](#github.environment.connections)包含 則為必要）

指定帳戶連線的名稱。

對應的 UI：組態tab/Environment/What*我的環境*是什麼？/三個點功能表/**切換角色**

## Role
<a name="github.environment.connections.role"></a>

(*action-name*/Environment/Connections/**Role**)

（如果[Connections](#github.environment.connections)包含 則為必要）

指定此動作用於在 Amazon S3 和 Amazon ECR 等 AWS 服務中存取和操作的 IAM 角色名稱。請確定此角色已新增至您 AWS 帳戶 空間中的連線。若要將 IAM 角色新增至帳戶連線，請參閱 [新增 IAM 角色至帳戶連線](ipa-connect-account-addroles.md)。

如果您未指定 IAM 角色，則動作會使用 CodeCatalyst 主控台中[環境中](deploy-environments.md)列出的預設 IAM 角色。如果您在環境中使用預設角色，請確定其具有下列政策。

**注意**  
您可以搭配此動作使用 `CodeCatalystWorkflowDevelopmentRole-spaceName`角色。如需有關此角色的詳細資訊，請參閱 [為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有可能造成安全風險的完整存取許可。我們建議您只在安全性較少的教學課程和案例中使用此角色。

**警告**  
將許可限制為 **GitHub 動作**所需的許可。使用具有更廣泛許可的角色可能會帶來安全風險。

對應的 UI：組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**

## Inputs
<a name="github.inputs"></a>

(*action-name*/**Inputs**)

(選用)

`Inputs` 區段定義 動作在工作流程執行期間所需的資料。

**注意**  
每個 **GitHub 動作**最多允許四個輸入 （一個來源和三個成品）。變數不會計入此總計。

如果您需要參考位於不同輸入中的檔案 （例如來源和成品），則來源輸入是主要輸入，而成品是次要輸入。對次要輸入中檔案的參考需要特殊的字首，才能將其從主要輸入中消除。如需詳細資訊，請參閱[範例：參考多個成品中的檔案](workflows-working-artifacts-ex.md#workflows-working-artifacts-ex-ref-file)。

對應的 UI：**輸入**索引標籤

## Sources
<a name="github.inputs.sources"></a>

(*action-name*/Inputs/**Sources**)

(選用)

指定代表 動作所需來源儲存庫的標籤。目前，唯一支援的標籤是 `WorkflowSource`，代表儲存工作流程定義檔案的來源儲存庫。

如果您省略來源，則必須在 下指定至少一個輸入成品`action-name/Inputs/Artifacts`。

如需來源的詳細資訊，請參閱 [將來源儲存庫連線至工作流程](workflows-sources.md)。

對應的 UI：輸入索引標籤/**來源 - 選用**

## Artifacts - input
<a name="github.inputs.artifacts"></a>

(*action-name*/Inputs/**Artifacts**)

(選用)

指定您要提供作為此動作輸入之先前動作的成品。這些成品必須已定義為先前動作中的輸出成品。

如果您未指定任何輸入成品，則必須在 下指定至少一個來源儲存庫`action-name/Inputs/Sources`。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

**注意**  
如果**成品 - 選用**下拉式清單無法使用 （視覺化編輯器），或者您在驗證 YAML (YAML 編輯器） 時在 中發生錯誤，可能是因為動作僅支援一個輸入。在此情況下，請嘗試移除來源輸入。

對應的 UI：輸入索引標籤/**成品 - 選用**

## Variables - input
<a name="github.inputs.variables"></a>

(*action-name*/Inputs/**Variables**)

(選用)

指定名稱/值對的序列，以定義您要提供給動作的輸入變數。變數名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在變數名稱中啟用特殊字元和空格。

如需變數的詳細資訊，包括範例，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

對應的 UI：輸入索引標籤/**變數 - 選用**

## Outputs
<a name="github.outputs"></a>

(*action-name*/**Outputs**)

(選用)

定義 動作在工作流程執行期間輸出的資料。

對應的 UI：**輸出**索引標籤

## Artifacts - output
<a name="github.outputs.artifacts"></a>

(*action-name*/Outputs/**Artifacts**)

(選用)

指定 動作產生的成品名稱。成品名稱在工作流程中必須是唯一的，且僅限於英數字元 (a-z、A-Z、0-9) 和底線 (\$1)。不允許使用空格、連字號 (-) 和其他特殊字元。您無法使用引號在輸出成品名稱中啟用空格、連字號和其他特殊字元。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：輸出索引標籤/**成品**

## Name
<a name="github.outputs.artifacts.name"></a>

(*action-name*/Outputs/Artifacts/**Name**)

（如果[Artifacts - output](#github.outputs.artifacts)包含 則為必要）

指定 動作產生的成品名稱。成品名稱在工作流程中必須是唯一的，且僅限於英數字元 (a-z、A-Z、0-9) 和底線 (\$1)。不允許使用空格、連字號 (-) 和其他特殊字元。您無法使用引號在輸出成品名稱中啟用空格、連字號和其他特殊字元。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：輸出tab/Artifacts/Add成品/**建置成品名稱**

## Files
<a name="github.outputs.artifacts.files"></a>

(*action-name*/Outputs/Artifacts/**Files**)

（如果[Artifacts - output](#github.outputs.artifacts)包含 則為必要）

指定 CodeCatalyst 在由 動作輸出的成品中包含的檔案。這些檔案在執行時由工作流程動作產生，也可在您的來源儲存庫中使用。檔案路徑可以位於來源儲存庫或先前動作的成品中，並與來源儲存庫或成品根相關。您可以使用 glob 模式來指定路徑。範例：
+ 若要指定位於建置位置根目錄或來源儲存庫位置的單一檔案，請使用 `my-file.jar`。
+ 若要在子目錄中指定單一檔案，請使用 `directory/my-file.jar`或 `directory/subdirectory/my-file.jar`。
+ 若要指定所有檔案，請使用 `"**/*"`。`**` 全域模式表示 符合任意數量的子目錄。
+ 若要在名為 的目錄中指定所有檔案和目錄`directory`，請使用 `"directory/**/*"`。`**` 全域模式表示 符合任意數量的子目錄。
+ 若要指定目錄中名為 的所有檔案`directory`，但不是其任何子目錄，請使用 `"directory/*"`。

**注意**  
如果您的檔案路徑包含一或多個星號 (`*`) 或其他特殊字元，請以雙引號 () 括住路徑`""`。如需特殊字元的詳細資訊，請參閱 [語法準則和慣例](workflow-reference.md#workflow.terms.syntax.conv)。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

**注意**  
您可能需要在檔案路徑中新增字首，以指出要找到它的成品或來源。如需詳細資訊，請參閱[參考來源儲存庫檔案](workflows-sources-reference-files.md)及[參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

對應的 UI：輸出tab/Artifacts/Add**建置產生的成品/檔案**

## Variables - output
<a name="github.outputs.variables"></a>

(*action-name*/Outputs/**Variables**)

(選用)

指定您希望動作匯出的變數，以便可供後續動作使用。

如需變數的詳細資訊，包括範例，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

對應的 UI：輸出索引標籤/變數/**新增變數**

## variable-name-1
<a name="github.outputs.variables.name"></a>

(*action-name*/Outputs/Variables**variable-name-1**)

(選用)

指定您要動作匯出的變數名稱。此變數必須已在相同動作的 `Inputs`或 `Steps`區段中定義。

如需變數的詳細資訊，包括範例，請參閱 [在工作流程中使用變數](workflows-working-with-variables.md)。

對應的 UI：輸出tab/Variables/Add變數/**名稱**

## AutoDiscoverReports
<a name="github.outputs.autodiscover"></a>

(*action-name*/Outputs/**AutoDiscoverReports**)

(選用)

定義自動探索功能的組態。

當您啟用自動探索時，CodeCatalyst 會搜尋所有`Inputs`傳遞至動作的所有檔案，以及動作本身所產生的所有檔案，尋找測試、程式碼涵蓋範圍和軟體合成分析 (SCA) 報告。對於找到的每個報告，CodeCatalyst 會將其轉換為 CodeCatalyst 報告。*CodeCatalyst 報告*是完全整合到 CodeCatalyst 服務的報告，可以透過 CodeCatalyst 主控台檢視和操作。

**注意**  
根據預設，自動探索功能會檢查所有檔案。您可以使用 [IncludePaths](#github.reports.includepaths)或 [ExcludePaths](#github.reports.excludepaths) 屬性來限制要檢查哪些檔案。

對應的 UI：*無*

## Enabled
<a name="github.outputs.autodiscover.enabled"></a>

(*action-name*/Outputs/AutoDiscoverReports/**Enabled**)

(選用)

啟用或停用自動探索功能。

有效值為 `true` 或 `false`。

如果省略 `Enabled` ，則預設值為 `true`。

對應的 UI：輸出索引標籤/報告/**自動探索報告**

## ReportNamePrefix
<a name="github.outputs.autodiscover.reportnameprefix"></a>

(*action-name*/Outputs/AutoDiscoverReports/**ReportNamePrefix**)

（如果 [AutoDiscoverReports](#github.outputs.autodiscover) 已包含並啟用，則為必要項目）

指定 CodeCatalyst 在找到的所有報告前面加上的字首，以命名其相關聯的 CodeCatalyst 報告。例如，如果您指定字首 `AutoDiscovered`，而 CodeCatalyst 會自動探索兩個測試報告 `TestSuiteOne.xml`和 `TestSuiteTwo.xml`，則相關聯的 CodeCatalyst 報告將命名為 `AutoDiscoveredTestSuiteOne`和 `AutoDiscoveredTestSuiteTwo`。

對應的 UI：輸出tab/Reports/Automatically探索報告/**報告字首**

## IncludePaths
<a name="github.reports.includepaths"></a>

(*action-name*/Outputs/AutoDiscoverReports/**IncludePaths**)

或

(*action-name*/Outputs/Reports/*report-name-1*/**IncludePaths**)

（如果 [AutoDiscoverReports](#github.outputs.autodiscover)包含並啟用，或如果 [Reports](#github.configuration.reports) 包含，則為必要）

指定 CodeCatalyst 在搜尋原始報告時包含的檔案和檔案路徑。例如，如果您指定 `"/test/report/*"`，CodeCatalyst 會搜尋尋找`/test/report/*`目錄的動作所使用的整個[建置映像](build-images.md)。找到該目錄時，CodeCatalyst 接著會尋找該目錄中的報告。

**注意**  
如果您的檔案路徑包含一或多個星號 (`*`) 或其他特殊字元，請以雙引號 () 括住路徑`""`。如需特殊字元的詳細資訊，請參閱 [語法準則和慣例](workflow-reference.md#workflow.terms.syntax.conv)。

如果省略此屬性，預設值為 `"**/*"`，表示搜尋包含所有路徑的所有檔案。

**注意**  
對於手動設定的報告， `IncludePaths` 必須是符合單一檔案的 glob 模式。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/'包含/排除路徑'/**包含路徑**
+ 輸出tab/Reports/Manually設定報告/*report-name-1*/'Include/excde paths'/**Include paths**

## ExcludePaths
<a name="github.reports.excludepaths"></a>

(*action-name*/Outputs/AutoDiscoverReports/**ExcludePaths**)

或

(*action-name*/Outputs/Reports/*report-name-1*/**ExcludePaths**)

(選用)

指定 CodeCatalyst 在搜尋原始報告時排除的檔案和檔案路徑。例如，如果您指定 `"/test/my-reports/**/*"`，CodeCatalyst 不會搜尋 `/test/my-reports/`目錄中的檔案。若要忽略目錄中的所有檔案，請使用 `**/*` glob 模式。

**注意**  
如果您的檔案路徑包含一或多個星號 (`*`) 或其他特殊字元，請以雙引號 () 括住路徑`""`。如需特殊字元的詳細資訊，請參閱 [語法準則和慣例](workflow-reference.md#workflow.terms.syntax.conv)。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/'包含/排除路徑'/**排除路徑**
+ 輸出tab/Reports/Manually設定報告/*report-name-1*/'Include/exclude paths'/**Exclude paths**

## SuccessCriteria
<a name="github.reports.successcriteria"></a>

(*action-name*/Outputs/AutoDiscoverReports/**SuccessCriteria**)

或

(*action-name*/Outputs/Reports/*report-name-1*/**SuccessCriteria**)

(選用)

指定測試、程式碼涵蓋範圍、軟體合成分析 (SCA) 和靜態分析 (SA) 報告的成功條件。

如需詳細資訊，請參閱[設定報告的成功條件](test-config-action.md#test.success-criteria)。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/**成功條件**
+ 輸出tab/Reports/Manually設定報告/*report-name-1*/**成功條件**

## PassRate
<a name="github.reports.successcriteria.passrate"></a>

(*action-name*/Outputs/AutoDiscoverReports/SuccessCriteria/**PassRate**)

或

(*action-name*/Outputs/Reports/*report-name-1*/SuccessCriteria/**PassRate**)

(選用)

指定測試報告中必須傳遞的測試百分比，相關 CodeCatalyst 報告才能標示為已傳遞。有效值包括小數位數。例如：`50`、`60.5`。通過率條件僅適用於測試報告。如需測試報告的詳細資訊，請參閱 [測試報告](test-workflow-actions.md#test-reports)。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/成功條件/**通過率**
+ 輸出tab/Reports/Manually設定報告/*report-name-1*/成功條件/**通過率**

## LineCoverage
<a name="github.reports.successcriteria.linecoverage"></a>

(*action-name*/Outputs/AutoDiscoverReports/SuccessCriteria/**LineCoverage**)

或

(*action-name*/Outputs/Reports/*report-name-1*/SuccessCriteria/**LineCoverage**)

(選用)

指定程式碼涵蓋範圍報告中必須涵蓋的行數百分比，以便將相關聯的 CodeCatalyst 報告標示為已傳遞。有效值包括小數位數。例如：`50`、`60.5`。明細涵蓋範圍條件只會套用至程式碼涵蓋範圍報告。如需程式碼涵蓋範圍報告的詳細資訊，請參閱 [程式碼涵蓋範圍報告](test-workflow-actions.md#test-code-coverage-reports)。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/成功條件/**行涵蓋範圍**
+ Outputs tab/Reports/Manually configure report/*report-name-1*/Success criteria/**Line coverage**

## BranchCoverage
<a name="github.reports.successcriteria.branchcoverage"></a>

(*action-name*/Outputs/AutoDiscoverReports/SuccessCriteria/**BranchCoverage**)

或

(*action-name*/Outputs/Reports/*report-name-1*/SuccessCriteria/**BranchCoverage**)

(選用)

指定程式碼涵蓋範圍報告中必須涵蓋的分支百分比，以便將關聯的 CodeCatalyst 報告標示為已傳遞。有效值包括小數位數。例如：`50`、`60.5`。分支涵蓋範圍條件僅適用於程式碼涵蓋範圍報告。如需程式碼涵蓋範圍報告的詳細資訊，請參閱 [程式碼涵蓋範圍報告](test-workflow-actions.md#test-code-coverage-reports)。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/成功條件/**分支涵蓋範圍**
+ 輸出tab/Reports/Manually設定報告/*report-name-1*/成功條件/**分支涵蓋範圍**

## Vulnerabilities
<a name="github.reports.successcriteria.vulnerabilities"></a>

(*action-name*/Outputs/AutoDiscoverReports/SuccessCriteria/**Vulnerabilities**)

或

(*action-name*/Outputs/Reports/*report-name-1*/SuccessCriteria/**Vulnerabilities**)

(選用)

針對要標示為已傳遞的相關聯 CodeCatalyst 報告，指定 SCA 報告中允許的漏洞數量和嚴重性上限。若要指定漏洞，您必須指定：
+ 您要包含在計數中的漏洞最低嚴重性。從最嚴重到最不嚴重的有效值為：`CRITICAL`、`HIGH`、`MEDIUM`、`LOW`、`INFORMATIONAL`。

  例如，如果您選擇 `HIGH`，則 `HIGH`和 `CRITICAL` 漏洞將會很高。
+ 您想要允許之指定嚴重性的漏洞數量上限。超過此數字會導致 CodeCatalyst 報告標示為失敗。有效值為整數。

漏洞條件只會套用至 SCA 報告。如需 SCA 報告的詳細資訊，請參閱 [軟體合成分析報告](test-workflow-actions.md#test-sca-reports)。

若要指定最低嚴重性，請使用 `Severity` 屬性。若要指定漏洞數量上限，請使用 `Number` 屬性。

如需 SCA 報告的詳細資訊，請參閱 [品質報告類型](test-workflow-actions.md#test-reporting)。

對應的 UI：
+ 輸出tab/Reports/Automatically探索報告/成功條件/**漏洞**
+ 輸出tab/Reports/Manually設定報告/*report-name-1*/成功條件/**漏洞**

## Reports
<a name="github.configuration.reports"></a>

(*action-name*/Outputs/**Reports**)

(選用)

指定測試報告組態的區段。

對應的 UI：輸出索引標籤/**報告**

## report-name-1
<a name="github.configuration.reports.report-name-1"></a>

(*action-name*/Outputs/Reports/**report-name-1**)

（如果[Reports](#github.configuration.reports)包含 則為必要）

您要提供給 CodeCatalyst 報告的名稱，該報告將從原始報告產生。

對應的 UI：輸出tab/Reports/Manually設定報告/**報告名稱**

## Format
<a name="github.configuration.reports.name.testresults.format"></a>

(*action-name*/Outputs/Reports/*report-name-1*/**Format**)

（如果[Reports](#github.configuration.reports)包含 則為必要）

指定您用於報告的檔案格式。可能的值如下。
+ 對於測試報告：
  + 針對 Cucumber JSON，指定 **Cucumber** （視覺化編輯器） 或 `CUCUMBERJSON`(YAML 編輯器）。
  + 針對 JUnit XML，指定 **JUnit** （視覺化編輯器） 或 `JUNITXML`(YAML 編輯器）。
  + 對於 NUnit XML，指定 **NUnit** （視覺化編輯器） 或 `NUNITXML`(YAML 編輯器）。
  + 對於 NUnit 3 XML，指定 **NUnit3** （視覺化編輯器） 或 `NUNIT3XML`(YAML 編輯器）。
  + 針對 Visual Studio TRX，指定 **Visual Studio TRX** （視覺化編輯器） 或 `VISUALSTUDIOTRX`(YAML 編輯器）。
  + 針對 TestNG XML，指定 **TestNG** （視覺化編輯器） 或 `TESTNGXML`(YAML 編輯器）。
+ 對於程式碼涵蓋範圍報告：
  + 對於 Clover XML，指定 **Clover** （視覺化編輯器） 或 `CLOVERXML`(YAML 編輯器）。
  + 對於 Cobertura XML，指定 **Cobertura** （視覺編輯器） 或 `COBERTURAXML`(YAML 編輯器）。
  + 對於 JaCoCo XML，指定 **JaCoCo** （視覺編輯器） 或 `JACOCOXML`(YAML 編輯器）。
  + 對於 Simplecov 產生的 SimpleCov JSON，而非 [simplecov-json](https://github.com/vicentllongo/simplecov-json)，請指定 **Simplecov** （視覺化編輯器） 或 `SIMPLECOV`(YAML 編輯器）。 [https://github.com/simplecov-ruby/simplecov](https://github.com/simplecov-ruby/simplecov)
+ 對於軟體合成分析 (SCA) 報告：
  + 對於 SARIF，指定 **SARIF** （視覺化編輯器） 或 `SARIFSCA`(YAML 編輯器）。

對應的 UI：輸出tab/Reports/Manually設定報告/新增報告/*report-name-1*/**報告類型**和**報告格式**

## Configuration
<a name="github.configuration"></a>

(*action-name*/**Configuration**)

（必要） 您可以在此區段定義 動作的組態屬性。

對應的 UI：**組態**索引標籤

## Steps
<a name="github.configuration.steps"></a>

(*action-name*/Configuration/**Steps**)

(必要) 

指定 GitHub Marketplace 中動作詳細資訊頁面上顯示的 [GitHub ](https://github.com/marketplace)動作程式碼。請依照下列準則新增程式碼：

1. 將 GitHub 動作`steps:`區段中的程式碼貼到 CodeCatalyst 工作流程的 `Steps:`區段。程式碼以破折號 (-) 開頭，如下所示。

   要貼上的 GitHub 程式碼：

   ```
   - name: Lint Code Base
     uses: github/super-linter@v4
     env:
       VALIDATE_ALL_CODEBASE: false
       DEFAULT_BRANCH: master
       GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
   ```

1. 檢閱您剛貼上的程式碼，並視需要修改，使其符合 CodeCatalyst 標準。例如，使用上述程式碼區塊，您可以移除*紅色斜體*的程式碼，並以**粗體**新增程式碼。

   CodeCatalyst 工作流程 yaml：

   ```
   Steps:      
      - name: Lint Code Base
        uses: github/super-linter@v4
        env:
          VALIDATE_ALL_CODEBASE: false
          DEFAULT_BRANCH: mastermain
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
   ```

1. 如需 GitHub 動作中包含但`steps:`區段內不存在的其他程式碼，請使用 CodeCatalyst 同等程式碼將其新增至 CodeCatalyst 工作流程。您可以檢閱 [工作流程 YAML 定義](workflow-reference.md)，深入了解如何將 GitHub 程式碼移植到 CodeCatalyst。詳細的遷移步驟不在本指南的範圍內。

以下是如何在 **GitHub 動作**中指定檔案路徑的範例：

```
Steps:
  - name: Lint Code Base
    uses: github/super-linter@v4
    ...
  - run: cd /sources/WorkflowSource/MyFolder/  && cat file.txt
  - run: cd /artifacts/MyGitHubAction/MyArtifact/MyFolder/  && cat file2.txt
```

如需指定檔案路徑的詳細資訊，請參閱 [參考來源儲存庫檔案](workflows-sources-reference-files.md)和 [參考成品中的檔案](workflows-working-artifacts-refer-files.md)。

對應的 UI：組態索引標籤/**GitHub 動作 YAML**