教學:建立簡易管道 (S3 儲存貯體) - AWS CodePipeline

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

教學:建立簡易管道 (S3 儲存貯體)

建立管線的最簡單方法是使用 AWS CodePipeline 主控台中的「建立管線」精靈。

在本教學課程中,您會建立使用已建立版本化 S3 儲存貯體的兩階段管道,並 CodeDeploy發行範例應用程式。

注意

當 Amazon S3 是管道的來源供應商時,您可以將一或多個來源檔案壓縮為單一 .zip,然後將 .zip 上傳到來源儲存貯體。您也可以上傳單一解壓縮檔案;不過,預期 .zip 檔案的下游動作會失敗。

在您建立此範本管道後,您將新增另一個額外階段,然後停用並啟用階段間的轉換。

重要

您在此程序中新增至管線的許多動作都涉及建立管線之前需要建立的 AWS 資源。 AWS 來源動作的資源必須始終建立在您建立管道的相同 AWS 區域中。例如,如果您在美國東部 (俄亥俄) 區域建立管道,則您的 CodeCommit 存放庫必須位於美國東部 (俄亥俄) 區域。

您可以在建立管道時新增跨區域動作。 AWS 跨區域作業的資源必須位於您計劃執行作業的相同「 AWS 區域」中。如需詳細資訊,請參閱 在中新增跨區域動作 CodePipeline

在您開始之前,應先完成 開始使用 CodePipeline 中的事前準備。

步驟 1:為您的應用程式建立 S3 儲存貯體

您可以將來源檔案或應用程式存放於任何版本控制的位置。在本教學中,您會為範例應用程式檔案建立 S3 儲存貯體,並在該儲存貯體上啟用版本控制。啟用版本控制後,您會複製範本應用程式至該儲存貯體。

建立 S3 儲存貯體
  1. 請在以下位置登入主控台 AWS Management Console。開啟 S3 主控台。

  2. 選擇建立儲存貯體

  3. Bucket Name (儲存貯體名稱) 中,輸入儲存貯體的名稱 (例如 awscodepipeline-demobucket-example-date)。

    注意

    因為 Amazon S3 中的所有儲存貯體名稱都必須是唯一的,所以請使用您自己的名稱,而不要使用範例中顯示的名稱。您只要新增日期至範例名稱就可變更名稱。請記下此名稱,因為您在整個教學課程中都會用到。

    在 [區域] 中,選擇您要建立管道的區域 (例如美國西部 (奧勒岡)],然後選擇 [建立值區]。

  4. 建立儲存貯體後,會顯示成功橫幅。選擇 Go to bucket details (前往儲存貯體詳細資訊)

  5. Properties (屬性) 標籤上,選擇 Versioning (版本控制)。選擇 Enable versioning (啟用版本控制),然後選擇 Save (儲存)

    啟用版本控制後,Amazon S3 會儲存貯體中每個物件的每個版本。

  6. Permissions (許可) 索引標籤上,保留預設值。如需 S3 儲存貯體和物件許可的相關資訊,請參閱在政策中指定許可

  7. 接著,下載範本並將其儲存至本機電腦的資料夾或目錄中。

    1. 選擇下列其中一項。如果要依照本教學中針對 Windows Server 執行個體的步驟執行,請選擇 SampleApp_Windows.zip

      • 如果您想要使用以下方式部署到 Amazon Linux 執行個體 CodeDeploy,請在此處下載範例應用程式:SampleApp_Linux.zip

      • 如果您想要使用部署到 Windows 伺服器執行個體 CodeDeploy,請在此處下載範例應用程式:SampleApp_Windows.zip

      範例應用程式包含下列檔案以進行部署 CodeDeploy:

      • appspec.yml— 應用程式規格檔AppSpec案 (檔案) 是用 CodeDeploy 來管理部署的 YAML 格式檔案。若要取得有關 AppSpec 檔案的更多資訊,請參閱《AWS CodeDeploy 使用指南》中的〈CodeDeploy AppSpec 檔案參考

      • index.html— 索引檔案包含已部署範例應用程式的首頁。

      • LICENSE.txt— 授權檔案包含範例應用程式的授權資訊。

      • 指令碼檔案 — 範例應用程式會使用指令碼將文字檔寫入執行個體上的某個位置。每個 CodeDeploy 部署生命週期事件都會寫入一個檔案,如下所示:

        • (僅限 Linux 範例) scripts 資料夾 — 資料夾包含下列 shell 指令碼,可用來安裝相依性,以及啟動和停止自動化部署的範例應用程式:install_dependenciesstart_server、和stop_server

        • (僅限 Windows 範例) before-install.bat — 這是BeforeInstall部署生命週期事件的批次指令碼,會執行以移除先前部署此範例期間寫入的舊檔案,並在執行個體上建立一個要寫入新檔案的位置。

    2. 下載已壓縮的檔案。不要將檔案解壓縮。

  8. 在 Amazon S3 主控台中,為您的儲存貯體上傳檔案:

    1. 選擇上傳

    2. 拖放檔案或選擇 Add files (新增檔案),並瀏覽到該檔案。

    3. 選擇上傳

步驟 2:建立 Amazon EC2 Windows 執行個體並安裝 CodeDeploy 代理程式

注意

本教學提供建立 Amazon EC2 視窗執行個體的範例步驟。如需建立 Amazon EC2 Linux 執行個體的範例步驟,請參閱步驟 3:建立 Amazon EC2 Linux 執行個體並安裝 CodeDeploy 代理程式。當系統提示輸入要建立的執行個體數目時,請指定 2 個執行個體。

在此步驟中,您將建立要部署範例應用程式的 Windows 伺服器 Amazon EC2 執行個體。在此程序中,您會建立具有允許在執行個體上安裝和管理 CodeDeploy 代理程式的原則的執行個體角色。 CodeDeploy 代理程式是可在 CodeDeploy 部署中使用執行個體的軟體套件。您也會附加原則,讓執行個體擷取 CodeDeploy 代理程式用來部署應用程式的檔案,並允許 SSM 管理執行個體。

建立執行個體角色
  1. https://console.aws.amazon.com/iam/ 開啟身分與存取權管理主控台。

  2. 從主控台儀表板,選擇 Roles (角色)

  3. 選擇建立角色

  4. [選取信任實體的類型] 下,選取AWS 服務。在 Choose a use case (選擇使用案例) 下,選取 EC2,然後選擇 Next: Permissions (下一步:許可)

  5. 搜尋並選取名為的策略AmazonEC2RoleforAWSCodeDeploy

  6. 搜尋並選取名為的策略AmazonSSMManagedInstanceCore。選擇下一步:標籤

  7. 選擇下一步:檢閱。輸入角色的名稱 (例如,EC2InstanceRole)。

    注意

    記下您的角色名稱,以用於下一個步驟。您會在建立執行個體時選擇此角色。

    選擇建立角色

啟動執行個體
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在側邊導覽中,選擇「執行個體」,然後從頁面頂端選取「啟動執行個體」。

  3. 名稱和標籤下的名稱中,輸入MyCodePipelineDemo。這會指定執行個體的標籤索引鍵Name和標籤MyCodePipelineDemo。稍後,您會建立將範例 CodeDeploy 應用程式部署到執行個體的應用程式。 CodeDeploy根據標籤選取要部署的執行個體。

  4. 在「應用程式和作業系統映像 (Amazon 機器映像)」下,選擇「Windows」選項。(此 AMI 被描述為 Microsoft Windows 服務器 2019 基礎版,並標記為「符合免費方案資格」,可以在快速入門下找到..)

  5. 在「執行個體類型」下,選擇免費方案合格t2.micro類型做為執行個體的硬體組態。

  6. key pair (登入) 下,選擇金鑰配對或建立金鑰組。

    您也可以選擇不使用 key pair 繼續

    注意

    基於本教學的目的,您可以在不使用金鑰對的情況下繼續進行。若要使用 SSH 連接到執行個體,請建立或使用金鑰對。

  7. [網路設定] 底下,執行下列動作。

    在 [自動指派公用 IP] 中,確定狀態為 [啟用]

    • Assign a security group (指派安全群組) 旁,選擇 Create a new security group (建立新的安全群組)

    • 在 [SSH] 資料列的 [來源類型] 下,選擇 [我的 IP]。

    • 選擇 [新增安全性群組],選擇 [HTTP],然後在 [來源類型] 下選擇 [我的 IP]。

  8. 展開 Advanced Details (進階詳細資訊)。在 IAM 執行個體設定檔中,選擇您在上一個程序中建立的 IAM 角色 (例如EC2InstanceRole)。

  9. 摘要之下的例證數目下,輸入2..

  10. 選擇啟動執行個體

  11. 選擇 View all instances (檢視所有執行個體),以關閉確認頁面並返回主控台。

  12. 您可以在 Instances (執行個體) 頁面上檢視啟動狀態。當您啟動執行個體時,其初始狀態是 pending。在執行個體啟動後,其狀態會變更為 running,並得到公有的 DNS 名稱。(如果 Public DNS (公有 DNS) 欄未顯示,請選擇 Show/Hide (顯示/隱藏) 圖示,然後選擇 Public DNS (公有 DNS)。)

  13. 執行個體可能需要幾分鐘的時間才能準備就緒讓您連線。請確認您的執行個體已通過狀態檢查。您可以在 Status Checks (狀態檢查) 欄位查看此資訊。

步驟 3:在中建立應用程式 CodeDeploy

在中 CodeDeploy,應用程式是您要部署之程式碼的識別碼,以名稱的形式呈現。 CodeDeploy 使用此名稱來確保在部署期間參考正確的修訂版本、部署規劃和部署群組組合。稍後在本教學課程中建立管線時,您可以選取在此步驟中建立的 CodeDeploy 應用程式名稱。

您首先建立 CodeDeploy 要使用的服務角色。如果您已建立服務角色,則不需要再建立一個服務角色。

若要建立 CodeDeploy 服務角色
  1. https://console.aws.amazon.com/iam/ 開啟身分與存取權管理主控台。

  2. 從主控台儀表板,選擇 Roles (角色)

  3. 選擇建立角色

  4. [選取信任的實體] 下,選擇AWS 服務。在 Use case (使用案例) 中,選擇 CodeDeployCodeDeploy從列出的選項中進行選擇。選擇下一步AWSCodeDeployRole 受管政策已連接至角色。

  5. 選擇下一步

  6. 輸入角色的名稱 (例如 CodeDeployRole),然後選擇 Create role (建立角色)

若要在中建立應用程式 CodeDeploy
  1. 開啟主 CodeDeploy 控台,網址為 https://console.aws.amazon.com/codedeploy

  2. 如果未顯示 [應用程式] 頁面,請在 AWS CodeDeploy 功能表上選擇 [應用程式]。

  3. 選擇建立應用程式

  4. Application name (應用程式名稱) 中,輸入 MyDemoApplication

  5. Compute Platform (運算平台) 中,選擇 EC2/On-premises (EC2/ 現場部署)

  6. 選擇建立應用程式

若要在中建立部署群組 CodeDeploy
  1. 在顯示您應用程式的頁面上,選擇 Create deployment group (建立部署群組)

  2. Deployment group name (部署群組名稱) 中,輸入 MyDemoDeploymentGroup

  3. 服務角色中,選擇您先前建立的服務角色。您必須使用信任至少 AWS CodeDeploy 具有建立服務角色中所述的信任和權限的服務角色 CodeDeploy。若要取得服務角色 ARN,請參閱取得服務角色 ARN (主控台)

  4. Deployment type (部署類型) 下,選擇 In-place (就地進行)

  5. Environment configuration (環境組態) 下,選擇 Amazon EC2 Instances (Amazon EC2 執行個體)。在「機」欄位中選擇「名稱」,然後在「」欄位中輸入MyCodePipelineDemo

    重要

    在您建立 EC2​ 執行個體時,您必須在此為 Name (名稱) 金鑰選擇為執行個體指派的相同數值。如果您使用 MyCodePipelineDemo 以外的程式碼來標記執行個體,請務必在此使用該程式碼。

  6. 在 [使用 AWS Systems Manager 程式組態] 下,選擇 [立即] 並排 這會在執行個體上安裝代理程式。Windows 執行個體已使用 SSM 代理程式設定,現在將以代理 CodeDeploy 程式進行更新。

  7. 在「部署設定」 下,選擇CodeDeployDefault.OneAtaTime

  8. 在「Load Balancer」下,確定未選取「啟用負載平衡」方塊。您不需要為此範例設定負載平衡器或選擇目標群組。取消選取核取方塊後,不會顯示負載平衡器選項。

  9. Advanced (進階) 區段中,保留預設值。

  10. 選擇 Create deployment group (建立部署群組)

步驟 4:在中建立您的第一個管道 CodePipeline

在教學課程的此部分中,您會建立管道。該範本會自動透過管道執行。

建立 CodePipeline 自動發行程序
  1. 請登入 AWS Management Console 並開啟 CodePipeline 主控台,網址為 http://console.aws.amazon.com/codesuite/codepipeline/home

  2. Welcome (歡迎) 頁面、Getting started (入門) 頁面、或者 Pipelines (管道) 頁面上,選擇 Create pipeline (建立管道)

  3. Step 1: Choose pipeline settings (步驟 1:選擇管道設定)Pipeline name (管道名稱) 中,輸入 MyFirstPipeline

    注意

    如果您選擇了另一個管道名稱,請務必在此整個教學中皆使用該名稱 (而非 MyFirstPipeline)。在您建立管道後,便無法更改其名稱。管道名稱會受到一些限制。如需詳細資訊,請參閱 配額 AWS CodePipeline

  4. 管線類型中,針對本教學課程的目的選擇 V1。您也可以選擇 V2;但是請注意,管道類型在特性和價格上有所不同。如需詳細資訊,請參閱 管線類型

  5. Service role (服務角色) 中,執行下列其中一項作業:

    • 選擇 [新增服務角色] CodePipeline 以允許在 IAM 中建立新的服務角色。

    • 選擇 Existing service role (現有服務角色) 以使用已在 IAM 中建立的服務角色。在 Role name (角色名稱) 中,從清單選擇您的服務角色。

  6. Advanced settings (進階設定) 下的設定保留為預設值,然後選擇 Next (下一步)

  7. Step 2: Add source stage (步驟 2:新增來源階段)​ 的 Source provider (來源提供者) 中,選擇 Amazon S3。在 Bucket (儲存貯體) 中,輸入您在 步驟 1:為您的應用程式建立 S3 儲存貯體 中建立的 S3 儲存貯體名稱。在 S3 物件金鑰中,輸入有或沒有檔案路徑的物件金鑰,記得也要加入副檔名。例如,對於 SampleApp_Windows.zip,輸入範例檔案名稱,如下列範例所示:

    SampleApp_Windows.zip

    選擇 下一個步驟

    Change detection options (變更刪除選項) 下,保持預設設定。這可讓您 CodePipeline 使用 Amazon CloudWatch 事件偵測來源儲存貯體中的變更。

    選擇下一步

  8. Step 3: Add build stage (步驟 3:新增建置階段) 中,選擇 Skip build stage (跳過建置階段),然後再次選擇 Skip (跳過) 來接受警告訊息​。選擇下一步

  9. 步驟 4:新增部署階段部署提供者中,選擇CodeDeploy 。「區域」(Region) 欄位預設 AWS 區域 為與您的管道相同。在 Application name (應用程式名稱) 中,輸入 MyDemoApplication,或選擇 Refresh (重新整理) 按鈕,然後從清單中選擇應用程式名稱。在 Deployment group (部署群組) 中,輸入 MyDemoDeploymentGroup,或從清單中選擇,然後選擇 Next (下一步)

    注意

    名稱「Deploy」(部署),是預設指定給在 Step 4: Add deploy stage (步驟 4:新增部署階段) 步驟中建立的階段名稱,如同「Source」(來源) 是管道的第一階段所指定的名稱。

  10. Step 5: Review (步驟 5:檢閱) 中,檢閱資訊,然後選擇 Create pipeline (建立管道)

  11. 管道開始執行。當 CodePipeline 範例將網頁部署到 CodeDeploy部署中的每個 Amazon EC2 執行個體時,您可以檢視進度、成功和失敗訊息。

恭喜您!您剛剛建立了一個簡單的管道 CodePipeline。管道有兩個階段:

  • 名為 Source (來源) 的來源階段,可偵測存放於 S3 儲存貯體中的版本控制範例應用程式變更,並將那些變更提取至管道中。

  • 使 CodeDeploy用部署這些變更至 EC2 執行個體的部署階段。

現在,請驗證結果。

驗證您的管道是否成功執行
  1. 檢視管道初始進度。每一個階段狀態會從 No executions yet (尚未執行)​ 變更為 In Progress (進行中),然後顯示 Succeeded (成功)​ 或 Failed (失敗)。該管道應會在幾分鐘內完成初次執行。

  2. 在該動作狀態顯示 Succeeded (成功)​ 後,在 Deploy (部署)​ 階段,選擇 Details (詳細資訊)。這將打開控 CodeDeploy 制台。

  3. Deployment group (部署群組) 索引標籤的 Deployment lifecycle events (部署生命週期事件) 下,選擇執行個體 ID。這會開啟 EC2 主控台。

  4. Description (敘述) 標籤的 Public DNS (公有 DNS) 中複製地址,然後貼上至您 Web 瀏覽器的地址列中。檢視索引頁面以了解您上傳至 S3 儲存貯體的範例應用程式。

    網頁會針對您上傳到 S3 儲存貯體的範例應用程式顯示。

如需關於階段、動作以及管道如何運作的更多資訊,請參閱 CodePipeline 概念

(選用) 步驟 5:新增另一個階段至您的管道

現在,在管道中添加另一個階段,以使用 CodeDeploy. 首先,您可以在中建立另一個部署群組 CodeDeploy。 CodePipelineDemoApplication 然後您將新增一個階段,該階段包括了使用此部署群組的動作。若要新增其他階段,您可以使用 CodePipeline 主控台或擷取並手動編輯 JSON 檔案中管線的結構,然後執行update-pipeline命令以使用您的變更更新管線。 AWS CLI

在中建立第二個部署群組 CodeDeploy

注意

在本教學的這一部分中,您會建立第二個部署群組,但部署到與以前相同的 Amazon EC2 執行個體。這僅用於示範用途。它的設計目的是無法向您展示錯誤的顯示方式 CodePipeline。

若要在中建立第二個部署群組 CodeDeploy
  1. 開啟主 CodeDeploy 控台,網址為 https://console.aws.amazon.com/codedeploy

  2. 選擇 Applications (應用程式),然後在應用程式清單中選擇 MyDemoApplication

  3. 選擇 Deployment groups (部署群組) 索引標籤,然後選擇 Create deployment group (建立部署群組)

  4. Create deployment group (建立部署群組) 頁面上的 Deployment group name (部署群組名稱) 中,輸入第二個部署群組的名稱 (例如 CodePipelineProductionFleet)。

  5. 服務角色中,選擇您用於初始部署的相同 CodeDeploy 服務角色 (而非 CodePipeline 服務角色)。

  6. Deployment type (部署類型) 下,選擇 In-place (就地進行)

  7. Environment configuration (環境組態) 下,選擇 Amazon EC2 Instances (Amazon EC2 執行個體)。在「關鍵字」方塊中選擇「名稱」,然後在「」方塊中,MyCodePipelineDemo從清單中選擇。將 Deployment settings (部署設定) 保留為預設組態。

  8. Deployment configuration (部署組態) 下,選擇 CodeDeployDefault.OneAtaTime

  9. Load Balancer (負載平衡器) 下,清除 Enable load balancing (啟用負載平衡)

  10. 選擇 Create deployment group (建立部署群組)

在您的管道中新增部署群組以做為另一個階段

現在您已擁有另一個部署群組,您可新增使用此部署群組的階段,以部署到您在稍早使用的相同 EC2 執行個體。您可以使用 CodePipeline控制台或 AWS CLI 添加此階段。

建立第三個階段 (主控台)

您可以使用 CodePipeline 主控台來新增使用新部署群組的新階段。由於此部署群組是部署在您已使用中的 EC2 執行個體,故在此階段的部署動作失敗。

  1. 請登入 AWS Management Console 並開啟 CodePipeline 主控台,網址為 http://console.aws.amazon.com/codesuite/codepipeline/home

  2. 名稱中,選擇您建立的配管名稱 MyFirstPipeline。

  3. 在管道詳細資訊頁面上,選擇 Edit (編輯)

  4. Edit (編輯) 頁面上,選擇 + Add stage (+ 新增階段) 以在 Deploy (部署) 階段後立即新增一個階段。

  5. Add stage (新增階段)Stage name (階段名稱) 中,輸入 Production。選擇 Add stage (新增階段)

  6. 在新階段中,選擇 + Add action group (+ 新增動作群組)

  7. Edit action (編輯動作)Action name (動作名稱) 中,輸入 Deploy-Second-Deployment。在 [動作提供者] 中的 [部署] 下,選擇CodeDeploy

  8. 在「應用程式名稱」 CodeDeploy 區段中,MyDemoApplication從下拉式清單中選擇,就像您建立管線時所做的一樣。在 Deployment group (部署群組) 中,選擇您剛才建立的部署群組 CodePipelineProductionFleet。在 Input artifacts (輸入成品) 中,從來源動作中選擇輸入成品。選擇儲存

  9. Edit (編輯) 頁面中,選擇 Save (儲存)。在 Save pipeline changes (儲存管道變更) 中,選擇 Save (儲存)

  10. 雖然新階段已新增至您的管道,但由於沒有發生觸發另一個管道執行的變更,所以會顯示 No executions yet (尚未執行)。您必須手動重新執行最新的修訂版本,來查看已編輯管道的執行情形。在配管詳細資訊頁面上,選擇「發行變更」,然後在出現提示時選擇「釋放」。這將會在管道的來源動作所指定的各個來源位置中執行最新的可用版本。

    或者,若要從本機 Linux、macOS 或 Unix 機器上的終端機或本機 Windows 電腦上的命令提示字元使用來重新執行管線,請執行start-pipeline-execution命令並指定管線的名稱。 AWS CLI 這會再次透過管道,在您的來源儲存貯體中執行應用程式。

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    此命令會傳回 pipelineExecutionId​ 物件。

  11. 返回主 CodePipeline 控台,並在管線清單中選擇MyFirstPipeline開啟檢視頁面。

    該管道顯示了三個階段,以及透過這三個階段執行的成品狀態。管道可能需要五分鐘以執行所有階段。和之前一樣,您會看到該部署在前兩個階段已成功,但 Production (生產) 階段會顯示 Deploy-Second-Deployment (部署-第二-部署) 動作失敗。

  12. Deploy-Second-Deployment (部署-第二-部署) 動作中,選擇 Details (詳細資訊)。系統會將您重新導向至 CodeDeploy部署的頁面。在此案例中,該失敗是部署至所有 EC2​ 執行個體之第一個執行個體群組的結果,造成第二個部署群組沒有任何執行個體。

    注意

    此失敗是刻意設計的,以說明在管道階段中發生失敗時的情況。

建立第三個階段 (CLI)

雖然使用將階段新增 AWS CLI 至管線比使用主控台更複雜,但它可提供更多管線結構的可見度。

為管道建立第三階段
  1. 在本機 Linux、macOS 或 Unix 電腦上開啟終端機工作階段,或在本機 Windows 電腦上開啟命令提示字元,然後執行get-pipeline命令以顯示剛建立的管線結構。對於 MyFirstPipeline,您可能輸入下列命令:

    aws codepipeline get-pipeline --name "MyFirstPipeline"

    此指令會傳回的結構 MyFirstPipeline。該輸出的第一部分應如下所示:

    { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service", "stages": [ ...

    該輸出的最後一個部分包含了管道中繼資料,應如下所示:

    ... ], "artifactStore": { "type": "S3" "location": "codepipeline-us-east-2-250656481468", }, "name": "MyFirstPipeline", "version": 4 }, "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 } }
  2. 複製並貼上此結構至純文字編輯器中,然後將檔案儲存為 pipeline.json。為方便起見,請將此檔案儲存在您執行 aws codepipeline​ 命令的相同目錄中。

    注意

    您可透過 get-pipeline 命令直接將 JSON 輸送到檔案,如下所示:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
  3. 複製 Deploy (部署) 階段區段,並貼在前兩個階段的後面。由於它是一個部署階段 (如同 Deploy (部署)​ 階段),故您可使用它做為第三階段的範本。

  4. 變更階段的名稱和部署群組的詳細資訊。

    下列範例顯示您在部署階段之後新增至管線 .json 檔案的 JSON。使用新數值編輯強調元素。請記得包含逗號,以分隔 Deploy (部署)Production (生產) 階段定義。

    , { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] }
  5. 如果您使用的是使用 get-pipeline 命令擷取的管道結構,則必須從 JSON 檔案中移除 metadata 行。否則,update-pipeline 命令無法使用它。移除 "metadata": { } 行,以及 "created""pipelineARN""updated" 欄位。

    例如,從結構中移除下列幾行:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    儲存檔案。

  6. 執行 update-pipeline​ 命令,指定管道 JSON 檔案,如以下所示:

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    此命令會傳回已更新管道的整個結構。

    重要

    請確認在檔案名稱之前包含 file://。這是此命令必要項目。

  7. 執行 start-pipeline-execution​ 命令,指定管道名稱。這會再次透過管道,在您的來源儲存貯體中執行應用程式。

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    此命令會傳回 pipelineExecutionId​ 物件。

  8. 開啟主 CodePipeline 控台,然後MyFirstPipeline從管線清單中選擇。

    該管道顯示了三個階段,以及透過這三個階段執行的成品狀態。管道可能需要五分鐘以執行所有階段。和之前一樣,雖然該部署在前兩個階段已成功,Production (生產)​ 階段仍會顯示 Deploy-Second-Deployment (部署-第二-部署)​ 動作失敗。

  9. Deploy-Second-Deployment (部署-第二-部署) 動作中,選擇 Details (詳細資訊) 以查看該失敗的詳細資訊。系統會將您重新導向至 CodeDeploy 部署的詳細資料頁面。在此案例中,該失敗是部署至所有 EC2​ 執行個體之第一個執行個體群組的結果,造成第二個部署群組沒有任何執行個體。

    注意

    此失敗是刻意設計的,以說明在管道階段中發生失敗時的情況。

(選擇性) 步驟 6:停用及啟用階段之間的轉換 CodePipeline

您可在管道中的階段之間啟用或停用轉換。在階段間停用轉換,可讓您手動控制階段與階段之間的轉換。例如,您可能想執行管道的前兩個階段,但不希望在準備好部署至生產前轉換至第三個階段,或您正在針對該階段的問題或失敗進行故障排除。

若要停用和啟用 CodePipeline 管線中階段之間的轉移
  1. 開啟主 CodePipeline 控台,然後MyFirstPipeline從管線清單中選擇。

  2. 在管線的詳細資訊頁面上,選擇第二個階段 (部署) 和您在上一節 (生產) 中新增的第三個階段之間的 [停用轉換] 按鈕。

  3. Disable transition (停用轉換) 中,輸入在階段間停用轉換的原因,然後選擇 Disable (停用)

    階段之間的箭號會顯示圖示與顏色變更,並會顯示 Enable transition (啟用轉換) 按鈕。

  4. 再次將您的範例上傳至 S3 儲存貯體。由於該儲存貯體是版本控制的,此變更會啟動該管道。

  5. 返回您管道的詳細資訊頁面並查看階段狀態。管道檢視將改變,以顯示前兩個階段的進度與成功狀態,但第三個階段上不會發生變更。此程序可能需要幾分鐘的時間。

  6. 選擇兩階段之間的 Enable transition (啟用轉換) 按鈕以啟用轉換。在 Enable transition (啟用轉換) 對話方塊中,選擇 Enable (啟用)。該階段會在幾分鐘內開始執行,並嘗試處理已透過管道前兩個階段執行的成品。

    注意

    如果您希望第三個階段成功,請在啟用轉換之前編輯 CodePipelineProductionFleet 部署群組,並指定部署應用程式的不同 EC2 執行個體集。有關如何執行此操作的詳細資訊,請參閱變更部署群組設定。如果您建立更多 EC2 執行個體,您可能需要支付額外費用。

步驟 7:清除資源

您可以將本教學課程中建立的一些資源應用在 教學:建立四階段管道 中。例如,您可以重複使用 CodeDeploy 應用程式和部署。您可以使用提供者設定建置動作,例如 CodeBuild,這是雲端中完全受控的建置服務。您也可以透過組件伺服器或系統來設定使用供應商的組件動作,例如 Jenkins。

不過,在您完成這些教學課程之後,應該刪除管道以及其所使用的資源,才不會因為持續使用那些資源而付費。首先,刪除管道,然後刪除 CodeDeploy 應用程式及其關聯的 Amazon EC2 執行個體,最後刪除 S3 儲存貯體。

清除此教學中使用的資源
  1. 若要清理您的 CodePipeline 資源,請遵循中刪除管道中的指示 AWS CodePipeline。

  2. 若要清理資 CodeDeploy 源,請依照清理資源 (主控台) 中的指示進行。

  3. 若要刪除 S3 儲存貯體,請按照刪除或清空儲存貯體中的說明進行。如果您不想建立更多管道,請刪除用以存放管道成品所建立的 S3 儲存貯體。如需此儲存貯體的詳細資訊,請參閱 CodePipeline 概念