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ển

Kê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.

(nhấp để thu phóng)


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.

(nhấp để thu phóng)

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

 

  • GitHub

    a. Nếu bạn muốn sử dụng tài khoản GitHub:

    (nhấp để thu phóng)

  • Amazon S3

    a. Nếu định dùng Amazon S3 làm nguồn, thì bạn sẽ truy xuất mã mẫu từ kho AWS GitHub, lưu vào máy tính và tải mã lên vùng lưu trữ Amazon S3.

    (nhấp để thu phóng)


    b. Lưu tệp nguồn vào máy tính của bạn:

    • Nhấp vào tệp có tên aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • Nhấp vào Xem bản thô.
    • Lưu tệp mẫu vào máy tính cục bộ của bạn.

    (nhấp để thu phóng)


    c. Nhấp vào đây để mở bảng điều khiển Amazon S3 và tạo vùng lưu trữ Amazon S3 của bạn:

    • Nhấp vào Tạo vùng lưu trữ
    • Tên vùng lưu trữ: nhập tên duy nhất cho vùng lưu trữ của bạn, như: awscodepipeline-demobucket-variables.  Tất cả các tên vùng lưu trữ trong Amazon S3 phải là duy nhất, vì thế, hãy sử dụng tên của riêng bạn chứ không phải tên được minh họa trong ví dụ.
    • Khu vực: Trong phần thả xuống, chọn khu vực nơi bạn muốn tạo kênh dẫn, như Tiêu chuẩn Hoa Kỳ
    • Nhấp vào Tạo.

    (nhấp để thu phóng)


    d. Bảng điều khiển hiển thị vùng lưu trữ mới tạo, còn trống.

    • Nhấp vào Thuộc tính.
    • Mở rộng phần Lập phiên bản và chọn Kích hoạt lập phiên bản. Khi lập phiên bản được kích hoạt, Amazon S3 sẽ lưu mọi phiên bản của mọi đối tượng trong vùng lưu trữ.

    (nhấp để thu phóng)


    e. Giờ bạn sẽ tải mã mẫu lên vùng lưu trữ Amazon S3: 

    • Nhấp vào Tải lên.
    • Làm theo các hướng dẫn trên màn hình để tải lên tệp .zip có chứa mã mẫu mà bạn đã tải xuống từ GitHub.

    (nhấp để thu phóng)

  • AWS CodeCommit

    a. Nếu định dùng AWS CodeCommit làm nguồn, thì bạn sẽ truy xuất mã mẫu từ kho AWS GitHub, lưu vào máy tính và tải mã lên kho AWS CodeCommit.

    (nhấp để thu phóng)


    b. Lưu tệp nguồn vào máy tính của bạn:

    • Chọn tệp có tên aws-codepipeline-s3-aws-codedeploy_linux.zip. 
    • Chọn Xem bản thô.
    • Lưu tệp mẫu vào máy tính cục bộ của bạn.

    (nhấp để thu phóng)


    (nhấp để thu phóng)


    e. Trên trang Tạo kho mới:

    • Tên kho: nhập PipelineRepo.
    • Chọn Tạo kho.

    (nhấp để thu phóng)


    f. Kết nối với kho của bạn, rồi đẩy một bản sao tệp mẫu vào đó.  Để biết hướng dẫn, hãy xem Kết nối với kho AWS CodeCommit.

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

(nhấp để thu phóng)


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 đó.

(nhấp để thu phóng)


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:

  • GitHub

    Đơn vị cung cấp nguồn: GitHub

    • Trong phần Kết nối với GitHub, nhấp vào Kết nối với GitHub.
    • Một cửa sổ trình duyệt mới sẽ mở ra để kết nối bạn với GitHub. Nếu bạn được nhắc đăng nhập, hãy cung cấp thông tin xác thực GitHub của bạn. 
    • Bạn sẽ được yêu cầu ủy quyền truy cập ứng dụng cho tài khoản của bạn. Chọn Ủy quyền ứng dụng.

    (nhấp để thu phóng)


    Chỉ định kho và nhánh:

    • Kho: Trong danh sách thả xuống, chọn kho GitHub mà bạn muốn dùng làm vị trí nguồn cho kênh dẫn. Nhấp vào kho được phân tách trong tài khoản GitHub của bạn có chứa mã mẫu, gọi là aws-codepipeline-s3-aws-codedeploy_linux
    • Nhánh: Trong danh sách thả xuống, chọn nhánh mà bạn muốn dùng: chính.
    • Nhấp vào Bước tiếp theo.

    (nhấp để thu phóng)

  • Amazon S3

    Đơn vị cung cấp nguồn: Amazon S3.

    • Vị trí Amazon S3: Nhập tên của vùng lưu trữ Amazon S3 mà bạn đã tạo, sau đó là tệp mẫu bạn sao chép vào vùng lưu trữ đó (aws-codepipeline-s3-aws-codedeploy_linux.zip). Chẳng hạn, nếu bạn đặt tên vùng lưu trữ là awscodepipeline-demobucket-variable, thì bạn sẽ nhập: s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Nhấp vào Bước tiếp theo.

    (nhấp để thu phóng)

  • AWS CodeCommit

    Đơn vị cung cấp nguồn: AWS CodeCommit.

    • Tên kho: Chọn tên kho AWS CodeCommit của bạn. 
    • Tên nhánh: Chọn tên nhánh có chứa tệp mẫu.
    • Nhấp vào Bước tiếp theo.

    (nhấp để thu phóng)


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.

 

(nhấp để thu phóng)


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.

(nhấp để thu phóng)


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

(nhấp để thu phóng)

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

(nhấp để thu phóng)


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.

(nhấp để thu phóng)


c. Trong khu vực trạng thái của giai đoạn Beta, nhấp vào AWS Elastic Beanstalk

(nhấp để thu phóng)


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

(nhấp để thu phóng)


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.

(nhấp để thu phóng)

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

  • GitHub

    a. Truy cập bản sao kho mà bạn đã phân tách trong GitHub.

    • Mở index.html
    • Chọn biểu tượng Chỉnh sửa.

    (nhấp để thu phóng)


    b. Cập nhật trang web bằng cách sao chép và dán đoạn văn bản sau vào dòng 30: 

    Bạn vừa tạo thành công kênh dẫn truy xuất ứng dụng nguồn này từ GitHub và triển khai đến một phiên bản Amazon EC2 bằng AWS Elastic Beanstalk. 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!

    (nhấp để thu phóng)


    c. Xác nhận thay đổi ở kho của bạn.

    (nhấp để thu phóng)

  • Amazon S3

    a. Trên máy tính, truy cập tệp zip bạn đã tải xuống, có tên aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Chỉnh sửa mã ứng dụng web mẫu:

    • Bung index.html từ tệp zip và mở bằng trình chỉnh sửa văn bản ưa thích của bạn. 
    • Cập nhật nội dung phần đầu sau chữ "Xin chúc mừng!" thành:

    "Bạn vừa tạo thành công kênh dẫn truy xuất ứng dụng nguồn này từ Amazon S3 và triển khai đến một phiên bản Amazon EC2 bằng AWS Elastic Beanstalk. 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!"

    • Sao chép tệp index.html vừa cập nhật trở lại aws-codepipeline-s3-aws-codedeploy_linux.zip và thay thế phiên bản index.html cũ.

    (nhấp để thu phóng)


    c. Tải lên lại tệp đã chỉnh sửa vào vùng lưu trữ Amazon S3 của bạn:

    • Quay lại vùng lưu trữ S3 bạn đã tạo lúc trước. 
    • Tải tệp aws-codepipeline-s3-aws-codedeploy_linux.zip đã cập nhật lên vùng lưu trữ. 

    Lưu ý: Vì bạn đã bật lập phiên bản khi tạo vùng lưu trữ S3, nên S3 sẽ lưu một bản sao cho mọi phiên bản tệp của bạn.

    (nhấp để thu phóng)

  • AWS CodeCommit

    a. Truy cập tệp zip chứa mã mẫu mà bạn đã tải xuống, có tên aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Chỉnh sửa mã ứng dụng web mẫu:
     
    • Bung index.html từ tệp zip và mở bằng trình chỉnh sửa văn bản ưa thích của bạn. 
    • Sau đó, cập nhật nội dung phần đầu sau chữ "Xin chúc mừng!" thành:

    Bạn vừa tạo thành công kênh dẫn truy xuất ứng dụng nguồn này từ AWS CodeCommit và triển khai đến một phiên bản Amazon EC2 bằng AWS Elastic Beanstalk. 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!

    (nhấp để thu phóng)


    c. Xác nhận và đẩy tệp zip đã cập nhật đến kho CodeCommit của bạn.


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.

(nhấp để thu phóng)


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.

(nhấp để thu phóng)


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!

 

(nhấp để thu phóng)

Để 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.

(nhấp để thu phóng)


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.

(nhấp để thu phóng)

  • Amazon S3

    c. Nếu bạn đã tạo vùng lưu trữ S3 cho phần hướng dẫn này, hãy xóa vùng lưu trữ bạn tạo:

    • Truy cập bảng điều khiển S3. 
    • Nhấp chuột phải vào tên vùng lưu trữ và chọn Xóa vùng lưu trữ
    • Khi thông báo xác nhận xuất hiện, hãy nhập tên vùng lưu trữ, rồi nhấp vào Xóa.

    (nhấp để thu phóng)

  • AWS CodeCommit

    c. Nếu bạn tạo kho AWS CodeCommit cho phần hướng dẫn này, hãy truy cập bảng điều khiển CodeCommit và xóa kho đã tạo:

    (nhấp để thu phóng)


    c. Trong ngăn điều hướng, chọn Cài đặt.

    • Nhấp vào Xóa kho.
    • Cửa sổ xác nhận sẽ bật ra. Nhập tên kho của bạn và nhấp vào Xóa.

    (nhấp để thu phó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.