輸入和輸出成品 - AWS CodePipeline

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

輸入和輸出成品

CodePipeline 與開發工具整合,以檢查程式碼變更,然後在連續交付程序的所有階段建置和部署。偽影是管道中動作處理的檔案,例如具有應用程式碼、索引頁面檔案、指令碼等的檔案或資料夾。例如,Amazon S3 來源動作成品是檔案名稱 (或檔案路徑),其中為管道來源動作提供應用程式來源程式碼檔案,而檔案通常以ZIP檔案形式提供,例如下列範例成品名稱: SampleApp_Windows.zip。來源動作的輸出成品,即應用程式來源程式碼檔案,是來源動作的輸出成品,也是下一個動作的輸入成品,例如建置動作。另一個範例是,建置動作可能會執行建置命令來編譯輸入成品的應用程式原始碼,這是來源動作的應用程式原始碼檔案。如需成品參數的詳細資訊,請參閱動作組態參考頁面,例如 AWS CodeBuild 建置和測試動作參考 CodeBuild 動作。

當您建立 pipeline. CodePipeline zip 時,動作會使用存放在您選擇的 Amazon S3 成品儲存貯體中的輸入和輸出成品,並根據階段中的動作類型傳輸輸入或輸出成品的檔案。

注意

成品儲存貯體與作為管道來源檔案位置的儲存貯體不同,其中選擇的來源動作為 S3。

例如:

  1. CodePipeline 在遞交來源儲存庫時, 會觸發您的管道執行,提供來源階段的輸出成品 (要建置的任何檔案)。

  2. 上一步驟的輸出成品 (任何要建置的檔案) 會擷取成為建置階段的輸入成品。建置階段的輸出成品 (已建置的應用程式) 可能是更新的應用程式,或建置給容器的已更新 Docker 影像。

  3. 上一個步驟 (建置的應用程式) 的輸出成品會擷取為部署階段的輸入成品,例如 中的預備或生產環境 AWS 雲端。您可以將應用程式部署到部署機群,也可以將容器型應用程式部署到ECS叢集中執行的任務。

當您建立或編輯動作時,您可以為動作指定一或多個輸入和輸出成品。例如,對於具有來源部署階段的兩階段管道,在編輯動作 中,您可以為部署動作的輸入成品選擇來源動作的成品名稱。

  • 當您使用主控台建立第一個管道時, 會在相同 中 CodePipeline 建立 Amazon S3 儲存貯體 AWS 區域 , AWS 帳戶 並為所有管道存放項目。每次使用主控台在該區域中建立另一個管道時, 都會為儲存貯體中的管道 CodePipeline 建立資料夾。自動化發行程序執行時,它會使用該資料夾來存放管道的成品。此儲存貯體名為 codepipeline-region-12345EXAMPLE其中,region 是您建立管道 AWS 的區域,以及 12345EXAMPLE 是 12 位數的隨機數字,可確保儲存貯體名稱是唯一的。

    注意

    如果您已有一個以 Codepipeline-region 開頭的儲存貯體 - 在您建立管道的區域中, CodePipeline 會使用該儲存貯體作為預設儲存貯體。它也遵循詞彙順序;例如,在 codepipeline-region-defexample 之前選擇 codepipeline-region-abcexample

    CodePipeline 截斷成品名稱,這可能會導致某些儲存貯體名稱看起來類似。即使成品名稱似乎被截斷,以不受截斷名稱之成品影響的方式 CodePipeline 映射到成品儲存貯體。該管道可以正常運作。這不是資料夾或成品的問題。管道名稱有 100 個字元的限制。雖然成品資料夾名稱看起來可能變短了,對管道來說仍然是唯一的。

    當您建立或編輯管道時,管道 AWS 帳戶 和 中必須有一個成品儲存貯體 AWS 區域,而且每個計劃執行動作的區域必須有一個成品儲存貯體。如果您使用主控台建立管道或跨區域動作,預設成品儲存貯體會由 CodePipeline 在您具有動作的區域中設定。

    如果您使用 AWS CLI 建立管道,只要該管道與管道位於相同 AWS 帳戶 和 ,您就可以在任何 Amazon S3 儲存貯體中存放該管道 AWS 區域 的成品。如果您擔心您的帳戶超過 Amazon S3 儲存貯體的限制,可以這麼做。如果您使用 AWS CLI 來建立或編輯管道,並新增跨區域動作 (在與管道不同的區域中的 AWS 提供者所執行的動作),則必須為計劃執行動作的每個額外區域提供成品儲存貯體。

  • 每個動作都會有一種類型。根據類型,動作可能會有下列其中一項或兩項:

    • 輸入成品,這是它在動作執行過程所使用或處理的成品。

    • 輸出成品,這是動作的輸出。

    管道中的每個輸出成品都必須有唯一名稱。動作的每個輸入成品都必須符合管道中稍早動作的輸出成品,不論該動作緊接在階段中的動作前面,還是在數個階段之前的階段中執行。

    一個成品可以由多個動作處理。