16 part series

CI/CD Trên AWS Với Bộ Developer Tools

Xây dựng pipeline CI/CD hoàn chỉnh trên AWS bằng bộ Developer Tools: CodeCommit, CodeBuild, CodeArtifact, CodeDeploy và CodePipeline. Series đi từ khái niệm tới một pipeline thật đưa code từ CodeCommit qua build, test, rồi deploy blue/green lên Auto Scaling Group EC2 với cổng phê duyệt và rollback tự động. Mọi hạ tầng dựng bằng AWS CLI, mọi lệnh chạy thật trên AWS, code lưu tại github.com/nghiadaulau/aws-cicd-series. Bám tài liệu chính thức AWS.

1

CI/CD Là Gì và Bộ Developer Tools Của AWS

Bài mở đầu series: vì sao deploy bằng tay sớm muộn cũng vỡ, CI và CD khác nhau ra sao, và AWS có những dịch vụ nào để dựng pipeline — CodeCommit, CodeBuild, CodeDeploy, CodePipeline, CodeArtifact. Cách các mảnh ghép lại thành một dây chuyền đưa code từ commit tới khi chạy trên EC2, tất cả điều khiển bằng AWS CLI.

Kai··6 min read·DevOpsAWS
2

Nền Tảng: IAM Service Role và S3 Artifact Bucket

Trước khi dựng pipeline, cần hai thứ nền: các IAM service role để dịch vụ AWS được phép làm việc thay bạn, và một bucket S3 chứa artifact. Bài này mổ cơ chế service role và trust policy — vì sao một dịch vụ assume role để có quyền tạm thời thay vì lưu khóa — rồi tạo role cho CodeBuild và bucket artifact (bật versioning) bằng AWS CLI.

Kai··5 min read·AWSCI/CD
3

CodeCommit: Nguồn Code Cho Pipeline

Dựng chặng source: tạo repo CodeCommit, kết nối Git bằng git-remote-codecommit (dùng credential AWS, không cần lưu mật khẩu Git riêng), đẩy một ứng dụng mẫu lên, rồi đi qua luồng branch và pull request bằng AWS CLI. Đây là nơi code sống và là điểm khởi đầu cho mọi lần chạy pipeline ở các bài sau.

Kai··5 min read·AWSCI/CD
4

CodeBuild: Project, buildspec.yml và Lần Build Đầu Tiên

Dựng chặng build: tạo một CodeBuild project nối tới repo CodeCommit, viết buildspec.yml định nghĩa các phase build, chạy build thật rồi đọc log CloudWatch để thấy từng phase chạy ra sao. Mổ cơ chế CodeBuild dựng một container tạm, chạy buildspec theo thứ tự phase, đẩy artifact lên S3 và log lên CloudWatch.

Kai··5 min read·AWSCI/CD
5

CodeBuild Nâng Cao: Biến Môi Trường, Secret và Cache

Build thật cần config và secret: URL API, khóa, mật khẩu database. Bài này truyền chúng vào CodeBuild đúng cách — biến thường khai trực tiếp, còn giá trị nhạy cảm lấy từ SSM Parameter Store và Secrets Manager, được CodeBuild tự che trong log. Kèm bật cache để build nhanh hơn. Tất cả test thật và xem log.

Kai··4 min read·AWSCI/CD
6

CodeBuild Test Report: Build Không Chỉ Chạy Mà Phải Đúng

Một build thành công không có nghĩa code đúng — nó chỉ nghĩa các lệnh chạy không lỗi. Bài này cho CodeBuild chạy test thật (pytest) và gom kết quả thành test report xem được: tổng số test, đạt/trượt, từng case. Và vì sao nên để test trượt làm build trượt, chặn code hỏng trước khi tới deploy.

Kai··5 min read·AWSCI/CD
7

CodeArtifact: Kho Package Nội Bộ Cho Build

Build thật phụ thuộc hàng loạt package từ Internet — rủi ro khi nguồn ngoài đổi hoặc biến mất. CodeArtifact là kho package được quản lý: vừa làm proxy cache cho PyPI/npm public, vừa lưu package riêng của bạn. Bài này tạo domain và repository, publish một package Python rồi cài lại từ CodeArtifact, và nối nó vào CodeBuild.

Kai··4 min read·DevOpsAWS
8

CodeDeploy: Deploy In-Place Đầu Tiên Lên EC2

Mở Part IV: đưa artifact lên EC2 bằng CodeDeploy. Dựng một instance có agent, tạo application và deployment group nhắm theo tag, viết appspec.yml với các hook vòng đời, rồi chạy lần deploy in-place đầu tiên — xem agent kéo revision từ S3 và chạy qua từng lifecycle event tới khi app phục vụ thật.

Kai··6 min read·AWSCI/CD
9

CodeDeploy Lifecycle Hooks: Thứ Tự, Biến, và Khi Hook Fail

Mổ sâu phần hook của CodeDeploy: chuỗi lifecycle event chạy theo thứ tự nào, hook nào hợp việc gì, vì sao ApplicationStop chạy từ revision cũ chứ không phải mới, những biến môi trường CodeDeploy truyền vào script, và chuyện gì xảy ra khi một hook fail — deploy dừng đúng ở đó, các event sau không chạy.

Kai··5 min read·AWSCI/CD
10

Deploy Lên Auto Scaling Group và Deployment Config

Từ một instance lên nhiều: deploy lên Auto Scaling Group. Tạo launch template và ASG, gắn deployment group vào ASG, rồi chọn deployment config (OneAtATime, HalfAtATime, AllAtOnce) để điều khiển deploy lần lượt hay đồng loạt. Và cơ chế quan trọng: CodeDeploy tự deploy bản mới nhất lên instance mà ASG khởi thêm về sau.

Kai··5 min read·AWSCI/CD
11

Blue/Green Deploy Với ALB và Rollback Tự Động

Deploy in-place có một khoảng máy offline. Blue/green tránh điều đó: dựng một fleet mới (green) song song, kiểm tra, rồi chuyển traffic qua bằng load balancer — blue vẫn còn nguyên để quay về tức thì. Bài này dựng ALB, đổi deployment group sang blue/green, chạy thật (kèm một lỗi IAM rất thực tế), và cấu hình rollback tự động theo CloudWatch alarm.

Kai··6 min read·AWSCI/CD
12

CodePipeline: Nối Source, Build, Deploy Thành Dây Chuyền

Tới giờ mỗi chặng chạy bằng tay. CodePipeline nối chúng thành một dây chuyền tự động: Source kéo code từ CodeCommit, Build gọi CodeBuild, Deploy gọi CodeDeploy — artifact chảy từ stage này sang stage kia. Bài này dựng pipeline đầu tiên, chạy thật, và mổ cách artifact truyền giữa các stage.

Kai··5 min read·DevOpsAWS