Có 2 nền tảng phổ biến nhất hiện nay để lưu trữ các trang web tĩnh: Netlify và Google App Engine (GAE) Gần đây, Netlify đã trở nên phổ biến vì nó cung cấp trải nghiệm tích hợp với việc xây dựng và triển khai các trang web tĩnh âÃÂàtất cả trong cùng một nền tảng GAE linh hoạt hơn ở chỗ nó cũng hỗ trợ các trang web không tĩnh nhưng nó chắc chắn thiếu mức độ tích hợp mà Netlify cung cấp. Vậy tại sao tôi vẫn sử dụng GAE trong nhiều trường hợp? Câu trả lời rất đơn giản âÃÂàGAE thường xuyên cung cấp các tùy chọn định giá tốt hơn. Đồng thời, nó cho phép có tất cả các tính năng của Netlify và hơn thế nữa bằng cách sử dụng một số công cụ đơn giản (GitHub Actions và Reliza Hub) mà tôi sẽ mô tả trong bài viết này định giá Trước tiên, hãy để tôi đề cập đến các tình huống định giá khi kết hợp Hành động GAE + GitHub có ý nghĩa hơn. Điểm mấu chốt là biên bản xây dựng. Cấp miễn phí của NetlifyâÃÂàchỉ cung cấp 300 phút xây dựng mỗi tháng, số tiền này không nhiều đối với bất kỳ tài khoản nào. Nếu bạn đang sử dụng thứ gì đó như ứng dụng node.js tĩnh và các bản dựng của bạn mất trung bình 2-3 phút, thì bạn chỉ nhận được khoảng hơn 100 bản dựng mỗi tháng trên Netlify, điều này có thể dễ dàng là không đủ. Đặc biệt nếu bạn có nhiều hơn một trang web Nếu bạn cần thêm số phút xây dựng trên Netlify âÃÂàtrả $7 cho mỗi 500 phút bổ sung hoặc chuyển sang bậc tiếp theo bao gồm 1000 phút nhưng có giá $45/tháng. Mặt khác, trên GitHub Actions, bạn nhận được 2000 phút xây dựng miễn phí cho các kho lưu trữ riêng tư và số phút xây dựng không giới hạn cho các kho lưu trữ công cộng. Giả sử bạn đang xây dựng một trang web tài liệu và quyết định đặt nó ở chế độ công khai trên GitHub âÃÂàbạn nhận được số phút xây dựng không giới hạn trên GitHub Actions âÃÂàvà điều đó khiến một sự khác biệt rất lớn Xem xét tiếp theo là chi phí giao thông. Netlify cung cấp đầu ra băng thông 100 GB mỗi tháng bao gồm trong bậc miễn phí, rất hào phóng. Google cung cấp 1GB đầu ra miễn phí mỗi ngày, tức là khoảng 30GB mỗi tháng. Vì vậy, nếu đầu ra của bạn nằm trong khoảng từ 30 GB đến 100 GB, bạn có thể nhận được ưu đãi tốt hơn trên Netlify. Tuy nhiên, khi bạn vượt quá 100GB, Netlify sẽ ngay lập tức tính phí bạn 20 đô la cho 100GB tiếp theo trong tháng đó. Google có chính sách giá cho mỗi GB đầu ra có giá 0,12 đô la. Có nghĩa là bạn trả $12/100GB âÃÂàso với $20/100GB trên Netlify Vì vậy, tùy thuộc vào lưu lượng truy cập, bạn có thể sử dụng Netlify hoặc GAE tốt hơn từ triển vọng đầu ra. Nhưng trong nhiều trường hợp, GAE cũng sẽ cung cấp giá trị tốt hơn ở đây Lời cuối cùng về giá âÃÂànếu bạn đang sử dụng thứ gì đó như GitHub Actions hoặc CircleCI cho bản dựng của mình, bạn vẫn có thể triển khai trên Netlify âÃÂàGitHub Actions hệ thống linh hoạt hơn Định cấu hình Dự án Google App Engine Chúng tôi bắt đầu bằng cách truy cập httpsconsole.cloud.google.com/appengine và tạo một dự án mới. Nếu bạn đã có âÃÂàtrước tiên hãy nhấp vào tên dự án của bạn ở trên cùng rồi nhấp vào **DỰ ÁN MỚI** Nhập tên dự án, lưu ý ở đây ID dự án mà bạn đang nhận (bạn sẽ cần nó sau này) ࢠÃÂàtrong trường hợp của tôi thì đó là *âÃÂÃÂevie-landing-tutorialâÃÂÃÂ* âÃÂàvà nhấp **CREATE Sau đó chuyển sang dự án này từ bộ chọn dự án trên đầu trang Bấm vào **Tạo ứng dụng** và chọn khu vực bạn muốn. Sau đó, đối với ứng dụng tĩnh, hãy chọn Python và Môi trường tiêu chuẩn (bậc miễn phí chỉ áp dụng cho môi trường Tiêu chuẩn). Tại thời điểm này, ứng dụng của bạn đã sẵn sàng cho các bước tiếp theo Để trỏ tên miền của bạn đến ứng dụng này, hãy điều hướng đến httpsconsole.cloud.google.com/appengine/settings/domains và bấm **Thêm miền tùy chỉnh Làm theo hướng dẫn và trỏ DNS từ miền của bạn tới các bản ghi do Google cung cấp. Khi điều này được thực hiện, Google sẽ tự động trỏ tên miền của bạn đến ứng dụng này và cũng quản lý chứng chỉ SSL Cuối cùng, chúng ta cần chuẩn bị tài khoản dịch vụ chịu trách nhiệm triển khai tự động. Điều hướng đến httpsconsole.cloud.google.com/iam-admin/serviceaccounts?project=your_project_id (thay thế *your_project_id *trong liên kết này có id dự án thực tế của bạn, trong trường hợp của tôi, đây sẽ là *evie-landing-tutorial Bạn sẽ đến trang menu sau: Nhấp vào biểu tượng dấu 3 chấm trong cột Hành động gần tài khoản dịch vụ mặc định của App Engine. Và chọn Tùy chọn **Tạo khóa** từ trình đơn thả xuống Chọn JSON làm loại Khóa của bạn và nhấp vào **CREATE Thao tác này sẽ tải tệp .json xuống máy của bạn. Điều cuối cùng chúng ta cần làm ở đây là mã hóa tệp này ở định dạng base64 à¢ÃÂàchúng ta sẽ cần điều này sau khi chuyển sang GitHub Actions Điều này có thể được thực hiện bằng cách sử dụng dòng lệnh như sau: base64 your_json_file.json >key.base64 Sau đó, tệp key.base64 sẽ có khóa được mã hóa base64 **Lưu ý bảo mật ở đây, các tệp khóa json và base64 này cho phép kiểm soát dự án GAE của bạn, do đó, sau khi bạn thêm chúng vào Tác vụ GitHub (như IâÃÂàsẽ hiển thị bên dưới), bạn nên cắt nhỏ xóa các tập tin này. Điều này có thể được thực hiện từ cli như sau: cắt nhỏ key_file_name&& rm key_file_name Sau khi lấy được khóa, chúng tôi cần bật API Google App Engine âÃÂàđể thực hiện việc này, hãy truy cập trang httpsconsole.developers.google.com/apis/api/appengine .googleapis.com/overview và nhấp vào **CHO PHÉP** Thiết lập kho lưu trữ GitHub và hành động GitHub Cuối cùng, đã đến lúc chuẩn bị Kho lưu trữ GitHub của chúng tôi. Hướng dẫn này bao gồm thiết lập chủ đề Evie bằng Undraw. (Đây là chủ đề tôi hiện đang sử dụng cho trang đích Reliza Hub!) Chủ đề Evie ban đầu được lưu trữ tại đây, nhưng tôi sẽ sử dụng ngã ba của RelizaâÃÂÃÂs trong kho lưu trữ này Như tôi đã đề cập trong các bài viết khác, triết lý xây dựng của tôi hiện nay là cập bến mọi thứ và sử dụng docker build như một môi trường xây dựng CI hợp nhất trên nhiều nền tảng. Do đó, tôi đã thêm Dockerfile, cấu hình nginx và cũng cập nhật các phiên bản npm so với chủ đề Evie ban đầu để có bản dựng dockerized hoạt động Bây giờ nếu chúng ta làm lệnh xây dựng docker trên nội dung kho lưu trữ Evie của RelizaâÃÂÃÂs, nó sẽ xây dựng một hình ảnh dựa trên nginx phục vụ chủ đề Evie mà không cần tài liệu trên cổng 80 Bây giờ là lúc để chuẩn bị tập lệnh GitHub Actions. Chúng tôi sẽ sử dụng hành động actions-hub/gcloud@master để làm cho toàn bộ quá trình trở nên đơn giản Chúng tôi bắt đầu bằng cách đặt 2 bí mật Hành động GitHub cần thiết cho hành động. Điều hướng đến Cài đặt ->Bí mật bên trong kho lưu trữ GitHub của bạn và nhấp vào **Bí mật mới** để đặt 2 bí mật sau: - GCLOUD_PROJECT_ID âÃÂàđặt nó thành id dự án được lưu ý khi bạn tạo dự án của mình: evie-landing-tutorial trong trường hợp của tôi - GOOGLE_APPLICATION_CREDENTIALS âÃÂàđặt nó thành nội dung của tệp khóa json được mã hóa base64 thu được cho tài khoản dịch vụ google ở ​​trên Bây giờ trong kho lưu trữ, tôi tạo thư mục .github và sau đó là thư mục luồng công việc bên trong nó. Và bên trong nó, tôi tạo gae_build.yml. Ngoài ra, chúng tôi cần thêm tệp app.yaml chứa cấu hình GAE và sẽ rất đơn giản đối với trường hợp sử dụng ứng dụng tĩnh mà tôi có Sau khi bạn và đẩy mã này, nó sẽ kích hoạt bản dựng GitHub Actions, sẽ triển khai ứng dụng GAE của bạn âÃÂàvà các dịch vụ của bạn sẽ hoạt động! Mỗi lần đẩy tiếp theo tới GitHub sẽ tự động kích hoạt bản dựng GitHub Actions mới và tự động cập nhật ứng dụng trên GAE Bây giờ bạn đã có hệ thống CICD cơ bản cho trang web tĩnh của mình! Bạn có thể dừng tại đây hoặc bạn có thể tiếp tục đọc cách bạn có thể thêm chức năng hiển thị phê duyệt và triển khai bằng Reliza Hub THƯỞNG: Thêm phê duyệt và khả năng hiển thị bằng cách sử dụng Reliza Hub Giả sử rằng chúng tôi không muốn mọi bản dựng mới tự động đi vào sản xuất. Thay vào đó, chúng tôi muốn chúng được triển khai trước tiên ở đâu đó không phải sản xuất và sau đó nếu chúng tôi thích chúng âÃÂàbạn hoặc người phê duyệt của bạn (chẳng hạn như Giám đốc tiếp thị của bạn) cần nhấp vào một nút và đẩy mạnh sản xuất Đây là cách có thể đạt được điều này với Reliza Hub trên cấu hình mà tôi đã mô tả cho đến nay 1 âÃÂàTruyền trực tuyến siêu dữ liệu bản phát hành tới Reliza Hub Đầu tiên, điều hướng đến httpsapp.relizahub.com, xác thực với GitHub và tạo tổ chức của bạn, trong trường hợp của tôi, tôi sẽ sử dụng *âÃÂÃÂEvie Landing TutorialâÃÂÃÂ* làm tên tổ chức. Nhấp vào mục menu **VCS** và sau đó nhấp vào biểu tượng dấu cộng để thêm Kho lưu trữ VCS Dán URI kho lưu trữ GitHub của bạn vào đầu vào và Reliza Hub sẽ tự động phân tích nó Nhấp chuột ** Gửi và điều này sẽ tạo kho lưu trữ của bạn. Tiếp tục với menu Dự án và nhấp vào biểu tượng dấu cộng để tạo dự án. Nhập tên dự án của bạn (Tôi sẽ sử dụng lược đồ phiên bản *Evie Landing Set thành Thành phần Đơn (Chính) âÃÂàđó là vì GAE đang sử dụng phiên bản riêng của nó bao gồm một thành phần âà Âàmà chúng tôi sẽ sử dụng bên trong Reliza Hub. Chọn kho lưu trữ VCS là kho lưu trữ bạn vừa tạo ở bước trước Và bấm vào ** Gửi Điều này sẽ tạo dự án mới. Sau đó nhấp vào tên dự án mới được tạo này và nhấp vào biểu tượng khóa để tạo khóa api của dự án Khi bạn thấy ID API và Khóa API được tạo cho dự án của mình, hãy tạo 2 bí mật mới trong Hành động GitHub âÃÂàRELIZA_API_PROJECT_ID và RELIZA_API_PROJECT_KEY với các giá trị tương ứng Bây giờ, đã đến lúc cập nhật tập lệnh gae_build.yml của chúng tôi để truyền phát chi tiết bản dựng tới Reliza và cũng chuyển sang chế độ không quảng cáo. Điều này có nghĩa là trên mỗi git push, một triển khai sẽ được tạo trên GAE, nhưng Google sẽ không chuyển lưu lượng truy cập sang triển khai mới này cho đến một số bước thủ công sau đó Tập lệnh được cập nhật bao gồm báo cáo theo dõi thời gian xây dựng cho Reliza Hub và cũng sẽ có URI của từng triển khai không được quảng cáo trên GAE. Bạn có thể tìm thấy mô tả về các loại cờ khác nhau mà chúng tôi sử dụng trong kho GitHub của Reliza Go Client Sau khi Tác vụ GitHub chạy khi đẩy hoàn tất, bạn có thể điều hướng đến trang phát hành của mình trong Reliza Hub và xem ảnh sau: Lưu ý rằng nhấp vào Liên kết **Điểm cuối thử nghiệm** sẽ đưa bạn đến phiên bản triển khai thực tế trên GAE tương ứng với mục nhập mã nguồn này âÃÂànhưng chưa được quảng bá để phục vụ lưu lượng truy cập Bạn cũng có thể thêm tích hợp chậm theo hướng dẫn tại đây để nhận thông báo về mọi bản phát hành mới trên Reliza Hub 2 âÃÂàThêm phê duyệt Truy cập trang Cài đặt của Reliza Hub và ở cuối trang, định cấu hình ma trận phê duyệt của bạn cho môi trường SẢN XUẤT. Trong trường hợp của tôi, tôi sẽ chỉ yêu cầu sự chấp thuận từ MARKETING để một bản phát hành được đưa vào sản xuất. Như sau: Bấm vào **Lưu ma trận** Tiếp theo, tôi cài đặt ứng dụng Reliza GitHub âÃÂàhttpsgithub.com/apps/reliza-hub âÃÂàvà làm theo hướng dẫn IâàÃÂve đã viết trước đó để đăng ký nó cho dự án Cuối cùng, Ia quy trình làm việc GitHub Actions mới sẽ được kích hoạt khi có sự chấp thuận từ Reliza Hub âÃÂàbạn có thể xem tại đây. Về cơ bản, quy trình công việc này truy vấn Reliza Hub cho phiên bản được phê duyệt sản xuất gần đây nhất và sau đó yêu cầu Google App Engine chuyển lưu lượng truy cập sang phiên bản đó Điều duy nhất yêu cầu cấu hình trong tập lệnh này là biến môi trường RELIZA_PROJECT_ID âÃÂàcần được đặt thành UUID dự án thu được trên trang dự án trong Reliza Hub: Giờ đây, bản phát hành dự án mới nhất với sự chấp thuận từ MARKETING sẽ tự động được thăng hạng trên Google App EngineĐể biết chi tiết về cách bạn có thể thêm người phê duyệt vào tổ chức, hãy xem video hướng dẫn của tôi về phê duyệt3 âÃÂàThêm khả năng hiển thị cho những gì được triển khai khiCuối cùng, chúng tôi muốn thêm khả năng hiển thị trên Reliza Hub về bản phát hành nào thực sự được triển khai và khi nàoĐể làm như vậy, trước tiên hãy chuyển đến Phiên bản trong Reliza Hub và nhấp vào biểu tượng dấu cộng để tạo bản mới ví dụSau đó, tôi nhập URI của phiên bản của mình và chọn môi trường là SẢN XUẤT âÃÂàvì tôi chỉ có môi trường sản xuất trên trang web tĩnh này.Nhấp vào**Gửi** tạo phiên bản mới của tôiTiếp theo, tôi chọn phiên bản mới tạo này và nhấp vào biểu tượng khóa để tạo khóa api của nóKhi API ID và API Key được tạo, hãy tạo 2 bí mật mới trong GitHub Actions âÃÂàRELIZA_API_INSTANCE_ID và RELIZA_API_INSTANCE_KEY với các giá trị tương ứngVới điều này, trước tiên tôi cập nhật tập lệnh triển khai được phê duyệt của mình để thêm phần kiểm tra việc triển khai trên GAE và phát trực tuyến tới Reliza Hub.Và tôi cũng thêm quy trình công việc cron GitHub Actions để xác minh trạng thái của ứng dụng GAE của tôiSau khi bất kỳ quy trình công việc nào trong số này chạy, chúng tôi sẽ nhận được ảnh chụp nhanh triển khai của ứng dụng GAE trong Reliza Hub trong chế độ xem phiên bản của chúng tôi như sau:Tóm tắtĐây là nó, giờ đây chúng tôi có một quy trình CI CD nút nhấn đầy đủ với các Hành động GitHub được triển khai cho GAE và các phê duyệt cũng như khả năng hiển thị được quản lý bởi Reliza Hub.Chúng tôi cũng có thể có thông báo Slack và người quản lý Tiếp thị của chúng tôi xem các thay đổi và nhấn nút để đưa chúng vào sản xuất mà không cần hỏi nhân viên kỹ thuật.Thật tuyệt làm sao? Nếu bạn muốn nói chuyện với tôi và thảo luận thêm về quy trình này hoặc quy trình công việc khác à¢ÃÂàđặt trước cuộc gọi thử nghiệm Reliza Hub trong 30 phút không ràng buộc với tôi âààvà tôi sẽ cố gắng hết sức để giúp đỡ.