+4

Làm cách nào để chạy GitHub Actions workflows ở môi trường Local?

1. Mở đầu

Ngày nay, GitHub Actions trở thành công cụ phổ biến giúp các lập trình viên tự động hóa quá trình CI/CD. Tuy nhiên, phát triển một workflow GitHub Actions có thể tốn nhiều thời gian. Quá trình này bao gồm việc liên tục commit và push các thay đổi của bạn vào workflow lên repository để kiểm tra xem chúng đã chạy đúng hay chưa. Điều này không chỉ làm tăng thời gian cần thiết để hoàn thiện các workflow của bạn mà còn thêm các commit và nhật ký không cần thiết vào lịch sử phiên bản của repository. May mắn là act, một công cụ mã nguồn mở, cho phép bạn mô phỏng các workflows của GitHub Actions ngay trên máy local. Hãy cùng mình tìm hiểu cách sử dụng act để tiết kiệm thời gian kiểm thử GHA workflow và tăng hiệu quả công việc nhé.

2. Giới thiệu về act

act được phát triển để giúp lập trình viên chạy các GitHub Actions workflows trong môi trường local. act mô phỏng các workflow bằng cách sử dụng Docker containers để thực thi các bước được định nghĩa trong file .github/workflows. Với act, bạn có thể dễ dàng kiểm thử mà không cần phải thực hiện push hay pull request, giúp quy trình làm việc nhanh chóng và thuận tiện hơn rất nhiều.

act được viết bằng Go (Golang). Go được lựa chọn vì hiệu suất cao, khả năng xử lý đồng thời tốt và dễ dàng biên dịch thành các binary độc lập trên nhiều nền tảng khác nhau. Điều này giúp act dễ cài đặt và sử dụng trên các hệ điều hành mà không cần thiết lập phức tạp, đồng thời tận dụng được các tính năng mạnh mẽ của Go trong xử lý quy trình CI/CD hiệu quả.

image.png

3. Cài đặt act

LƯU Ý: Trước khi cài đặt act, bạn cần đảm bảo rằng Docker đã được cài trên máy của của bạn.

Để cài đặt act, bạn có thể sử dụng các cách sau:

  • Linux/MacOS: Cài đặt qua Homebrew:
    brew install act
    
  • Windows: Sử dụng lệnh scoop:
    scoop install act
    
  • Cài đặt từ mã nguồn: Tải mã nguồn từ GitHub và cài đặt trực tiếp nếu cần.

Sau khi cài đặt, bạn có thể kiểm tra phiên bản bằng lệnh:

act --version

Tài liệu Instalation.

4. Sử dụng act

Liệt kê tất cả các job

Sử dụng lệnh sau để liệt kê các job hiện có trong workflow:

act -l

Lệnh này sẽ hiển thị toàn bộ các job và các trigger tương ứng, giúp bạn dễ dàng chọn lựa và kiểm soát các bước trong workflow.

Chạy workflows theo sự kiện

Bạn có thể chạy các workflow dựa trên các sự kiện như push, pull_request:

act push

Lệnh này sẽ kích hoạt các workflow được cấu hình để chạy khi có sự kiện push. Tương tự, bạn có thể thay push bằng các sự kiện khác để kiểm tra.

Để liệt kê tất cả các workflow cho một sự kiện nhất định, hãy sử dụng -l/--list:

act -l pull_request

Chạy workflow cụ thể

Theo mặc định, act sẽ chạy tất cả các quy trình công việc trong .github/workflows. Để chỉ định act sẽ chạy 1 workflow cụ thể hay các workflow trong thư mục cụ thể, bạn có thể sử dụng -W/--workflows

# run all jobs in workflows in directory .github/workflows
act -W '.github/workflows/'

# run all jobs in .github/workflows/checks.yml workflow
act -W '.github/workflows/checks.yml'

Chạy job cụ thể

Nếu bạn chỉ muốn chạy một job cụ thể thay vì toàn bộ workflow, bạn có thể thêm tên job vào lệnh:

act -j <job_name>

Điều này giúp tối ưu hóa kiểm thử khi bạn cần kiểm tra từng phần riêng lẻ của workflow.

Pass Personal Access Tokens

Để truy cập các tài nguyên yêu cầu quyền truy cập, bạn có thể cung cấp Personal Access Token:

act -s GITHUB_TOKEN=<your_token>

Thao tác này sẽ mô phỏng môi trường thực, nơi bạn có quyền truy cập vào các repo riêng tư hoặc tài nguyên bảo mật.

Nếu GitHub CLI được cài đặt, lệnh gh auth token có thể được sử dụng để tự động chuyển token cho act:

act -s GITHUB_TOKEN="$(gh auth token)"

Pass Secrets

Giống như trên GitHub, bạn có thể cung cấp các secrets để kiểm thử workflows yêu cầu biến môi trường nhạy cảm:

act -s MY_SECRET=value

Bạn có thể thêm nhiều secrets khác nhau bằng cách lặp lại tham số -s.

.actrc file

Để thuận tiện, bạn có thể lưu cấu hình mặc định trong file .actrc:

-P ubuntu-latest=nektos/act-environments-ubuntu:18.04
-s GITHUB_TOKEN=<your_token>

File .actrc cho phép bạn định nghĩa các options mặc định mà act sẽ sử dụng mỗi khi gọi CLI. Nếu bạn thường xuyên phải nhập nhiều options, bạn có thể lưu trữ chúng trong file này. Ví dụ như chọn container image mặc định cho quá trình thực thi. Hoặc bạn cũng có thể sử dụng file này để tự động set các biến môi trường, chẳng hạn như token GitHub từ CLI gh, bằng cách thêm vào .actrc.

>>act còn rất nhiều tính năng hay, bạn có thể tham khảo tại tài liệu Usage Guide<<

5. Ưu nhược điểm của act

Ưu điểm:

  • Tiết kiệm thời gian: Không cần đẩy code lên GitHub mỗi khi muốn kiểm tra cấu hình workflow.
  • Debug dễ dàng: Cho phép kiểm tra và sửa lỗi nhanh chóng ngay dưới môi trường local.
  • Dễ tiếp cận: Act rất dễ sử dụng, ngay cả người mới tiếp xúc với Github Actions cũng dễ dàng cài đặt và sử dụng act.

Nhược điểm:

  • Giới hạn hỗ trợ: Một số tính năng nâng cao của GitHub Actions có thể chưa được hỗ trợ đầy đủ trong act.
  • Yêu cầu Docker: act chạy trên Docker containers, vì vậy bạn cần cài đặt Docker trước khi sử dụng.
  • Tốn tài nguyên: Chạy các workflow phức tạp trên local có thể tiêu tốn tài nguyên hệ thống.

6. Tổng kết

act là công cụ rất tiện để kiểm thử GitHub Actions workflows ngay trên môi trường local. Với khả năng mô phỏng gần như toàn bộ các thao tác, act giúp tiết kiệm thời gian và giảm thiểu lỗi tiềm ẩn khi làm việc với CI/CD. Nếu bạn thường xuyên phải tinh chỉnh workflows, act sẽ là một trợ thủ đắc lực giúp tối ưu hóa quy trình phát triển. Tuy nhiên nó cũng không phải là 1 công cụ toàn năng giống hệt chạy trên Github Actions nên với những workflow phức tạp thì có vẻ act sẽ không phải là lựa chọn thích hợp, bạn hãy cân nhắc sử dụng nhé :v


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí