跨動作共用運算 - Amazon CodeCatalyst

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

跨動作共用運算

依預設,工作流程中的動作會在 eet 中的個別執行個體上執行。這種行為提供了對輸入狀態的隔離和可預測性的動作。預設行為需要明確設定,才能在動作之間共用上下文 (例如檔案和變數)。

計算共用是一項功能,可讓您在同一個執行個體上執行工作中的所有動作。使用計算共用可提供更快的工作執行時間,因為佈建執行個體所花費的時間較少。您也可以在動作之間共用檔案 (成品),而不需要額外的工作流程限制。

使用計算共用執行工作流程時,預設或指定叢集中的執行個體會保留該工作流程中所有動作的持續時間。當工作流程執行完成時,會釋放執行個體保留項目。

在共用運算上執行多個動作

您可以在工作流程層級使用定義 YAML 中的Compute屬性來指定動作的叢集和計算共用內容。您也可以使用中的視覺化編輯器來設定計算屬性 CodeCatalyst。若要指定叢集,請設定現有叢集的名稱、將運算類型設定為 EC2,然後開啟運算共用。

注意

只有在運算類型設定為 EC2 時,才支援運算共用,而且不支援 Windows 伺服器 2022 作業系統。如需有關運算叢集、運算類型和屬性的詳細資訊,請參閱設定工作流程的運算和執行階段環境 Docker 影像

注意

如果您在免費方案上,並且在工作流程定義 YAML 中手動指定Linux.x86-64.XLargeLinux.x86-64.2XLarge叢集,則動作仍會在預設叢集 (Linux.x86-64.Large) 上執行。如需有關運算可用性和定價的詳細資訊,請參閱各層選項的表格

開啟計算共用時,包含工作流程來源的資料夾會自動跨動作複製。您不需要在整個工作流程定義 (YAML 檔案) 中設定輸出成品,並將其參考為輸入成品。身為工作流程作者,您需要使用輸入和輸出來連接環境變數,就像不使用計算共用一樣。如果您想要在工作流程來源之外的動作之間共用資料夾,請考慮檔案快取。如需詳細資訊,請參閱 使用成品在工作流程中的動作之間共用資料在工作流程執行間快取檔

工作流程定義檔案所在的來源儲存庫由標籤識別WorkflowSource。使用計算共用時,會在參考工作流程來源的第一個動作中下載工作流程來源,並自動讓工作流程執行中的後續動作可供使用。透過動作對包含工作流程來源的資料夾所做的任何變更 (例如新增、修改或移除檔案) 也會顯示在工作流程的後續動作中。您可以在任何工作流程動作中參考位於工作流程來源資料夾中的檔案,就像不使用計算共用一樣。如需詳細資訊,請參閱 參考來源儲存庫中的檔案

注意

計算共用工作流程需要指定嚴格的動作順序,因此無法設定 parallel 動作。雖然可以在序列中的任何動作中設定輸出成品,但不支援輸入成品。

計算共用的考量

您可以透過運算共用來執行工作流程,以加速工作流程執行速度,並在使用相同執行個體的工作流程中的動作之間共用內容。請考慮下列事項,判斷使用計算共用是否適合您的案例:

運算共用 不需共用運算

運算類型

Amazon EC2

Amazon EC2,AWS Lambda

實例佈建

動作在同一個實例上運行

動作在單獨的實例上運行

作業系統

Amazon Linux 2

Amazon Linux 2,視窗服務器 2022(僅適用於構建操作)

參考檔案

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

$CATALYST_SOURCE_DIR_WorkflowSource, /sources/WorkflowSource/

Workflow 結構

動作只能依序執行

動作可以並行執行

跨工作流程動作存取資料

存取快取的工作流程來源 (WorkflowSource)

存取共用成品的輸出 (需要其他組態)

開啟運算共用

使用下列指示開啟工作流程的計算共用。

Visual
使用視覺化編輯器開啟運算共用
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

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

  4. 選擇工作流程的名稱。

  5. 選擇編輯

  6. 選擇 [視覺]。

  7. 選擇工作流程屬性

  8. 從 [運算類型] 下拉式功能表中,選擇 [EC2]。

  9. (選擇性) 從 [計算叢集-選用] 下拉式功能表中,選擇要用來執行工作流程動作的叢集。您可以選擇隨需叢集,也可以建立並選擇已佈建的叢集。如需詳細資訊,請參閱 建立已佈建的叢集將佈建的叢集或隨選運算指派給動作

  10. 切換開關以開啟計算共用,並在同一叢集上執行工作流程中的動作。

  11. (選擇性) 選擇工作流程的執行模式。如需詳細資訊,請參閱 設定執行的佇列行為

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

YAML
使用 YAML 編輯器開啟計算共用
  1. 請在以下位置開啟 CodeCatalyst 主控台。 https://codecatalyst.aws/

  2. 選擇您的專案。

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

  4. 選擇工作流程的名稱。

  5. 選擇編輯

  6. 選擇 YAML

  7. 開啟計算共用功能,將SharedInstance欄位設定TypeTRUE和為EC2。設定Fleet為您要用來執行工作流程動作的計算叢集。您可以選擇隨需叢集,也可以建立並選擇已佈建的叢集。如需詳細資訊,請參閱 建立已佈建的叢集將佈建的叢集或隨選運算指派給動作

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

    Name: MyWorkflow SchemaVersion: "1.0" Compute: # Define compute configuration. Type: EC2 Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet. SharedInstance: true # Turn on compute sharing. Default is False. Actions: BuildFirst: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ... ...
  8. (選擇性) 選擇 [驗證],在認可之前驗證工作流程的 YAML 程式碼。

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

範例

範例:Amazon S3 發佈

下列工作流程範例顯示如何以兩種方式執行 Amazon S3 發佈動作:先使用輸入成品,然後使用運算共用。使用計算共用時,不需要輸入成品,因為您可以存取快取WorkflowSource。此外,不再需要「建置」動作中的輸出成品。S3 發佈動作設定為使用明確DependsOn屬性來維護連續動作;建置動作必須成功執行,S3 發佈動作才能執行。

  • 如果沒有計算共用,您需要使用輸入成品,並與後續動作共用輸出:

    Name: S3PublishUsingInputArtifact SchemaVersion: "1.0" Actions: Build: Identifier: aws/build@v1 Outputs: Artifacts: - Name: ArtifactToPublish Files: [output.zip] Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ./build.sh # Build script that generates output.zip PublishToS3: Identifier: aws/s3-publish@v1 Inputs: Artifacts: - ArtifactToPublish Environment: Connections: - Role: codecatalyst-deployment-role Name: dev-deployment-role Name: dev-connection Configuration: SourcePath: output.zip DestinationBucketName: dev-bucket
  • SharedInstance將設定為使用計算共用時TRUE,您可以在同一個執行個體上執行多個動作,並透過指定單一工作流程來源來共用人工因素。輸入加工品不是必需的,無法指定:

    Name: S3PublishUsingComputeSharing SchemaVersion: "1.0" Compute: Type: EC2 Fleet: dev-fleet SharedInstance: TRUE Actions: Build: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Configuration: Steps: - Run: ./build.sh # Build script that generates output.zip PublishToS3: Identifier: aws/s3-publish@v1 DependsOn: - Build Environment: Connections: - Role: codecatalyst-deployment-role Name: dev-deployment-role Name: dev-connection Configuration: SourcePath: output.zip DestinationBucketName: dev-bucket