本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:建立簡單管道 (CodeCommit儲存庫)
在本教學中,您可 CodePipeline 以使用將 CodeCommit 儲存庫中維護的程式碼部署到單一 Amazon EC2 執行個體。當您將變更推送至 CodeCommit 儲存庫時,就會觸發管道。管道會使用 CodeDeploy 做為部署服務將您的變更部署到 Amazon EC2 執行個體。
管道有兩個階段:
-
來源動作的來源階段 (來 CodeCommit 源)。
-
部署動作的部署階段 ( CodeDeploy 部署)。
開始使用最簡單的方法 AWS CodePipeline 是使用 CodePipeline 主控台中的「建立管線」精靈。
注意
在開始之前,請確定您已設定要使用的 Git 用戶端 CodeCommit。如需指示,請參閱設定 CodeCommit。
步驟 1:建立 CodeCommit 儲存庫
首先,您可以在中建立一個存放庫 CodeCommit。您的管道會在執行時從此儲存庫獲得原始程式碼。您還可以創建一個本地存儲庫,在將代碼推送到 CodeCommit 存儲庫之前維護和更新代碼。
若要建立存 CodeCommit 放庫
-
請在以下位置開啟 CodeCommit 主控台。
https://console.aws.amazon.com/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 執行個體的步驟進行操作。-
如果您想要使用以下方式部署到 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_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 管理執行個體。
建立執行個體角色
-
在 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 機器映像)」下,找到帶有 AWS 標誌的 Amazon Linux AMI 選項,並確定已選取該選項。(這個 AMI 被描述為 Amazon Linux 2 AMI(HVM),並被標記為「符合免費方案的資格」。)
-
在「執行個體類型」下,選擇免費方案合格
t2.micro
類型做為執行個體的硬體組態。 -
在 [key pair (登入)] 下,選擇金鑰配對或建立金鑰組。
您也可以選擇不使用 key pair 繼續。
注意
基於本教學的目的,您可以在不使用金鑰對的情況下繼續進行。若要使用 SSH 連接到執行個體,請建立或使用金鑰對。
-
在 [網路設定] 底下,執行下列動作。
在 [自動指派公用 IP] 中,確定狀態為 [啟用]。
-
在 Assign a security group (指派安全群組) 旁,選擇 Create a new security group (建立新的安全群組)。
-
在 [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://console.aws.amazon.com/iam/
開啟身分與存取權管理主控台。 -
從主控台儀表板,選擇 Roles (角色)。
-
選擇建立角色。
-
在 [選取信任的實體] 下,選擇AWS 服務。在 Use case (使用案例) 中,選擇 CodeDeploy。CodeDeploy從列出的選項中進行選擇。選擇下一步。
AWSCodeDeployRole
受管政策已連接至角色。 -
選擇下一步。
-
輸入角色的名稱 (例如
CodeDeployRole
),然後選擇 Create role (建立角色)。
若要在中建立應用程式 CodeDeploy
-
請在以下位置開啟 CodeDeploy 主控台。
https://console.aws.amazon.com/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 Management Console 並開啟 CodePipeline 主控台,網址為 http://console.aws.amazon.com/codesuite/codepipeline/home
。 請在以下位置開啟 CodePipeline 主控台。
https://console.aws.amazon.com/codepipeline/ -
選擇 Create pipeline (建立管道)。
-
在 Step 1: Choose pipeline settings (步驟 1:選擇管道設定) 的 Pipeline name (管道名稱) 中,輸入
MyFirstPipeline
。 -
在管線類型中,針對本教學課程的目的選擇 V1。您也可以選擇 V2;但是請注意,管道類型在特性和價格上有所不同。如需詳細資訊,請參閱 管線類型。
-
在 [服務角色] 中,選擇 [新增服務角色] CodePipeline 以允許在 IAM 中建立服務角色。
-
將 Advanced settings (進階設定) 下的設定保留為預設值,然後選擇 Next (下一步)。
-
在步驟 2:新增來源階段的來源提供者中,選擇CodeCommit。在存放庫名稱中,選擇您在其中建立的 CodeCommit 存放庫名稱步驟 1:建立 CodeCommit 儲存庫。在 Branch name (分支名稱) 中,選擇
main
,然後選擇 Next step (下一個步驟)。選取儲存庫名稱和分支後,會出現一則訊息,顯示要為此管道建立的 Amazon E CloudWatch vents 規則。
在 Change detection options (變更刪除選項) 下,保持預設設定。這可讓您 CodePipeline 使用 Amazon CloudWatch 事件偵測來源儲存庫中的變更。
選擇下一步。
-
在 Step 3: Add build stage (步驟 3:新增建置階段) 中,選擇 Skip build stage (跳過建置階段),然後再次選擇 Skip (跳過) 來接受警告訊息。選擇下一步。
注意
在此教學中,您將部署無須建置服務的程式碼,因此可以略過此步驟。不過,如果您的原始程式碼必須在部署至執行個體之前建立,您可以CodeBuild
在此步驟中進行設定。 -
在步驟 4:新增部署階段的部署提供者中,選擇CodeDeploy。在 Application name (應用程式名稱) 中,選擇
MyDemoApplication
。在 Deployment group (部署群組) 中,選擇MyDemoDeploymentGroup
,然後選擇 Next step (下一個步驟)。 -
在 Step 5: Review (步驟 5:檢閱) 中,檢閱資訊,然後選擇 Create pipeline (建立管道)。
-
管道會在建立後開始執行。它會從您的 CodeCommit儲存庫下載程式碼,並建立 EC2 執行個體的 CodeDeploy 部署。當 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 動作類型的整合。
-
嘗試這個更進階的教學:教學:建立四階段管道。這個教學會建立多階段管道,其中包含在部署程式碼前的程式碼建置步驟。