

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

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

# 與 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**