使用成品在工作流程中的動作之間共用資料 - Amazon CodeCatalyst

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

使用成品在工作流程中的動作之間共用資料

人工因素是工作流程動作的輸出,通常由資料夾或檔案的封存組成。人工因素很重要,因為它們可讓您在動作之間共用檔案和資訊。

例如,您可能有一個生成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檔案。

我可以共享工件而不將它們指定為輸出和輸入嗎?

是,您可以在動作之間共用成品,而不必在動作的 YAML 程式碼OutputsInputs區段中指定它們。若要這麼做,您必須開啟運算共用。如需有關計算共用以及如何在開啟時指定人工因素的詳細資訊,請參閱跨動作共用運算

注意

雖然運算共用功能可讓您省去OutputsInputs區段的需求來簡化工作流程的 YAML 程式碼,但是在開啟此功能之前,您應該注意這項功能的限制。如需有關這些限制的資訊,請參閱計算共用的考量

可以在工作流程之間共用成品嗎?

否,您無法在不同工作流程之間共用人工因素;不過,您可以在相同工作流程中的動作之間共用人工因素。

定義輸出人工因素

使用下列指示來定義您要輸出動作的人工因素。然後,此成品可供其他動作使用。

注意

並非所有動作都支援輸出成品。若要判斷您的動作是否支援這些動作,請執行後續的視覺化編輯器指示,並查看動作是否包含「輸出」索引標籤上的「輸出成品」按鈕。如果是,則支援輸出加工品。

Visual
若要使用視覺化編輯器定義輸出成品
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

  3. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

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

  5. 選擇編輯

  6. 選擇 [視覺]。

  7. 在工作流程圖中,選擇將產生加工品的動作。

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

  9. 人工因素下,選擇新增人工因素

  10. 選擇新增人工因素,然後在欄位中輸入資訊,如下所示。

    建置成品名稱

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

    如需人工因素的詳細資訊 (包括範例),請參閱使用成品在工作流程中的動作之間共用資料

    由構建生成的文件

    指定動作輸出的加工品中 CodeCatalyst 包含的檔案。這些檔案會在工作流程動作執行時由工作流程動作產生,也可在來源存放庫中使用。檔案路徑可以位於來源儲存庫或上一個動作的人工因素中,且相對於來源儲存庫或人工因素根目錄。您可以使用全域模式來指定路徑。範例:

    • 若要指定位於組建位置或來源存放庫位置根目錄中的單一檔案,請使用my-file.jar

    • 若要在子目錄中指定單一檔案,請使用directory/my-file.jardirectory/subdirectory/my-file.jar

    • 若要指定所有檔案,請使用"**/*"**glob 模式指示匹配任意數量的子目錄。

    • 若要指定名為的目錄中的所有檔案和目錄directory,請使用"directory/**/*"**glob 模式指示匹配任意數量的子目錄。

    • 若要指定名為的目錄中的所有檔案directory,但不指定其任何子目錄中的檔案,請使用"directory/*"

    注意

    如果檔案路徑包含一或多個星號 (*) 或其他特殊字元,請以雙引號 () 括住路徑。""如需特殊字元的詳細資訊,請參閱語法指南和慣例

    如需人工因素的詳細資訊 (包括範例),請參閱使用成品在工作流程中的動作之間共用資料

    注意

    您可能需要在檔案路徑中新增前置詞,以指出要在其中尋找的成品或來源。如需詳細資訊,請參閱 參考來源儲存庫中的檔案參考人工因素中的檔案

  11. (選擇性) 選擇 [驗證],在認可之前驗證工作流程的 YAML 程式碼。

  12. 選擇「確認」,輸入確認訊息,然後再次選擇「確認」。

YAML
若要使用 YAML 編輯器定義輸出成品
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

  3. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

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

  5. 選擇編輯

  6. 選擇 YAML

  7. 在工作流程動作中,新增類似下列內容的程式碼:

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

    如需更多範例,請參閱文物的例子。如需詳細資訊,請參工作流程 YAML 定義閱您的動作。

  8. (選擇性) 選擇 [驗證],在認可之前驗證工作流程的 YAML 程式碼。

  9. 選擇「確認」,輸入確認訊息,然後再次選擇「確認」。

定義輸入人工因素

如果您要使用由其他動作產生的人工因素,則必須將其指定為目前動作的輸入。您可以指定多個成品作為輸入,這取決於動作。如需詳細資訊,請參工作流程 YAML 定義閱您的動作。

注意

您無法從其他工作流程參考人工因素。

使用下列指示,從另一個動作指定人工因素作為目前動作的輸入。

先決條件

在開始之前,請確定已從其他動作輸出成品。如需詳細資訊,請參閱 定義輸出人工因素。輸出成品可讓其他動作使用。

Visual
將人工因素指定為動作輸入的步驟 (視覺化編輯器)
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

  3. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

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

  5. 選擇編輯

  6. 選擇 [視覺]。

  7. 在工作流程圖中,選擇您要將成品指定為輸入的動作。

  8. 選擇「輸入」。

  9. 人工因素-選擇性中,執行下列動作:

    指定您要提供作為此動作輸入的先前動作的人工因素。在先前動作中,必須將這些人工因素定義為輸出人工因素。

    如果您未指定任何輸入人工因素,則必須在下指定至少一個來源儲存庫action-name/Inputs/Sources

    如需人工因素的詳細資訊 (包括範例),請參閱使用成品在工作流程中的動作之間共用資料

    注意

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

  10. (選擇性) 選擇 [驗證],在認可之前驗證工作流程的 YAML 程式碼。

  11. 選擇「確認」,輸入確認訊息,然後再次選擇「確認」。

YAML
若要指定成品做為動作的輸入 (YAML 編輯器)
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

  3. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

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

  5. 選擇編輯

  6. 選擇 YAML

  7. 在您要將成品指定為輸入的動作中,新增類似下列內容的程式碼:

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

    如需更多範例,請參閱文物的例子

  8. (選擇性) 選擇 [驗證],在認可之前驗證工作流程的 YAML 程式碼。

  9. 選擇「確認」,輸入確認訊息,然後再次選擇「確認」。

參考人工因素中的檔案

如果您的檔案位於人工因素內,且需要在其中一個工作流程動作中參照此檔案,請完成下列程序。

參照人工因素中的檔案
  • 在您要參考檔案的動作中,新增類似下列內容的程式碼:

    Actions: My-action: Inputs: Sources: - WorkflowSource Artifacts: - artifact-name Configuration: Steps: - run: cd $CATALYST_SOURCE_DIR_artifact-name/build-output && cat file.txt

    在先前的程式碼中,動作會在人工因素名稱加工品的build-output目錄中尋找並顯示檔案。file.txt

    如需更多範例,請參閱文物的例子

    注意

    您可能可以省略$CATALYST_SOURCE_DIR_artifact-name/前綴,具體取決於您如何配置操作。如需詳細資訊,請參閱下列指引。

    關於如何引用變量的指導:

    • 如果您的動作在下只包含一個項目 Inputs (例如,它包含一個輸入成品而不包含來源),則您可以省略前置詞,並僅指定相對於人工因素根目錄的檔案路徑。

    • 如果檔案位於主要輸入中,您也可以省略前置詞。如果沒有,則主要輸入可以是WorkflowSource,或列出的第一個輸入成品WorkflowSource

    • 根據您使用的動作,前綴可能會有所不同。如需詳細資訊,請參閱下表。

動作類型 要使用的檔案路徑字首 範例

建置動作測試動作

$CATALYST_SOURCE_DIR_artifact-name/

$CATALYST_SOURCE_DIR_MyArtifact/folder1/file.txt

所有其他動作

$CATALYST_SOURCE_DIR_artifact-name/

/artifacts/current-action-name/artifact-name/(此路徑是一個符號鏈接到 $ 催化器 _ 源 _ DIR _ 人工名稱/)

$CATALYST_SOURCE_DIR_MyArtifact/folder1/file.txt

/artifacts/MyCurrentAction/MyArtifact/folder1/file.txt

下載成品

您可以下載並檢查工作流程動作所產生的成品,以進行疑難排解。您可以下載兩種類型的神器:

  • 來源人工因素 — 包含執行開始時存在的來源儲存庫內容快照的人工因素。

  • 工作流程加工品 — 在工作流程組態檔案Outputs屬性中定義的人工因素。

若要依工作流程下載人工因素輸出
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

  3. 在瀏覽窗格中,選擇 CI/CD,然後選擇 [工作流程]。

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

  5. a 在工作流程名稱下,選擇 [執行]。

  6. 在 [執行歷程記錄] 的 [執行 ID] 欄中,選擇執行。例如 Run-95a4d

  7. 在執行名稱下,選擇「成品」。

  8. 選擇成品旁邊的 [下載]。存檔文件下載。它的文件名由七個隨機字符組成。

  9. 使用您選擇的歸檔提取公用程序提取存檔。

文物的例子

下列範例顯示如何在工作流程定義檔案中輸出、輸入及參照人工因素。

範例:輸出成品

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

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

範例:輸入由其他動作產生的人工因素

下列範例說明如何輸出呼叫 ARTIFACT4 in 的加工品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:

範例:參考多個成品中的檔案

下列範例說明如何輸出名為ART5ART6 in 的兩個成品BuildActionC,然後參考中 (下) 名為 file5.txt (在成品中ART5) 和 file6.txt (在成品中 ART6BuildActionD) 的兩個檔案。Steps

注意

如需參考檔案的更多資訊,請參閱參考人工因素中的檔案

注意

雖然範例顯示正在使用的$CATALYST_SOURCE_DIR_ART5前置詞,但您可以省略它。這是因為ART5主要輸入。若要深入瞭解主要輸入,請參閱參考人工因素中的檔案

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

範例:參照單一人工因素中的檔案

下面的例子說明如何輸出一個ART7在中命名的成品BuildActionE,然後在 file7.txt (下ART7) 中引用BuildActionF(在工件中Steps)。

請注意,參考如何不需要在build-output目錄前面的$CATALYST_SOURCE_DIR_人工因素名稱前綴,就像在中所做的那樣。範例:參考多個成品中的檔案這是因為在下只有一個項目指定Inputs

注意

如需參考檔案的更多資訊,請參閱參考人工因素中的檔案

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

下面的例子說明如何輸出一個ART8在中命名的成品BuildActionG,然後在 file8.txt (下ART8) 中引用BuildActionH(在工件中Steps)。

請注意參考如何需要$CATALYST_SOURCE_DIR_人工因素名稱前綴,就像在中一樣。範例:參考多個成品中的檔案這是因為在Inputs(源和成品)下指定了多個項目,因此您需要前綴來指示在何處查找文件。

注意

如需參考檔案的更多資訊,請參閱參考人工因素中的檔案

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