Github Actions là gì?
GitHub Actions là một công cụ cho phép bạn tạo các workflow cho vòng đời phát triển phần mềm trực tiếp trên kho lưu trữ GitHub của mình. Nó giúp tự động hóa các quy trình phát triển phần mềm tại nơi bạn lưu trữ mã nguồn, kết hợp với các pull request và issues. Bạn có thể viết các tác vụ riêng lẻ, được gọi là actions, và kết hợp chúng lại để tạo ra một workflow tùy chỉnh.
Workflow là các tiến trình tự động mà bạn có thể thiết lập trong kho lưu trữ của mình để thực hiện các nhiệm vụ như xây dựng (build), kiểm tra (test), xuất bản gói (publish package), phát hành (release), hoặc triển khai (deploy) dự án trên GitHub.
GitHub Actions hỗ trợ tích hợp continuous integration (CI) và continuous deployment (CD) trực tiếp trên kho lưu trữ của bạn, giúp tự động hóa và tối ưu hóa quy trình phát triển phần mềm.
Mối liên hệ giữa CI/CD và GitHub Actions
CI (Continuous Integration) là tích hợp liên tục, giúp tự động hóa việc build và test mã khi có thay đổi. CD (Continuous Delivery) là phân phối liên tục, tự động triển khai ứng dụng lên server sau khi CI hoàn tất. DevOps là người quản lý CI/CD, kết nối giữa phát triển và vận hành. Sử dụng CI/CD tăng năng suất và chất lượng phần mềm, phát hiện sớm rủi ro và triển khai nhanh chóng.
GitHub Actions là nền tảng CI/CD tích hợp trên GitHub, giúp tự động hóa toàn bộ quy trình phát triển phần mềm từ xây dựng, kiểm thử đến triển khai. Với GitHub Actions, ta có thể tạo workflow auto thực hiện tác vụ khi có vấn đề xảy ra trong repository.
Quy trình CI/CD cơ bản gồm:
- Code: Phát triển tính năng, lưu trữ và kiểm soát mã nguồn trên GitHub.
- Build: Sau khi code và kiểm thử đơn vị (Unit Test), mã nguồn các ngôn ngữ như Golang, Java, C, C++ sẽ được biên dịch thành các file binary.
- CI Testing: DevOps thiết lập các kịch bản kiểm thử như Naming Convention, Integration Test, Functional Test
- Deploy: Mã nguồn được triển khai lên môi trường production.
- Monitor: Giám sát hiệu suất và trạng thái ứng dụng sau khi triển khai bằng các công cụ như Grafana,Prometheus, New Relic.
GitHub Actions giúp thiết lập các tác vụ CI/CD trên GitHub repository và đã trở thành công cụ CI/CD phổ biến nhất hiện nay.
Các thành phần của GitHub Actions
Dưới đây là các thành phần chính của công cụ này
#1. Workflow
GitHub Workflow là một nhóm các quy trình tự động hóa được xác định trong repository GitHub của bạn, giúp quản lý và thực hiện các tác vụ như xây dựng, kiểm thử và triển khai phần mềm. Các workflows được cấu hình bằng các tệp YAML và lưu trữ trong thư mục .github/workflows của repository.
#2. Runners
Runners là các máy ảo hoặc máy chủ nơi các jobs trong workflow được thực hiện. GitHub cung cấp hai loại runners: runners mặc định (hosted runners) và runners tự thiết lập (self-hosted runners).
- GitHub-hosted runners: Đây là các runners được GitHub quản lý và bảo trì. Chúng hỗ trợ nhiều hệ điều hành và cấu hình khác nhau.
- Self-hosted runners: Bạn có thể tự thiết lập và quản lý runners trên các máy chủ vật lý hoặc máy ảo mà bạn kiểm soát, cho phép tùy chỉnh môi trường theo nhu cầu của dự án.
#3. Jobs
Tập hợp các step (bước) cần thực hiện trong workflow. Từng job sẽ tương ứng với từng runner riêng, chạy song song hoặc theo thứ tự. Trong đó Runner là môi trường nơi thực thi như Windows, Ubuntu, MacOS,… Isolation là môi trường cô lập riêng đảm bảo job chạy độc lập và hạn chế tình trạng xung đột.
#4. Events
Các sự kiện kích hoạt workflows khác nhau khi có pull request, push, issue, dispatch, schedule,…
#5. Actions
Các task nhiệm vụ thực thi trong workflow, mỗi action là một lệnh shell hoặc phần mềm đóng gói sẵn giúp thực thi nhiệm vụ phổ biến. Marketplace là nơi bạn tìm thấy nhiều actions từ GitHub hoặc cộng đồng cung cấp. Uses là từ khoá để dùng action.
Ưu và nhược điểm của GitHub Actions
Dưới đây là những ưu và nhược điểm của GitHub Actions:
Về ưu điểm:
- Hầu như miễn phí cho người dùng trải nghiệm, phù hợp xây dựng profile cá nhân, trải nghiệm học tập
- Sở hữu cộng đồng hỗ trợ lớn với nhiều chia sẻ, đóng góp
- Dễ sử dụng và cài đặt
- Có tích hợp với GitHub giúp dễ dàng quản lý toàn bộ quy trình
Về nhược điểm:
- Các repositories miễn phí có giới hạn về số phút sử dụng runners và số lượng actions miễn phí, có thể gây khó khăn cho các dự án lớn hoặc sử dụng nhiều workflows.
- Thiết lập và quản lý workflows phức tạp có thể đòi hỏi kiến thức sâu về YAML và các kỹ năng kỹ thuật khác, gây khó khăn cho người mới bắt đầu.
- Đối với các workflows phức tạp hoặc cần tài nguyên lớn, runners miễn phí của GitHub có thể không đáp ứng đủ yêu cầu về hiệu suất.
- Mặc dù GitHub Actions có các biện pháp bảo mật, việc sử dụng self-hosted runners có thể tiềm ẩn rủi ro bảo mật nếu không được quản lý đúng cách.
Lời kết
Trên đây là những thông tin bạn cần biết về GitHub Actions, LANIT hy vọng những chia sẻ trên sẽ mang lại thông tin hữu ích. Nếu bạn cần tìm hiểu thêm hay còn thắc mắc nào thì đừng ngại để lại bình luận để LANIT hỗ trợ bạn nhé!