bằng AWS CodePipeline
Trong phần hướng dẫn này, bạn sẽ tìm hiểu cách tạo kênh dẫn phát hành phần mềm tự động, có thể triển khai ứng dụng mẫu trực tiếp. Bạn sẽ tạo kênh dẫn bằng AWS CodePipeline, dịch vụ có chức năng dựng, chạy thử và triển khai mã của bạn mỗi khi mã thay đổi. Bạn sẽ sử dụng tài khoản GitHub, vùng lưu trữ Amazon Simple Storage Service (S3) hoặc kho AWS CodeCommit làm vị trí nguồn cho mã của ứng dụng mẫu. Bạn cũng sẽ sử dụng AWS Elastic Beanstalk làm đích triển khai cho chính ứng dụng đó. Kênh dẫn đã hoàn thành của bạn sẽ có thể phát hiện các thay đổi đối với kho nguồn có chứa ứng dụng mẫu, rồi tự động cập nhật ứng dụng mẫu trực tiếp của bạn.
Việc triển khai liên tục cho phép bạn tự động triển khai các bản sửa cho môi trường sản xuất mà không cần sự phê duyệt rõ ràng của nhà phát triển, giúp tự động hóa toàn bộ quy trình phát hành phần mềm.
Mọi thứ trong phần hướng dẫn này đều thực hiện được ở bậc miễn phí.
Quản lý tài nguyên AWS của bạn
Đăng nhập vào Bảng điều khiểnKênh dẫn triển khai liên tục của bạn sẽ cần một môi trường đích có chứa máy chủ ảo, hay phiên bản Amazon EC2, để triển khai mã mẫu. Bạn sẽ chuẩn bị môi trường này trước khi tạo kênh dẫn.
a. Để rút gọn quá trình thiết lập và cấu hình các phiên bản EC2 cho phần hướng dẫn này, bạn sẽ thiết lập một môi trường mẫu bằng AWS Elastic Beanstalk. Elastic Beanstalk giúp bạn dễ dàng lưu trữ các ứng dụng web mà không cần tự mình khởi chạy, cấu hình hay vận hành máy chủ ảo. Dịch vụ này tự động cung cấp và vận hành cơ sở hạ tầng (ví dụ: máy chủ ảo, cân bằng tải, v.v.) và cung cấp stack ứng dụng (ví dụ: hệ điều hành, ngôn ngữ và framework, máy chủ web và ứng dụng, v.v.) cho bạn.
b. Chọn PHP trong menu thả xuống, rồi nhấp vào Khởi chạy ngay.
Lưu ý: Nếu bạn đã từng tạo ứng dụng Elastic Beanstalk trước đây, hãy nhấp vào Tạo ứng dụng mới ở góc trên bên phải. Đặt tên cho ứng dụng của bạn và tạo môi trường máy chủ web mới. Chọn PHP làm nền tảng và Một phiên bản làm loại môi trường của bạn. Nếu bạn định đăng nhập từ xa vào các phiên bản, hãy chọn cặp khóa. Nếu không, hãy để các giá trị mặc định cho các tùy chọn còn lại và tạo môi trường cho kênh dẫn triển khai liên tục của bạn.
c. Elastic Beanstalk sẽ bắt đầu tạo môi trường mẫu nơi bạn triển khai ứng dụng. Dịch vụ này sẽ tạo một phiên bản Amazon EC2, một nhóm bảo mật, một Auto Scaling group, một vùng lưu trữ Amazon S3, các cảnh báo Amazon CloudWatch và một tên miền cho ứng dụng của bạn.
Lưu ý: Quá trình này sẽ mất vài phút để hoàn thành.
Ở bước này, bạn sẽ truy xuất một bản sao mã của ứng dụng mẫu và chọn nguồn lưu trữ mã. Kênh dẫn lấy mã từ nguồn, rồi thực hiện các hành động trên đó.
Bạn có thể sử dụng một trong ba tùy chọn sau làm nguồn: kho GitHub, vùng lưu trữ Amazon S3 hoặc kho AWS CodeCommit. Lựa chọn mục bạn ưa thích và làm theo các bước dưới đây:
Ở bước này, bạn sẽ tạo và cấu hình một kênh dẫn đơn giản có hai hành động: nguồn và triển khai. Bạn sẽ cung cấp cho CodePipeline các vị trí kho nguồn và môi trường triển khai.
a. Nhấp vào đây để mở bảng điều khiển AWS CodePipeline.
- Trên trang Chào mừng, nhấp vào Tạo kênh dẫn.
- Nếu đây là lần đầu tiên bạn sử dụng AWS CodePipeline, thì trang giới thiệu sẽ xuất hiện thay cho trang Chào mừng. Nhấp vào Bắt đầu.
b. Trên trang Bước 1: Tên:
- Tên kênh dẫn: nhập tên kênh dẫn của bạn, DemoPipeline.
- Nhấp vào Bước tiếp theo.
Lưu ý: Sau khi tạo kênh dẫn, bạn sẽ không thể đổi tên kênh đó.
c. Trên trang Bước 2: Nguồn, chọn vị trí của nguồn bạn đã chọn và làm theo các bước bên dưới:
d. Một kênh dẫn triển khai liên tục thực sự đòi hỏi có một giai đoạn xây dựng để tổng hợp mã và kiểm thử đơn vị. CodePipeline cho phép bạn tích hợp đơn vị cung cấp bản dựng được ưu tiên vào kênh dẫn. Tuy nhiên, trong phần hướng dẫn này, bạn sẽ bỏ qua giai đoạn xây dựng.
- Ở trang Bước 3: Xây dựng, chọn Không có bản dựng.
- Nhấp vào Bước tiếp theo.
e. Ở trang Bước 4: Beta:
- Đơn vị cung cấp triển khai: Nhấp vào AWS Elastic Beanstalk.
- Tên ứng dụng: Nhấp vào Ứng dụng Elastic Beanstalk đầu tiên của tôi.
- Tên môi trường: Nhấp vào Môi trường mặc định.
- Nhấp vào Bước tiếp theo.
Lưu ý: Cái tên "Beta" chỉ là cái tên được cung cấp mặc định cho giai đoạn này trong kênh dẫn, cũng như "Nguồn" là cái tên dành cho giai đoạn đầu tiên của kênh dẫn.
f. Ở trang Bước 5: Vai trò dịch vụ:
- Vai trò dịch vụ: Nhấp vào Tạo vai trò.
- Bạn sẽ được chuyển hướng đến một trang bảng điều khiển IAM mô tả vai trò AWS-CodePipeline-Service sẽ được tạo cho bạn. Nhấp vào Cho phép
- Sau khi tạo vai trò, bạn sẽ được đưa trở lại trang Bước 5: Vai trò dịch vụ và AWS-CodePipeline-Service sẽ xuất hiện trong Tên vai trò ở đó. Nhấp vào Bước tiếp theo.
Lưu ý: Việc tạo vai trò dịch vụ chỉ được yêu cầu ở lần đầu tiên bạn tạo kênh dẫn trong AWS CodePipeline. Nếu bạn đã tạo vai trò dịch vụ, thì bạn sẽ có thể chọn mục đó trong danh sách thả xuống vai trò. Vì danh sách thả xuống sẽ hiển thị tất cả các vai trò dịch vụ IAM được liên kết với tài khoản của bạn, nên nếu bạn chọn tên khác với tên mặc định, hãy bảo đảm rằng tên đó có thể được nhận biết là tên vai trò dịch vụ cho AWS CodePipeline.
Ở bước này, bạn sẽ khởi chạy kênh dẫn. Sau khi kênh dẫn được tạo, kênh sẽ tự động bắt đầu chạy. Đầu tiên, kênh sẽ phát hiện mã ứng dụng mẫu ở vị trí nguồn của bạn, đóng gói các tệp, rồi chuyển chúng đến giai đoạn thứ hai mà bạn xác định. Ở giai đoạn này, kênh sẽ chuyển mã đến Elastic Beanstalk, nơi chứa phiên bản EC2 sẽ lưu trữ mã của bạn. Elastic Beanstalk đảm nhiệm việc triển khai mã đến phiên bản EC2.
a. Ở trang Bước 6: Xem xét, hãy xem xét thông tin và nhấp vào Tạo kênh dẫn.
b. Sau khi kênh dẫn của bạn được tạo, trang trạng thái kênh dẫn sẽ xuất hiện và kênh dẫn sẽ tự động bắt đầu chạy. Bạn có thể xem tiến trình cũng như các thông báo thành công và thất bại khi kênh dẫn thực hiện từng hành động.
Để xác minh kênh dẫn của bạn đã chạy thành công, hãy theo dõi tiến trình kênh dẫn chuyển qua từng giai đoạn. Trạng thái của từng giai đoạn sẽ thay đổi từ Chưa thực thi sang Đang thực hiện, rồi đến Thành công hoặc Thất bại. Kênh dẫn sẽ hoàn thành lần chạy đầu tiên trong vòng vài phút.
c. Trong khu vực trạng thái của giai đoạn Beta, nhấp vào AWS Elastic Beanstalk.
d. Bảng điều khiển AWS Elastic Beanstalk mở ra với các thông tin chi tiết về việc triển khai.
- Nhấp vào môi trường bạn đã tạo lúc trước, tên là Môi trường mặc định.
e. Nhấp vào URL hiện ra ở phần phía trên bên phải của trang để xem trang web mẫu mà bạn đã triển khai.
Ở bước này, bạn sẽ sửa đổi mã mẫu và xác nhận thay đổi ở kho của bạn. CodePipeline sẽ phát hiện mã mẫu được cập nhật của bạn, rồi tự động tiến hành triển khai dữ liệu cập nhật đó cho phiên bản EC2 qua Elastic Beanstalk.
Xin lưu ý rằng trang web mẫu bạn đã triển khai tham chiếu đến AWS CodeDeploy, một dịch vụ thực hiện tự động việc triển khai mã. Trong CodePipeline, CodeDeploy là phương án thay thế cho Elastic Beanstalk trong việc thực hiện các hành động triển khai. Ta hãy cập nhật mã mẫu để biểu thị chính xác rằng bạn triển khai mẫu bằng Elastic Beanstalk.
d. Quay lại kênh dẫn của bạn trong bảng điều khiển CodePipeline. Sau vài phút, bạn sẽ thấy Nguồn đổi thành màu xanh dương, biểu thị kênh dẫn đã phát hiện thấy những thay đổi bạn thực hiện đối với kho nguồn. Khi đó, kênh sẽ tự động chuyển mã được cập nhật đến Elastic Beanstalk.
- Sau khi trạng thái kênh dẫn hiển thị Thành công, trong khu vực trạng thái cho giai đoạn Beta, nhấp vào AWS Elastic Beanstalk.
e. Bảng điều khiển AWS Elastic Beanstalk mở ra với các thông tin chi tiết về việc triển khai. Chọn môi trường bạn đã tạo lúc trước, tên là Môi trường mặc định.
f. Nhấp vào URL hiện ra ở phần phía trên bên phải của trang để xem trang web mẫu lần nữa. Nội dung của bạn được cập nhật tự động qua kênh dẫn triển khai liên tục!
Để tránh các khoản phí sau này, bạn sẽ xóa mọi tài nguyên đã khởi chạy trong suốt phần hướng dẫn này, gồm cả kênh dẫn, ứng dụng Elastic Beanstalk và nguồn được thiết lập để lưu trữ mã.
a. Đầu tiên, bạn sẽ xóa kênh dẫn:
- Trong dạng xem kênh dẫn, nhấp vào Chỉnh sửa.
- Nhấp vào Xóa.
- Nhập tên kênh dẫn của bạn và nhấp vào Xóa.
b. Thứ hai, xóa ứng dụng Elastic Beanstalk:
- Truy cập bảng điều khiển Elastic Beanstalk.
- Nhấp vào Hành động.
- Sau đó, nhấp vào Chấm dứt môi trường.
Bạn vừa tạo thành công kênh dẫn phát hành phần mềm tự động bằng AWS CodePipeline! Với CodePipeline, bạn đã tạo một kênh dẫn sử dụng GitHub, Amazon S3 hoặc AWS CodeCommit làm vị trí nguồn cho mã ứng dụng, rồi triển khai mã cho một phiên bản Amazon EC2 được AWS Elastic Beanstalk quản lý. Kênh dẫn sẽ tự động triển khai mã của bạn mỗi khi mã có sự thay đổi. Bạn đã tiến thêm một bước nữa tới mục tiêu thực hiện triển khai liên tục!
Giờ bạn đã biết cách tạo kênh dẫn đơn giản bằng AWS CodePipeline, hãy tìm hiểu thêm bằng cách truy cập các tài nguyên sau đây.
- Tạo kênh dẫn nâng cao hơn, có bốn giai đoạn bằng cách làm theo hướng dẫn này. Kênh dẫn này sử dụng kho GitHub làm nguồn, dùng máy chủ dựng Jenkins để xây dựng và kiểm thử dự án, cũng như dùng ứng dụng AWS CodeDeploy để triển khai mã được dựng cho một máy chủ phân giai đoạn.
- Nhanh chóng thiết lập một kênh dẫn bốn giai đoạn với máy chủ dựng Jenkins bằng Bộ tài liệu hướng dẫn về kênh dẫn cho người mới bắt đầu của chúng tôi.
- Tìm hiểu thêm về phân phối liên tục.