輸入和輸出成品 - AWS CodePipeline

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

輸入和輸出成品

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

動作使用輸入和輸出成品,這些成品存放在您在建立管道時選擇的 Amazon S3 成品儲存貯體中。CodePipeline 會視階段中的動作類型適當,壓縮和傳輸輸入或輸出成品的檔案。

注意

成品儲存貯體與做為管道來源檔案位置使用的儲存貯體不同,其中選擇的來源動作是 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 帳戶 ,您就可以將該 AWS 區域 管道的成品存放在任何 Amazon S3 儲存貯體中。如果您擔心超出帳戶允許的 Amazon S3 儲存貯體限制,則可以這樣做。如果您使用 AWS CLI 來建立或編輯管道,並新增跨區域動作 (與管道不同區域中的 AWS 提供者動作),您必須為計劃執行動作的每個額外區域提供成品儲存貯體。

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

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

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

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

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