教學課程:建立簡單管道 (CodeCommit儲存庫) - AWS CodePipeline

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

教學課程:建立簡單管道 (CodeCommit儲存庫)

在本教學中,您可 CodePipeline 以使用將 CodeCommit 儲存庫中維護的程式碼部署到單一 Amazon EC2 執行個體。當您將變更推送至 CodeCommit 儲存庫時,就會觸發管道。管道會使用 CodeDeploy 做為部署服務將您的變更部署到 Amazon EC2 執行個體。

管道有兩個階段:

  • 來源動作的來源階段 (來 CodeCommit 源)。

  • 部署動作的部署階段 ( CodeDeploy 部署)。

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

注意

在開始之前,請確定您已設定要使用的 Git 用戶端 CodeCommit。如需指示,請參閱設定 CodeCommit

步驟 1:建立 CodeCommit 儲存庫

首先,您可以在中建立一個存放庫 CodeCommit。您的管道會在執行時從此儲存庫獲得原始程式碼。您還可以創建一個本地存儲庫,在將代碼推送到 CodeCommit 存儲庫之前維護和更新代碼。

若要建立存 CodeCommit 放庫

  1. 請在以下位置開啟 CodeCommit 主控台。 https://console.aws.amazon.com/codecommit/

  2. 在「區域」選取器中,選擇您 AWS 區域 要建立存放庫和管道的位置。如需詳細資訊,請參閱 AWS 區域 和端點

  3. 請在 Repositories (儲存庫) 頁面上,選擇 Create repository (建立儲存庫)。

  4. Create repository (建立儲存庫) 頁面的 Repository name (儲存庫名稱) 中,輸入儲存庫的名稱 (例如 MyDemoRepo)。

  5. 選擇建立

注意

本教學課程中的其餘步驟用MyDemoRepo於 CodeCommit 儲存庫的名稱。如果您選擇不同名稱,請在此教學課程中都使用此名稱。

設定本機儲存庫

在此步驟中,您將設定本機存放庫以連線到遠端 CodeCommit存放庫。

注意

您不需要設定本機存放庫。您也可以使用控制台上傳檔案,如中所述步驟 2:將示例代碼添加到存 CodeCommit 儲庫

  1. 隨著新儲存庫在主控台開啟後,選擇頁面右上角的 Clone URL (複製 URL),然後選擇 Clone SSH (複製 SSH)。複製 Git 儲存庫的地址會複製到剪貼簿。

  2. 在終端機或命令列,導覽至您要存放本機儲存庫的本機目錄。我們在此教學中使用 /tmp

  3. 執行以下命令來複製儲存庫,將 SSH 地址取代為您在上一個步驟中複製的地址。此命令會建立名為 MyDemoRepo 的目錄。您將範例應用程式複製到此目錄。

    git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyDemoRepo

步驟 2:將示例代碼添加到存 CodeCommit 儲庫

在此步驟中,您會下載為範例逐步解說所建立的範 CodeDeploy例應用程式的程式碼,並將其新增至您的 CodeCommit 存放庫。

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

    1. 選擇下列其中一項。選擇是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_dependenciesstart_server、和stop_server

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

    2. 下載已壓縮的檔案。

  2. 將檔案從 SampleApp_Linux.zip 解壓縮到您先前建立的本機目錄中 (例如,/tmp/MyDemoRepoc:\temp\MyDemoRepo)。

    請務必直接將檔案放入您的本機儲存庫。不要包含 SampleApp_Linux 資料夾。例如,在您的本機 Linux、macOS 或 Unix 機器上,您的目錄和檔案階層應如下所示:

    /tmp └-- MyDemoRepo │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
  3. 若要將檔案上傳至儲存庫,請使用下列其中一種方法。

    1. 若要使用 CodeCommit 主控台上傳檔案:

      1. 開啟主 CodeCommit 控台,然後從「儲存庫」清單中選擇您的存放

      2. 選擇 Add file (新增檔案),然後選擇 Upload file (上傳檔案)

      3. 選取 Choose file (選擇檔案),然後瀏覽您的檔案。若要在資料夾下新增檔案,請選擇 [建立檔案],然後輸入具有檔案名稱的資料夾名稱,例如scripts/install_dependencies。將文件內容粘貼到新文件中。

        輸入您的使用者名稱和電子郵件地址來確定變更。

        選擇 Commit changes (遞交變更)

      4. 針對每個檔案重複此步驟。

        您的儲存庫內容應如下所示:

        │-- appspec.yml │-- index.html │-- LICENSE.txt └-- scripts │-- install_dependencies │-- start_server └-- stop_server
    2. 要使用 git 命令上傳文件:

      1. 將目錄變更為您的本機儲存庫:

        (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo (For Windows) cd c:\temp\MyDemoRepo
      2. 請執行下列命令來同時將所有檔案放入階段:

        git add -A
      3. 請執行下列命令來確認檔案並附加確認訊息:

        git commit -m "Add sample application files"
      4. 運行以下命令將文件從本地存儲庫推送到存 CodeCommit儲庫:

        git push
  4. 您下載並添加到本地存儲庫的文件現在已添加到 CodeCommit MyDemoRepo存儲庫中的main分支中,並準備好包含在管道中。

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

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

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

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

  3. 選擇建立角色

  4. [選取信任實體的類型] 底下,選取AWS 服務。在 [選擇使用案例] 下,選取 [EC2]。在 Select your use case (選取您的使用案例) 下,選擇 EC2。選擇下一步:許可

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

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

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

    注意

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

    選擇建立角色

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

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

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

  4. 在「應用程式和作業系統映像 (Amazon 機器映像)」下,找到帶有 AWS 標誌的 Amazon Linux AMI 選項,並確定已選取該選項。(這個 AMI 被描述為 Amazon Linux 2 AMI(HVM),並被標記為「符合免費方案的資格」。)

  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. 摘要之下的例證數目下,輸入1..

  10. 選擇啟動執行個體

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

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

在中 CodeDeploy,應用程式是包含您要部署之軟體應用程式的資源。稍後,將此應用程式搭配使用, CodePipeline 將範例應用程式部署到 Amazon EC2 執行個體的自動化。

首先,您 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. 如果未顯示 [應用程式] 頁面,請在功能表上選擇 [應用程式]。

  3. 選擇建立應用程式

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

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

  6. 選擇建立應用程式

若要在中建立部署群組 CodeDeploy

部署群組是一種資源,可定義部署相關設定,例如要部署哪些執行個體以及部署這些執行個體的速度。

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

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

  3. 在 [服務角色] 中,選擇您先前建立之服務角色的 ARN (例如arn:aws:iam::account_ID:role/CodeDeployRole)。

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

  5. Environment configuration (環境組態) 下,選擇 Amazon EC2 Instances (Amazon EC2 執行個體)。在「機」欄位中,輸入Name。在「」欄位中,輸入您用來標記例證的名稱 (例如,MyCodePipelineDemo)。

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

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

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

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

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

您現在已準備好建立和執行您的第一個管道。在此步驟中,您會建立在程式碼推送至 CodeCommit 儲存庫時自動執行的管道。

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

    請在以下位置開啟 CodePipeline 主控台。 https://console.aws.amazon.com/codepipeline/

  2. 選擇 Create pipeline (建立管道)

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

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

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

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

  7. 步驟 2:新增來源階段來源提供者中,選擇CodeCommit。在存放庫名稱中,選擇您在其中建立的 CodeCommit 存放庫名稱步驟 1:建立 CodeCommit 儲存庫。在 Branch name (分支名稱) 中,選擇 main,然後選擇 Next step (下一個步驟)

    選取儲存庫名稱和分支後,會出現一則訊息,顯示要為此管道建立的 Amazon E CloudWatch vents 規則。

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

    選擇下一步

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

    注意

    在此教學中,您將部署無須建置服務的程式碼,因此可以略過此步驟。不過,如果您的原始程式碼必須在部署至執行個體之前建立,您可以CodeBuild在此步驟中進行設定。

  9. 步驟 4:新增部署階段部署提供者中,選擇CodeDeploy。在 Application name (應用程式名稱) 中,選擇 MyDemoApplication。在 Deployment group (部署群組) 中,選擇 MyDemoDeploymentGroup,然後選擇 Next step (下一個步驟)

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

  11. 管道會在建立後開始執行。它會從您的 CodeCommit儲存庫下載程式碼,並建立 EC2 執行個體的 CodeDeploy 部署。當 CodePipeline 範例將網頁部署到 CodeDeploy 部署中的 Amazon EC2 執行個體時,您可以檢視進度、成功和失敗訊息。

    開始在 CodePipeline 控制台中運行的管道視圖。

恭喜您!您剛剛建立了一個簡單的管道 CodePipeline。

下一步,您會驗證結果。

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

  2. 管線狀態顯示成功之後,請在「部署」階段的狀態區域中選擇CodeDeploy。這將打開控 CodeDeploy 制台。如果未顯示 Succeeded (成功),請參閱 疑難排 CodePipeline

  3. Deployments (部署) 標籤上,選擇部署 ID。在部署的頁面上的 Deployment lifecycle events (部署生命週期事件) 下,選擇執行個體 ID。這會開啟 EC2 主控台。

  4. 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 地址顯示您所做的變更。

  1. 將目錄變更為您的本機儲存庫:

    (For Linux, macOS, or Unix) cd /tmp/MyDemoRepo (For Windows) cd c:\temp\MyDemoRepo
  2. 使用文字編輯器修改 index.html 檔案:

    (For Linux or Unix)gedit index.html (For OS X)open –e index.html (For Windows)notepad index.html
  3. 修訂 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>
  4. 一次執行下列指令,將變更提交並推送至 CodeCommit 儲存庫:

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

  2. 動作狀態顯示 Succeeded (成功) 後,請重新整理您先前在瀏覽器中存取的示範頁面。

    更新後的網頁隨即顯示。

步驟 7:清除資源

您可以將在此教學中建立的一些資源用在本指南的其他教學。例如,您可以重複使用 CodeDeploy 應用程式和部署。不過,在您完成這些教學課程之後,應該刪除管道以及其所使用的資源,才不會因為持續使用那些資源而付費。首先,刪除管道,然後刪除 CodeDeploy 應用程式及其關聯的 Amazon EC2 執行個體,最後刪除 CodeCommit存放庫。

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

  2. 若要清理資 CodeDeploy 源,請遵循清理部署逐步解說資源中的指示。

  3. 若要刪除存 CodeCommit 放庫,請遵循刪除 CodeCommit存放庫中的指示。

步驟 8:深入閱讀

了解有關如何 CodePipeline 工作的更多信息