使用 AWS CodePipeline
在本教學課程中,您將學習如何建立可部署即時範例應用程式的自動化軟體發行管道。您將使用 AWS CodePipeline 建立管道,該服務會在每次程式碼變更時建立、測試及部署您的程式碼。您可用 GitHub 帳戶、Amazon Simple Storage Service (S3) 儲存貯體或 AWS CodeCommit 儲存庫做為範例應用程式碼的來源位置。您也可用 AWS Elastic Beanstalk 做為範例應用程式的部署目標。完成後的管道可用來偵測含有範例應用程式之來源儲存庫所發生的變更,然後自動更新即時範例應用程式。
持續部署可部署修訂版本到生產環境,而不需要開發人員的明確核准,這能讓整個軟體發行程序自動化。
此教學中的所有操作都可用免費方案資格來進行。
管理您的 AWS 資源
登入主控台持續部署管道需要含有虛擬伺服器的目標環境或 Amazon EC2 執行個體,以用來部署範本程式碼。您應該在建立管道前先準備此環境。
a. 為簡化在本教學課程中設定及組態 EC2 執行個體的程序,您將使用 AWS Elastic Beanstalk 建立範例環境。Elastic Beanstalk 可讓您輕鬆託管 Web 應用程式,無需自行啟動、設定或操作虛擬伺服器。它會自動佈建及操作基礎設施 (例如,虛擬伺服器、負載平衡器等),並為您提供應用程式堆疊 (例如,作業系統、語言與架構、Web 和應用程式伺服器等)。
在此步驟中,您將擷取範例應用程式碼的副本,並選擇要託管程式碼的來源。管道將從來源取得程式碼,然後對其執行動作。
您可用三種選項其中之一做為來源:GitHub 儲存庫、Amazon S3 儲存貯體或 AWS CodeCommit 儲存庫。選取您的偏好設定,並依照下列步驟進行:
在此步驟中,您將建立並設定含有來源和部署這兩個動作的簡易管道。將來源儲存庫和部署環境的位置提供至 CodePipeline。
a. 按一下這裡開啟 AWS CodePipeline 主控台。
- 在 Welcome (歡迎使用) 頁面上,按一下 Create pipeline (建立管道)。
- 如果這是您第一次使用 AWS CodePipeline,則會出現簡介頁面,而不是 Welcome (歡迎使用)。按一下 Get Started (開始使用)。
c.在 Step 2: Source (步驟 2:來源) 頁面上,選取所選的來源位置,然後依照下列步驟進行:
e.在 Step 4: Beta (步驟 4:Beta) 頁面上:
- Deployment provider (部署提供者):按一下 AWS Elastic Beanstalk (AWS Elastic Beanstalk)。
- Application name (應用程式名稱):按一下 My First Elastic Beanstalk Application (我的第一個 Elastic Beanstalk 應用程式)。
- Environment name (環境名稱):按一下 Default-Environment (Default-Environment)。
- 按一下 Next Step (下一步)。
備註:名稱「Beta」是預設指定給管道此階段的名稱,如同「Source」(來源) 是管道的第一階段所指定的名稱。
f.在 Step 5: Service Role (步驟 5:服務角色) 頁面上:
- Service Role (服務角色):按一下 Create role (建立角色)。
- 您將被重新導向到 IAM 主控台,說明要為您建立的 AWS-CodePipeline-Service 角色。按一下 Allow (允許)
- 建立角色後,您將回到 Step 5: Service Role (步驟 5:服務角色) 頁面,Role name (角色名稱) 將顯示 AWS-CodePipeline-Service。按一下 Next Step (下一步)。
備註:只有在您第一次於 AWS CodePipeline 中建立管道時,才需要建立服務角色。若已建立服務角色,您可從角色下拉式清單中選擇。下拉式清單會顯示與您帳戶建立關聯的所有 IAM 服務角色,如果您選擇與預設值不同的名稱,則請確定名稱可以辨識為 AWS CodePipeline 的服務角色。
在此步驟中,您將啟動管道。建立管道後,管道便會自動開始執行。首先,管道會偵測來源位置的範例應用程式碼、封裝檔案,然後將檔案移到您定義的第二階段。在此階段,管道會將程式碼傳遞至 Elastic Beanstalk,其中包含將託管程式碼的 EC2 執行個體。Elastic Beanstalk 負責處理將程式碼部署至 EC2 執行個體。
在此步驟中,您將修改範本程式碼,並將變更遞交至儲存庫。CodePipeline 將偵測更新後的範本程式碼,然後自動開始透過 Elastic Beanstalk 將程式碼部署到 EC2 執行個體。
請注意,您部署的範例網頁將參照 AWS CodeDeploy,此服務會自動執行程式碼部署。在 CodePipeline 中,CodeDeploy 是使用 Elastic Beanstalk 執行部署動作的替代方案。接著我們更新範本程式碼,以正確顯示您已使用 Elastic Beanstalk 部署範本程式碼的狀態。
為避免日後發生變更,您將刪除透過此教學課程啟動的所有資源,資源包括管道、Elastic Beanstalk 應用程式,以及設定用來託管程式碼的來源。
您已成功使用 AWS CodePipeline 建立自動化軟體發行管道! 您使用 CodePipeline 建立了管道,該管道使用 GitHub、Amazon S3 或 AWS CodeCommit 做為應用程式碼的來源位置,並將程式碼部署到 AWS Elastic Beanstalk 所管理的 Amazon EC2 執行個體。管道將自動在每次程式碼變更時部署程式碼。您往實作持續部署又邁進了一步!
現在您已學會如何使用 AWS CodePipeline 建立簡易管道,接著請造訪下列資源以了解更多。
- 請遵循本指南建立更進階的四階段管道。此管道使用 GitHub 儲存庫做為您的來源、用於建置及測試專案的 Jenkins 建置伺服器,以及用於將內建程式碼部署到預備伺服器的 AWS CodeDeploy 應用程式。
- 請使用我們的管道入門套件快速建立整合 Jenkins 建置伺服器的四階段管道。
- 進一步了解持續交付。