
Tiện thể làm làm demo CICD Pipeline với CodeBuild, CodeDeploy để trainning cơ bản nên mình cũng screenshot lại các steps luôn để viết kipalog.
Flow này cụ thể sử dụng:
Thực ra trong quá trình traning mình cũng có chia sẻ chi tiết hơn các option, ý nghĩa nhưng trong bài này mình chỉ screenshot lại trường hợp cơ bản để cho các bạn làm quen nhé.
Github Application Code: https://github.com/MinhHungTrinh/aws-pipeline-example
Output artifact format: Chọn Codepipeline Default => tức là chỉ zip code lại, k có .git (git metadata)
Create a CodeBuild
Click create Continue CodePipeline
Tạm thời Skip deploy stage
Kết quả:
Build sẽ bị lỗi, cần tạo policy thêm gán vào role đang sử dụng cho Codebuild để thao tác với ECR:
Mọi người lưu ý sửa region, account-id, ecr name nhé.
Sau khi attach vào Role của Codebuild, thử vào Pipeline release lại.
Kết quả:
###3. CD with CodeDeploy
####3.1. Create ASG, EC2
IAM Role EC2CodeDeployRole cho EC2 cần policy như screenshot. Policy cần có:
Thao tác Code Deploy : AmazonEC2RoleForAWSCodeDeploy Thao tác SSM Pull image từ ECR: Bạn có thể sử dụng luôn policy thao tác với ECR được tạo cho codebuild lúc nãy.
Tạo launch template với AMI là AWS Linux 2 x86, được gán IAM Profile là IAM Role vừa tạo ở trên. Phần user-data như sau:
Mọi người lưu ý là update REGION=“us-east-1” tương ứng với region của bạn nhé. Mình đang dùng Tokyo.
Cụ thể như screenshot ở dưới:
Chỗ này cần tạo trước 1 Ec2 Security Group trong cùng VPC inbound allow port: 80 cho anywhere.
Sau đó gán vào Launch template:
Triển khai IAM Role cho CodeDeploy với AWSCodeDeployRole
Mình k sử dụng ALB nên k có target group.
Điền thông tin như hình:
Ngoài ra cũng có thể tạo thêm 1 bước Manual Approve trước bước Deploy:
Thực hiện Save Pipeline:
Kết quả cuối cùng:
Cuối cùng bạn hãy thực hiện test với pipeline của mình đi nhé. Pipeline này khá là basic, nếu có time bạn hãy optimize n từ bước build, deploy cũng như tạo thông báo cho các event của pipeline nhé.
Quick Links
Social Media