使用 AWS CodeCommit 和 CodeDeploy 實現代碼部署自動化
已發表: 2022-03-25作為一名 Web 開發人員,您的工作可能包括幾個複雜的任務,例如到生產服務器的代碼部署自動化,或者如果您在一個小組中工作並在將代碼上傳到實時網站時遇到問題,那麼這篇博文是克服所有這些問題的解決方案問題。
使用 FTP 時,您必須覆蓋您的共同開發人員的代碼,這是一個很常見的問題,並且發生在我們大多數人身上。 本指南將向您展示使用 AWS CodeCommit、CodeDeploy 和 Pipeline 服務實現代碼部署自動化。
技術概述:
- AWS CodeCommit :我們將使用 CodeCommit 來維護我們的存儲庫(Web 內容/代碼文件),該存儲庫將保存所有項目文件和提交日誌。
- EC2 服務器:我們將使用 EC2 作為我們的生產服務器,它將包含您的網站訪問者的實時站點和代碼。
- AWS CodeDeploy :它將保存應用程序以將您的代碼發佈到 EC2 服務器。 我們還將創建一個部署組,該組將保存我們希望在其中發布代碼的目標 EC2 實例的名稱/標籤。
- Pipeline :我們將選擇 CodeCommit 作為我們的源,並選擇 CodeDeploy 作為我們的部署階段。 因此,只要在 CodeCommit 中檢測到任何代碼更改,管道就會運行並將這些代碼更改推送到 CodeDeploy(EC2 實例)。
代碼部署自動化:詳細解釋:
為代碼部署自動化創建 IAM 和 Git 用戶
我們首先需要創建一個 IAM 用戶和 Git 用戶,它們將更改代碼並將其發佈到部署服務器上。
- 創建 IAM 用戶
- 允許訪問:AWSCodeCommitFullAccess、AWSCodeDeployFullAccess、AWSCodeCommitPowerUser。 您將在“直接附加現有策略”選項卡中找到此選項。
- 現在,使用此 IAM 用戶登錄。
- 單擊右上角的安全憑據。
- 單擊AWS CodeCommit 憑證選項卡。
- 在“AWS CodeCommit 的 HTTPS Git 憑證”部分下,單擊“生成憑證”按鈕。
- 現在,將該用戶名和密碼複製到安全的地方。 這將是您的 Git 用於推送/拉取代碼更改的主要用戶名和密碼。
在 CodeCommit 中創建存儲庫
現在,讓我們創建一個存儲庫來保存您的確切代碼。
- 從 IAM 用戶轉到CodeCommit 儀表板。
- 在右上角,選擇您要創建存儲庫的區域。
- 單擊創建存儲庫,為其命名,描述,然後單擊創建。
- 在“克隆存儲庫”部分下,您將看到存儲庫的 URL。 將其保存在安全的地方。 它看起來像: https ://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
首次上傳項目文件
- 打開原始代碼所在的本地系統的命令提示符。
- 在命令提示符下,導航到代碼所在的路徑。
- 現在,運行以下命令首次將您的代碼推送到 AWS 存儲庫:
混帳初始化
git config –local init.defaultBranch main
git config –global init.defaultBranch main
混帳添加。 ## 這將提交項目的所有文件
git commit –m “初始提交”
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- 創建 EC2 實例並安裝 CodeDeploy 代理
- 創建實例角色
- 打開您的 AWS IAM 控制台。
- 轉到角色選項卡>>創建角色。
- 在選擇受信任實體的類型下,選擇AWS 服務。 在“選擇用例”下,選擇 EC2 。 在“選擇您的用例”下,選擇 EC2。 選擇下一步:權限。
- 搜索並選擇名為AmazonEC2RoleforAWSCodeDeploy的策略,然後選擇 Next: Tags 。
- 選擇下一步:查看。 輸入角色的名稱(例如EC2InstanceRole )並單擊Create 。
- 創建 EC2 實例
- 轉到 EC2 控制台。 單擊啟動實例。
- 選擇一個 Amazon 系統映像 (AMI),找到Amazon Linux 2 AMI (HVM)、SSD 卷類型,然後選擇選擇。 (此 AMI 標記為“符合免費層級”,可在列表頂部找到。)
- 選擇 Instance Type頁面,選擇符合免費套餐條件的 t2.micro 類型作為您的實例的硬件配置,然後選擇Next: Configure Instance Details 。
- 配置實例詳細信息頁面,執行以下操作:
- 在實例數中,輸入 1 。
- 在自動分配公共 IP 中,選擇啟用。
- 在 IAM 角色中,選擇您在上一個過程中創建的 IAM 角色(例如EC2InstanceRole )。
- 展開Advanced Details ,然後在 User data 字段中,輸入以下內容:
#!/bin/bash
yum -y 更新
yum install -y ruby
百勝安裝 -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./安裝
./安裝自動
- 保留步驟 3:配置實例詳細信息頁面上的其餘項目不變。 選擇下一步:添加存儲。
- 保持步驟 4:添加存儲頁面不變,然後選擇下一步:添加標籤。
- 選擇添加標籤。 在 Key 中,輸入Name ,在 Value 中,輸入MyCodePipelineDemo 。 選擇下一步:配置安全組。 稍後,您創建一個 CodeDeploy 應用程序,將示例應用程序部署到此實例。 CodeDeploy 根據附加到實例的標籤選擇要部署的實例。
- 配置安全組頁面,執行以下操作:
- 在分配安全組旁邊,選擇創建新安全組。
- 在SSH行中的Source下,選擇My IP 。
- 選擇Add Rule ,選擇HTTP ,然後在Source下,選擇My IP
- 選擇查看並啟動。
- 在Review Instance Launch 頁面上,選擇 Launch。 當提示輸入密鑰對時,選擇 ' Proceed without a key pair' 。
- 選擇View Instances以關閉確認頁面並返回控制台。
- 您可以在Instances頁面查看啟動狀態。 當您啟動一個實例時,它的初始狀態是“待定”。 實例啟動後,其狀態更改為“正在運行”,並收到一個公共 DNS 名稱。 (如果未顯示Public DNS列,請選擇Show/Hide 圖標,然後選擇Public DNS 。)
- 實例可能需要幾分鐘才能準備好連接到它。 查看狀態檢查列中的信息以查看您的實例是否已通過狀態檢查。

在 CodeDeploy 中創建應用程序
- 創建 CodeDeploy 服務角色
- 在 https://console.aws.amazon.com/iam/ 打開 IAM 控制台
- 從控制台儀表板中,選擇Roles 。
- 選擇創建角色。
- 在選擇受信任實體的類型下,選擇AWS 服務。 在選擇一個用例下,選擇CodeDeploy 。 在選擇您的用例下,選擇 CodeDeploy。 選擇下一步:權限。 AWSCodeDeployRole託管策略已附加到該角色。
- 選擇下一步:標籤和下一步:審核。
- 輸入角色的名稱(例如 CodeDeployRole),然後選擇創建角色。
- 在 CodeDeploy 中創建應用程序
- 在 https://console.aws.amazon.com/codedeploy 打開 CodeDeploy 控制台
- 如果“應用程序”頁面未出現,請在菜單上選擇“應用程序”。
- 選擇創建應用程序。
- 在應用程序名稱中,輸入MyDemoApplication 。
- 在計算平台中,選擇EC2/On-premises 。
- 選擇創建應用程序。
- 在 CodeDeploy 中創建部署組
- 在顯示您的應用程序的頁面上,選擇創建部署組。
- 在部署組名稱中,輸入MyDemoDeploymentGroup 。
- In-Service Role,選擇您之前創建的服務角色(例如CodeDeployRole )。
- 在部署類型下,選擇就地。
- 在Environment configuration下,選擇Amazon EC2 Instances。 在 Key 字段中,輸入Name 。 在值字段中,輸入您用於標記實例的名稱(例如, MyCodePipelineDemo )。
- 在部署配置下,選擇CodeDeployDefault.OneAtaTime 。
- 在負載均衡器下,確保未選中啟用負載均衡。 您無需為此示例設置負載均衡器或選擇目標組。
- 展開高級部分。 在警報下,如果列出任何警報,請選擇忽略警報配置。
- 選擇創建部署組。
創建管道
- 創建管道
- 登錄 AWS 管理控制台並在 http://console.aws.amazon.com/codesuite/codepipeline/home 打開 CodePipeline 控制台
- 在 https://console.aws.amazon.com/codepipeline/ 打開 CodePipeline 控制台
- 選擇創建管道。
- 在Step 1 : Select pipeline settings 中,在 Pipeline name 中輸入MyFirstPipeline 。
- 在服務角色中,選擇新服務角色以允許 CodePipeline在 IAM中創建服務角色。
- 將高級設置下的設置保留為默認設置,然後選擇下一步。
- 在 Step 2 : Add source stage 中,在 Source provider 中,選擇CodeCommit 。
在存儲庫名稱中,選擇您在步驟 1:創建 CodeCommit 存儲庫中創建的 CodeCommit 存儲庫的名稱。 在分支名稱中,選擇 main,然後選擇 Next step。 - 選擇存儲庫名稱和分支後,將顯示一條消息,顯示要為此管道創建的 Amazon CloudWatch Events 規則。
- 在“更改檢測”選項下,保留默認值。 這允許 CodePipeline 使用 Amazon CloudWatch Events 來檢測源存儲庫中的更改。
- 選擇下一步。
- 在 Step 3 : Add build stage 中,選擇Skip build stage ,然後再次選擇 Skip接受警告消息。 選擇下一步。
注意:在本教程中,您正在部署需要無構建服務的代碼,因此您可以跳過此步驟。 但是,如果您的源代碼需要在部署到實例之前進行構建,您可以在此步驟中配置 CodeBuild。
- 在 Step 4 : Add deploy 階段,在 Deploy provider 中,選擇CodeDeploy 。
在應用程序名稱中,選擇MyDemoApplication 。 在部署組中,選擇MyDemoDeploymentGroup ,然後選擇Next step 。 - 在第 5 步:查看信息,然後選擇創建管道。
- 管道在創建後開始運行。 它從您的 CodeCommit 存儲庫下載代碼,並為您的 EC2 實例創建一個 CodeDeploy 部署。 當 CodePipeline 示例將網頁部署到 CodeDeploy 部署中的 Amazon EC2 實例時,您可以查看進度、“成功”和“失敗”消息。
你現在都準備好了! 轉到部署⇒部署。 您將看到所有成功部署和失敗部署的日誌。
要驗證站點上的更改,請打開您的 EC2 實例,搜索您的公共 DNS,它將顯示為: http ://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com 。
瀏覽它後,您將看到您的實時頁面。
您已成功完成代碼部署自動化。 您現在可以將新的代碼更改推送到您的存儲庫並自動將它們發佈到您的站點上。 如果您仍然遇到任何問題,請隨時在此處發表評論。