Hướng dẫn AWS CodePipeline

  • October 3, 2022
  • 881

AWS CodePipeline là gì

AWS CodePipeline là một dịch vụ sử dụng để phân phối liên tục (CD) giúp tự động hóa việc build, test, triển khai ứng dụng mỗi khi code có sự thay đổi, chúng ta có thể tích hợp với các source control hay dùng như: github, bitbucket ...

AWS CodePipeline workflow

CodePipeline sẽ làm việc theo flow sau:

  1. Developer làm task, đẩy code lên github.
  2. CodeBuild thấy có sự thay đổi source code tiến hành Build Source Code
  3. Khi CodeBuild thành công, tự động Deploy lên môi trường thực thi.

Create CodePipeline

Chúng ta đã Deploy Laravel project to AWS ECS Fargate bằng cách build thủ công. Hôm nay chúng ta sẽ sử dụng CodePipeline tự động deploy dự án laravel lên ECS fargate. Tạo codePipeline
create aws codePipeline
Chọn source control, mình chọn github version 2, connect với tài khoản github và chọn repo dự án bạn muốn deploy
add source control
Add repo
Chọn stage build, aws hỗ trợ 2 loại build là jenkin và codeBuild. Bài viết này mình chọn codeBuild để build và push code lên AWS ECR. Các bước thiết lập codeBuild bạn xem lại bài viết: Hướng dẫn AWS CodeBuild, build image tự động cho ECR.
Add codebuild in code pipeline
Tiếp theo chúng ta thiết lập deploy stage. Trong bài viết này chúng ta deploy code laravel lên ECS lên mình chọn deploy provider là amazon ECS, thiết lập các thông số của ecs: cluster, service, Image definitions file là artifacts file tạo ra ở bước build code với CodeBuild imagedefinitions.json.
add stage deploy codePipeline
Tiếp theo chúng ta sẽ review lại các tạo CodePipeline rồi nhấn nút tạo codepipeline thế là xong.

Add Multi stage deploy

Mặc định khi tạo codePipeline chúng ta chỉ tạo được 1 stage deploy ứng với 1 file artifacts, muốn tạo thêm stage deploy chúng ta cần tạo codePipeline xong. Sau đó edit và thêm stage deploy. Ví dụ bạn muốn deploy thêm 1 task definition chạy batch.
add multi stage deploy
Thêm 1 stage deploy
Add deploy batch

Check CodePipeline

Giờ là lúc kiểm tra xem CodePipeline có hoạt đông không nhé? chúng ta sẽ merge code vào nhánh master, khi code được merge CodePipeline sẽ nhận được trigger tự động lấy code từ master, build code với codeBuild và deploy lên ECS.
codePipeline get source code
codePipeline build success
CodePipeline deploy success
Như vậy là chúng ta đã build và deploy thành công dự án lên ECS. Kiểm tra CodeBuild và ECS.
Codebuild success

Ecs run success
Như vậy là toàn bộ quá trình deploy đã thành công và thành quả của chúng ta là.
CodePipeline deploy success

Kết Luận

Chúng ta đã thiết lập xong tự động deploy code lên AWS ECS mỗi khi code master thay đổi, sử dụng CodePipeline. Chúc các bạn deploy thành công. Thanks for reading...