Trang chủTác giảLiên hệ

CICD Pipeline: Codebuild, CodeDeploy

By Trịnh Minh Hùng
Published in DevOps
December 14, 2021
2 min read

![alt text](https://kipalog.kaopiz.com/uploads/c392/1442/Blank diagram - AWS-Pipeline.png)

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:

  • Remote Git là Github.
  • CI Tool là Codebuild
  • CD Tool là CodeDeploy
  • Tất cả được triển khai trên CodePipeline của AWS
  • ECR là Registry để lưu image

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é.

1. Initial

1.1. Fork github repository

Github Application Code: https://github.com/MinhHungTrinh/aws-pipeline-example

1.2. Create Github Connection

alt text

alt text

alt text

alt text

alt text

alt text

alt text

1.3. Create ECR

alt text

alt text

2. CI with Codebuild

2.1. Create CodePipeline & CodeBuild

alt text

alt text

Output artifact format: Chọn Codepipeline Default => tức là chỉ zip code lại, k có .git (git metadata)

alt text

Create a CodeBuild

alt text

alt text

alt text

Click create Continue CodePipeline

alt text

alt text

Tạm thời Skip deploy stage

alt text

Kết quả:

alt text

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ả:

alt text

###3. CD with CodeDeploy

####3.1. Create ASG, EC2

3.1.1. Create IAM Role cho EC2

alt text

alt text

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.

3.1.2. Create Launch Template

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:

alt text

Chỗ này cần tạo trước 1 Ec2 Security Group trong cùng VPC inbound allow port: 80 cho anywhere.

alt text

Sau đó gán vào Launch template:

alt text

alt text

alt text

3.1.3. Create ASG

alt text

alt text

alt text

3. CodeDeploy

3.1. Create IAM Role cho CodeDeploy

Triển khai IAM Role cho CodeDeploy với AWSCodeDeployRole

alt text

alt text

3.2. Create Codedeploy Application

alt text

3.3. Create Deployment Group

alt text

alt text

alt text

Mình k sử dụng ALB nên k có target group.

3.3. Add CodeDeploy to CodePipeline

alt text

alt text

alt text

alt text

Điền thông tin như hình:

alt text

Ngoài ra cũng có thể tạo thêm 1 bước Manual Approve trước bước Deploy:

alt text

Thực hiện Save Pipeline:

alt text

Kết quả cuối cùng:

alt text

Kết luận

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é.


Tags

CICDDEVOPS

Trịnh Minh Hùng

Related Posts

Hướng dẫn quẩy CICD cho elastic beanstalk với bamboo
December 14, 2021
2 min
© 2021, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media