本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:建立簡單的管道 (CodeCommit 儲存庫)
在本教學課程中,您會使用 CodePipeline 將 CodeCommit 儲存庫中維護的程式碼部署至單一 Amazon EC2 執行個體。當您將變更推送至 CodeCommit 儲存庫時,就會觸發您的管道。管道會使用 CodeDeploy 做為部署服務,將您的變更部署到 Amazon EC2 執行個體。
重要
在建立管道的過程中,CodePipeline 將使用客戶提供的 S3 成品儲存貯體來製作成品。(這與用於 S3 來源動作的 儲存貯體不同。) 如果 S3 成品儲存貯體位於與管道帳戶不同的帳戶中,請確定 S3 成品儲存貯體由 所擁有 AWS 帳戶 ,安全且可靠。
管道有兩個階段:
-
CodeCommit 來源動作的來源階段 (來源)。
-
CodeDeploy 部署動作的部署階段 (CodeDeploy)。
開始使用 的最簡單方法是 AWS CodePipeline 使用 CodePipeline 主控台中的建立管道精靈。
注意
開始之前,請確定您已設定 Git 用戶端來使用 CodeCommit。如需說明,請參閱設定 CodeCommit。
步驟 1:建立 CodeCommit 儲存庫
首先,在 CodeCommit 中建立儲存庫。您的管道會在執行時從此儲存庫獲得原始程式碼。您也可以建立本機儲存庫,在將程式碼推送至 CodeCommit 儲存庫之前,在其中維護和更新程式碼。
建立 CodeCommit 儲存庫
-
前往 https://console.aws.amazon.com/codecommit/
開啟 CodeCommit 主控台。 -
在區域選取器中,選擇您要建立儲存庫和管道的 AWS 區域 。如需詳細資訊,請參閱 AWS 區域 和端點。
-
請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。
-
在 Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱 (例如
MyDemoRepo)。 -
選擇建立。
注意
本教學課程中的其餘步驟會使用 MyDemoRepo 做為 CodeCommit 儲存庫的名稱。如果您選擇不同名稱,請在此教學課程中都使用此名稱。
設定本機儲存庫
在此步驟中,您會設定本機儲存庫來連線至遠端 CodeCommit 儲存庫。
注意
您不需要設定本機儲存庫。您也可以使用 主控台上傳檔案,如中所述步驟 2:將範本程式碼新增至 CodeCommit 儲存庫。
-
隨著新儲存庫在主控台開啟後,選擇頁面右上角的 Clone URL (複製 URL),然後選擇 Clone SSH (複製 SSH)。複製 Git 儲存庫的地址會複製到剪貼簿。
-
在終端機或命令列,導覽至您要存放本機儲存庫的本機目錄。我們在此教學中使用
/tmp。 -
執行以下命令來複製儲存庫,將 SSH 地址取代為您在上一個步驟中複製的地址。此命令會建立名為
MyDemoRepo的目錄。您將範例應用程式複製到此目錄。git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo
步驟 2:將範本程式碼新增至 CodeCommit 儲存庫
在此步驟中,您會下載為 CodeDeploy 範例演練建立之範例應用程式的程式碼,並將其新增至 CodeCommit 儲存庫。
-
接著,下載範本並將其儲存至本機電腦的資料夾或目錄中。
-
選擇下列其中一項。選擇
SampleApp_Linux.zip是否要遵循本教學課程中的 Linux 執行個體步驟。-
如果您想要使用 CodeDeploy 部署到 Amazon Linux 執行個體,請在此處下載範例應用程式:SampleApp_Linux.zip。
-
如果您想要使用 CodeDeploy 部署到 Windows Server 執行個體,請在此處下載範例應用程式:SampleApp_Windows.zip。
範例應用程式包含下列使用 CodeDeploy 部署的檔案:
-
appspec.yml– 應用程式規格檔案 (AppSpec 檔案) 是 CodeDeploy 用來管理部署的 YAML格式檔案。如需 AppSpec 檔案的詳細資訊,請參閱AWS CodeDeploy 《 使用者指南》中的 CodeDeploy AppSpec 檔案參考。 -
index.html– 索引檔案包含已部署範例應用程式的首頁。 -
LICENSE.txt– 授權檔案包含範例應用程式的授權資訊。 -
指令碼的檔案 – 範例應用程式使用指令碼將文字檔案寫入執行個體上的位置。每個 CodeDeploy 部署生命週期事件都會寫入一個檔案,如下所示:
-
(僅限 Linux 範例)
scripts資料夾 – 資料夾包含下列 Shell 指令碼,用於安裝相依性,以及啟動和停止自動化部署的範例應用程式:install_dependencies、start_server和stop_server。 -
(僅限 Windows 範例)
before-install.bat– 這是BeforeInstall部署生命週期事件的批次指令碼,將執行此指令碼來移除先前部署此範例期間寫入的舊檔案,並在執行個體上建立位置以寫入新檔案。
-
-
-
下載已壓縮的檔案。
-
-
將檔案從 SampleApp_Linux.zip 解壓縮至您先前建立的本機目錄 (例如:
/tmp/MyDemoRepo或c:\temp\MyDemoRepo)。請務必直接將檔案放入您的本機儲存庫。不要包含
SampleApp_Linux資料夾。例如,在本機 Linux、macOS 或 Unix 機器上,您的目錄和檔案階層應該如下所示:/tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server -
若要將檔案上傳至您的儲存庫,請使用下列其中一種方法。
-
若要使用 CodeCommit 主控台上傳您的檔案:
-
開啟 CodeCommit 主控台,然後從儲存庫清單中選擇您的儲存庫。
-
選擇 Add file (新增檔案),然後選擇 Upload file (上傳檔案)。
-
選取 Choose file (選擇檔案),然後瀏覽您的檔案。若要在資料夾下新增檔案,請選擇建立檔案,然後使用檔案名稱輸入資料夾名稱,例如
scripts/install_dependencies。將檔案內容貼到新檔案中。輸入您的使用者名稱和電子郵件地址來確定變更。
選擇 Commit changes (遞交變更)。
-
為每個檔案重複此步驟。
您的儲存庫內容看起來應該如下所示:
│-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
-
-
若要使用 git 命令上傳檔案:
-
將目錄變更為您的本機儲存庫:
(For Linux, macOS, or Unix)cd /tmp/MyDemoRepo(For Windows)cd c:\temp\MyDemoRepo -
請執行下列命令來同時將所有檔案放入階段:
git add -A -
請執行下列命令來確認檔案並附加確認訊息:
git commit -m "Add sample application files" -
執行下列命令,將檔案從本機儲存庫推送至 CodeCommit 儲存庫:
git push
-
-
-
您下載並新增至本機儲存庫的檔案現在已新增至 CodeCommit
MyDemoRepo儲存庫中的main分支,並準備好包含在管道中。
步驟 3:建立 Amazon EC2 Linux 執行個體並安裝 CodeDeploy 代理程式
在此步驟中,您會建立部署範例應用程式的 Amazon EC2 執行個體。在此程序中,請建立執行個體角色,允許在執行個體上安裝和管理 CodeDeploy 代理程式。CodeDeploy 代理程式是一種軟體套件,可讓執行個體用於 CodeDeploy 部署。您也可以連接政策,允許執行個體擷取 CodeDeploy 代理程式用來部署應用程式的檔案,並允許 SSM 管理執行個體。
建立執行個體角色
-
開啟 IAM 主控台,網址為 https://https://console.aws.amazon.com/iam/
)。 -
從主控台儀表板,選擇 Roles (角色)。
-
選擇建立角色。
-
在選取信任實體類型下,選取 AWS 服務。在選擇使用案例下,選取 EC2。在 Select your use case (選取您的使用案例) 下,選擇 EC2。選擇下一步:許可。
-
搜尋並選取名為 的政策
AmazonEC2RoleforAWSCodeDeploy。 -
搜尋並選取名為 的政策
AmazonSSMManagedInstanceCore。選擇下一步:標籤。 -
選擇下一步:檢閱。輸入角色的名稱 (例如,
EC2InstanceRole)。注意
記下您的角色名稱,以用於下一個步驟。您會在建立執行個體時選擇此角色。
選擇建立角色。
啟動執行個體
前往 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
從側邊導覽中,選擇執行個體,然後從頁面頂端選取啟動執行個體。
-
在名稱中,輸入
MyCodePipelineDemo。這會將標籤索引鍵Name和標籤值 指派給執行個體MyCodePipelineDemo。稍後,您會建立 CodeDeploy 應用程式,將範例應用程式部署到此執行個體。CodeDeploy 會根據標籤選取要部署的執行個體。 -
在應用程式和作業系統映像 (Amazon Machine Image) 下,找到具有 AWS 標誌的 Amazon Linux AMI 選項,並確認已選取。(此 AMI 描述為 Amazon Linux 2 AMI (HVM),並標記為「免費方案合格」。)
-
在執行個體類型下,選擇符合免費方案的
t2.micro類型做為執行個體的硬體組態。 -
在金鑰對 (登入) 下,選擇金鑰對或建立一個金鑰對。
您也可以選擇不使用金鑰對繼續。
注意
基於本教學的目的,您可以在不使用金鑰對的情況下繼續進行。若要使用 SSH 連接到執行個體,請建立或使用金鑰對。
-
在網路設定下,執行下列動作。
在自動指派公有 IP 中,請確定狀態為啟用。
針對建立的安全群組,選擇 HTTP,然後在來源類型下,選擇我的 IP。
-
展開 Advanced Details (進階詳細資訊)。在 IAM 執行個體描述檔中,選擇您在先前程序中建立的 IAM 角色 (例如
EC2InstanceRole)。 -
在摘要下,於執行個體數量下,輸入
1.。 -
選擇啟動執行個體。
-
您可以在 Instances (執行個體) 頁面上檢視啟動狀態。當您啟動執行個體時,其初始狀態是
pending。在執行個體啟動後,其狀態會變更為running,並得到公有的 DNS 名稱。(如果 Public DNS (公有 DNS) 欄未顯示,請選擇 Show/Hide (顯示/隱藏) 圖示,然後選擇 Public DNS (公有 DNS)。)
步驟 4:在 CodeDeploy 中建立應用程式
在 CodeDeploy 中,應用程式是一種資源,其中包含您要部署的軟體應用程式。稍後,您將此應用程式與 CodePipeline 搭配使用,以自動將範例應用程式部署到您的 Amazon EC2 執行個體。
首先,您要建立允許 CodeDeploy 執行部署的角色。然後,您可以建立 CodeDeploy 應用程式。
建立 CodeDeploy 服務角色
-
開啟位於 https://https://console.aws.amazon.com/iam/
) 的 IAM 主控台。 -
從主控台儀表板,選擇 Roles (角色)。
-
選擇建立角色。
-
在選取信任的實體下,選擇 AWS 服務。在使用案例中,選擇 CodeDeploy。從列出的選項中選擇 CodeDeploy。選擇下一步。
AWSCodeDeployRole受管政策已連接至角色。 -
選擇下一步。
-
輸入角色的名稱 (例如
CodeDeployRole),然後選擇 Create role (建立角色)。
在 CodeDeploy 中建立應用程式
-
在 https://https://console.aws.amazon.com/codedeploy
開啟 CodeDeploy 主控台。 -
如果應用程式頁面未顯示,請在功能表中選擇應用程式。
-
選擇建立應用程式。
-
在 Application name (應用程式名稱) 中,輸入
MyDemoApplication。 -
在 Compute Platform (運算平台) 中,選擇 EC2/On-premises (EC2/ 現場部署)。
-
選擇建立應用程式。
在 CodeDeploy 中建立部署群組
部署群組是一種資源,可定義部署相關設定,例如要部署哪些執行個體以及部署這些執行個體的速度。
-
在顯示您應用程式的頁面上,選擇 Create deployment group (建立部署群組)。
-
在 Deployment group name (部署群組名稱) 中,輸入
MyDemoDeploymentGroup。 -
在服務角色中,選擇您先前建立之服務角色的 ARN (例如,
)。arn:aws:iam::account_ID:role/CodeDeployRole -
在 Deployment type (部署類型) 下,選擇 In-place (就地進行)。
-
在 Environment configuration (環境組態) 下,選擇 Amazon EC2 Instances (Amazon EC2 執行個體)。在金鑰欄位中,輸入
Name。在值欄位中,輸入您用來標記執行個體的名稱 (例如MyCodePipelineDemo)。 -
在具有 AWS Systems Manager 的客服人員組態下,選擇現在並排程更新。這會在執行個體上安裝 代理程式。Linux 執行個體已使用 SSM 代理程式設定,現在將使用 CodeDeploy 代理程式更新。
-
在 Deployment configuration (部署組態) 下,選擇
CodeDeployDefault.OneAtaTime。 -
在Load Balancer下,確定未選取啟用負載平衡。您不需要為此範例設定負載平衡器或選擇目標群組。
-
選擇 Create deployment group (建立部署群組)。
步驟 5:在 CodePipeline 中建立您的第一個管道
您現在已準備好建立和執行您的第一個管道。在此步驟中,您會建立管道,在程式碼推送至 CodeCommit 儲存庫時自動執行。
建立 CodePipeline 管道
登入 AWS 管理主控台 並開啟 CodePipeline 主控台,網址為 https://http://console.aws.amazon.com/codesuite/codepipeline/home
。 前往 https://console.aws.amazon.com/codepipeline/
開啟 CodePipeline 主控台。 -
在 Welcome (歡迎) 頁面、Getting started (入門) 頁面、或者 Pipelines (管道) 頁面上,選擇 Create pipeline (建立管道)。
-
在步驟 1:選擇建立選項頁面的建立選項下,選擇建置自訂管道選項。選擇下一步。
-
在步驟 2:選擇管道設定中,在管道名稱中輸入
MyFirstPipeline。 -
CodePipeline 提供 V1 和 V2 類型的管道,其特性和價格有所不同。V2 類型是您可以在主控台中選擇的唯一類型。如需詳細資訊,請參閱管道類型。如需 CodePipeline 定價的資訊,請參閱 定價
。 -
在服務角色中,選擇新服務角色以允許 CodePipeline 在 IAM 中建立服務角色。
-
將 Advanced settings (進階設定) 下的設定保留為預設值,然後選擇 Next (下一步)。
-
在步驟 3:新增來源階段的來源提供者中,選擇 CodeCommit。在儲存庫名稱中,選擇您在 中建立的 CodeCommit 儲存庫名稱步驟 1:建立 CodeCommit 儲存庫。在 Branch name (分支名稱) 中,選擇
main,然後選擇 Next step (下一個步驟)。選取儲存庫名稱和分支之後,會出現一則訊息,顯示要為此管道建立的 Amazon CloudWatch Events 規則。
在 Change detection options (變更刪除選項) 下,保持預設設定。這可讓 CodePipeline 使用 Amazon CloudWatch Events 來偵測來源儲存庫中的變更。
選擇下一步。
-
在步驟 4:新增建置階段中,選擇略過建置階段,然後再次選擇略過以接受警告訊息。選擇下一步。
注意
在此教學中,您將部署無須建置服務的程式碼,因此可以略過此步驟。不過,如果原始程式碼在部署到執行個體之前需要建置,您可以在此步驟中設定 CodeBuild
。 -
在步驟 5:新增測試階段中,選擇略過測試階段,然後再次選擇略過以接受警告訊息。
選擇下一步。
-
在步驟 6:新增部署階段的部署提供者中,選擇 CodeDeploy。在 Application name (應用程式名稱) 中,選擇
MyDemoApplication。在 Deployment group (部署群組) 中,選擇MyDemoDeploymentGroup,然後選擇 Next step (下一個步驟)。 -
在步驟 7:檢閱中,檢閱資訊,然後選擇建立管道。
-
管道會在建立後開始執行。它會從您的 CodeCommit 儲存庫下載程式碼,並建立 CodeDeploy 部署到您的 EC2 執行個體。當 CodePipeline 範例將網頁部署到 CodeDeploy 部署中的 Amazon EC2 執行個體時,您可以檢視進度、成功和失敗訊息。
恭喜您!您剛在 CodePipeline 中建立簡單的管道。
下一步,您會驗證結果。
驗證您的管道是否成功執行
-
檢視管道初始進度。每一個階段狀態會從 No executions yet (尚未執行) 變更為 In Progress (進行中),然後顯示 Succeeded (成功) 或 Failed (失敗)。該管道應會在幾分鐘內完成初次執行。
-
管道狀態顯示成功後,在部署階段的狀態區域中,選擇 CodeDeploy。這會開啟 CodeDeploy 主控台。如果未顯示 Succeeded (成功),請參閱 CodePipeline 故障診斷。
-
在 Deployments (部署) 標籤上,選擇部署 ID。在部署的頁面上的 Deployment lifecycle events (部署生命週期事件) 下,選擇執行個體 ID。這會開啟 EC2 主控台。
-
在 Description (敘述) 標籤的 Public DNS (公有 DNS) 中複製地址 (例如,
ec2-192-0-2-1.us-west-2.compute.amazonaws.com),然後貼上至 Web 瀏覽器的地址列中。網頁會顯示您下載並推送至 CodeCommit 儲存庫的範例應用程式。
如需關於階段、動作以及管道如何運作的更多資訊,請參閱 CodePipeline 概念。
步驟 6:修改 CodeCommit 儲存庫中的程式碼
您的管道設定為在對 CodeCommit 儲存庫進行程式碼變更時執行。在此步驟中,您會變更屬於 CodeCommit 儲存庫中範例 CodeDeploy 應用程式一部分的 HTML 檔案。推送這些變更時,您的管道會再次執行,並會在您稍早存取的 Web 地址顯示您所做的變更。
-
將目錄變更為您的本機儲存庫:
(For Linux, macOS, or Unix)cd /tmp/MyDemoRepo(For Windows)cd c:\temp\MyDemoRepo -
使用文字編輯器修改
index.html檔案:(For Linux or Unix)gedit index.html(For OS X)open –e index.html(For Windows)notepad index.html -
修訂
index.html檔案的內容,變更網頁的背景顏色和一些文字,然後儲存檔案。<!DOCTYPE html> <html> <head> <title>Updated Sample Deployment</title> <style> body { color: #000000; background-color: #CCFFCC; font-family: Arial, sans-serif; font-size:14px; } h1 { font-size: 250%; font-weight: normal; margin-bottom: 0; } h2 { font-size: 175%; font-weight: normal; margin-bottom: 0; } </style> </head> <body> <div align="center"><h1>Updated Sample Deployment</h1></div> <div align="center"><h2>This application was updated using CodePipeline, CodeCommit, and CodeDeploy.</h2></div> <div align="center"> <p>Learn more:</p> <p><a href="https://docs.aws.amazon.com/codepipeline/latest/userguide/">CodePipeline User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codecommit/latest/userguide/">CodeCommit User Guide</a></p> <p><a href="https://docs.aws.amazon.com/codedeploy/latest/userguide/">CodeDeploy User Guide</a></p> </div> </body> </html> -
透過執行下列命令來遞交變更並推送至 CodeCommit 儲存庫,一次一個命令:
git commit -am "Updated sample application files"git push
驗證您的管道是否成功執行
-
檢視管道初始進度。每一個階段狀態會從 No executions yet (尚未執行) 變更為 In Progress (進行中),然後顯示 Succeeded (成功) 或 Failed (失敗)。管道的執行應會在幾分鐘內完成。
-
動作狀態顯示 Succeeded (成功) 後,請重新整理您先前在瀏覽器中存取的示範頁面。
隨即顯示更新的網頁。
步驟 7:清除資源
您可以將在此教學中建立的一些資源用在本指南的其他教學。例如,您可以重複使用 CodeDeploy 應用程式和部署。不過,在您完成這些教學課程之後,應該刪除管道以及其所使用的資源,才不會因為持續使用那些資源而付費。首先,刪除管道,然後刪除 CodeDeploy 應用程式及其相關聯的 Amazon EC2 執行個體,最後刪除 CodeCommit 儲存庫。
清除此教學中使用的資源
-
若要清除 CodePipeline 資源,請遵循 中刪除管道 AWS CodePipeline中的指示。
-
若要清除 CodeDeploy 資源,請遵循清除部署逐步解說資源中的指示。
-
若要刪除 CodeCommit 儲存庫,請遵循刪除 CodeCommit 儲存庫中的指示。
步驟 8:深入閱讀
進一步了解 CodePipeline 的運作方式:
-
如需關於階段、動作以及管道如何運作的更多資訊,請參閱 CodePipeline 概念。
-
如需您可以使用 CodePipeline 執行之動作的相關資訊,請參閱 與 CodePipeline 動作類型的整合。
-
嘗試這個更進階的教學:教學:建立四階段管道。這個教學會建立多階段管道,其中包含在部署程式碼前的程式碼建置步驟。