Cách tải lên Amazon S3 từ GitHub Actions

Tác giả sysadmin, T.Bảy 19, 2023, 01:22:18 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách tải lên Amazon S3 từ GitHub Actions


GitHub Actions là một công cụ CI/CD mạnh mẽ để chạy các bản dựng tự động từ kho lưu trữ GitHub của bạn. GitHub Actions là một công cụ CI/CD mạnh mẽ để chạy các bản dựng tự động từ kho lưu trữ GitHub của bạn. Bước cuối cùng của quy trình này là triển khai, bao gồm việc tải lên các tạo phẩm xây dựng ở đâu đó mà chúng có thể được truy cập dễ dàng. AWS S3 là kho lưu trữ được nhiều người lựa chọn và dễ dàng tích hợp với các tập lệnh Actions.


1. Tại sao nên sử dụng Bộ chứa AWS S3 để triển khai?

Cần lưu ý rằng GitHub Actions có một hệ thống lưu trữ tạo tác cơ bản, tuy nhiên, bạn sẽ không muốn sử dụng hệ thống này trong sản xuất. Nó dành cho mục đích lưu trữ và thử nghiệm, và các tạo phẩm từ các bản dựng đã hoàn thành sẽ hết hạn sau 90 ngày.

Ngoài ra còn có Gói GitHub, được thiết kế để thay thế cho các trình quản lý gói dành riêng cho ngôn ngữ như JavaScript.

Mã nguồn [Chọn]
npm
Điều này có thể rất hữu ích nếu bạn đang xuất bản gói NPM, nhưng không hữu ích cho các loại bản dựng khác.

Đối với mọi loại cấu phần phần mềm khác, bộ chứa S3 của Amazon vẫn là một trong những cách tốt nhất để tải tệp lên để phân phối và triển khai. Chúng được hỗ trợ bởi hệ thống quyền IAM của AWS, hệ thống này có khả năng bảo mật tuyệt vời và có thể tinh chỉnh các biện pháp kiểm soát truy cập đối với mã nguồn đã biên dịch của bạn.

Ngoài ra, nếu bạn đang sử dụng bộ chứa Docker để triển khai, bạn sẽ muốn sử dụng sổ đăng ký bộ chứa để thay thế. May mắn thay, GitHub có sổ đăng ký riêng dễ tích hợp và bạn có thể đọc hướng dẫn sử dụng sổ đăng ký này của chúng tôi để tìm hiểu thêm.

Sử dụng S3 khá dễ dàng và hầu hết các bước được hiển thị ở đây cũng sẽ áp dụng cho các giải pháp lưu trữ tương thích với S3, như Digital Ocean Spaces hoặc MinIO tự lưu trữ, vì chúng sử dụng cùng một API.

2. Tải lên AWS S3 từ GitHub Actions

Để bắt đầu, bạn sẽ muốn đảm bảo rằng phần còn lại của tập lệnh xây dựng GitHub Actions đang hoạt động và tạo ra một bản dựng hợp lệ, vì bạn thường không muốn gỡ lỗi nhiều vấn đề cùng một lúc.

Nếu bạn chưa có, quá trình thiết lập sẽ phụ thuộc vào chuỗi công cụ xây dựng của bạn, nhưng bạn có thể đọc hướng dẫn của chúng tôi về cách thiết lập các bản dựng tự động để tìm hiểu thêm. Bạn cũng có thể kiểm tra tạo phẩm sẽ được tải lên bằng cách sử dụng tiện ích tích hợp của GitHub hành động xuất bản nội dung của một thư mục dưới dạng một gói.

Mã nguồn [Chọn]
upload-artifact

Sau đó, bạn có thể xác nhận việc tạo gói trong Summary > Artifacts.


Khi bạn có một bản dựng không bị lỗi, bạn có thể thêm phần tải lên S3 vào cuối bản dựng đó. Không có cách chính thức nào để thực hiện việc này một cách dễ dàng và có nhiều giải pháp khác nhau trên Thị trường hành động GitHub.


Ứng dụng phổ biến nhất là S3 Sync, sử dụng API S3 gốc để tải lên các phần mềm tạo sẵn và rất dễ định cấu hình. Ngoài ra còn có các hàm bao đơn giản như s3cmd, cho phép bạn chuyển lệnh trực tiếp đến S3 CLI.

Mặc dù vậy, có một lưu ý---hầu hết trong số này dựa trên trình chạy được lưu trữ trên Linux hoặc bộ chứa Docker, đi kèm với các thành phần phụ thuộc cần thiết để S3 CLI hoạt động. Phần lớn các bản dựng chạy trên Linux, nhưng nếu bạn cần sử dụng Windows để chạy các bản dựng của mình, bạn sẽ cần sử dụng một hành động khác. Nền tảng chéo mà chúng tôi thấy hoạt động là stcalica/s3-upload. Điều này sử dụng trình bao bọc JavaScript cài đặt gói s3cmd và chỉ hoạt động tốt trên Windows.

Một điều bạn cần làm trước tiên là thiết lập Bí mật GitHub cho mã thông báo xác thực AWS của bạn. Tất nhiên, những thứ này không thể công khai và sẽ cần được lưu trữ trên các bí mật của kho lưu trữ và được truy cập theo tên. Điều này ngăn chặn việc vô tình rò rỉ mã thông báo của bạn và cho phép quản lý khóa dễ dàng.

Bạn có thể đọc hướng dẫn của chúng tôi về cách sử dụng Bí mật GitHub để tìm hiểu thêm về chúng, nhưng điều chính bạn cần là đi tới cài đặt kho lưu trữ, sau đó nhấp vào Bí mật > Hành động và tạo một cái.


Sau đó, ở cuối tập lệnh GitHub Actions của bạn, hãy thêm một bước "triển khai" có tên và đặt nó để sử dụng hành động đồng bộ hóa s3 hoặc bất kỳ hành động nào bạn đã chọn. Bạn sẽ cần chuyển Bí mật cho khóa truy cập và ID mà bạn đã định cấu hình làm biến môi trường.

Mã nguồn [Chọn]
...

 - name: Deploy To S3


 - uses: actions/checkout@master


 - uses: jakejarvis/s3-sync-action@master


 with:


 args: --acl public-read --follow-symlinks --delete


 env:


 AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}


 AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}


 AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}


 AWS_REGION: 'us-east-1' # optional: defaults to us-east-1


 SOURCE_DIR: 'bin/Linux/net48' # optional: defaults to entire repository


 DEST_DIR: '/' # optional: defaults to root of the bucket

Đặc biệt, với quy trình làm việc này, bạn cũng có thể chuyển đối số trực tiếp tới s3cmd, chẳng hạn như có thể được sử dụng để bật ACL đọc công khai. Tại đây, đối tượng được đặt thành công khai và nội dung cũ tại thư mục đó trong bộ chứa sẽ bị xóa, đảm bảo mọi thứ khớp với đầu ra của bản dựng mà không có tệp cũ.

Với điều đó đã được thêm vào, tất cả những gì còn lại là cam kết thay đổi tập lệnh xây dựng và tùy chọn chạy lại bản dựng theo cách thủ công nếu nó không tự động bắt đầu lại trên một cam kết mới. Bạn sẽ không thấy bất kỳ đầu ra bản dựng nào trong GitHub vì nó đã được gửi đến S3, nhưng bạn có thể kiểm tra nhật ký từ s3cmd trong bước "triển khai sang S3" trong nhật ký bản dựng:


Hy vọng rằng bạn sẽ thấy đầu ra nhật ký tương tự như đầu ra ở trên, xác nhận quá trình đã chạy thành công.