

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

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

# 在動作之間共用成品和檔案
<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. 使用您選擇的封存擷取公用程式來擷取封存。