Trong bài viết này, 200Lab sẽ giới thiệu đến bạn một công cụ CI/CD hiệu quả cho DevOps - chính là Github Actions. Vậy GitHub Actions là gì, cách sử dụng như thế nào, chúng ta cùng tìm hiểu nhé.
1. Github Actions là gì ?
GitHub Actions là một nền tảng CI/CD tích hợp sẵn trên GitHub, cho phép bạn 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, bạn có thể tạo các workflow (quy trình làm việc) để tự động thực hiện các tác vụ khi có các sự kiện cụ thể xảy ra trong repository của bạn.
Như các bạn biết đấy, quá trình CI/CD cơ bản của một dự án sẽ bao gồm các bước sau:
- Code: Quá trình phát triển tính năng cho sản phẩm, lưu trữ và kiểm soát code tại reposity (Github)
- Build: Sau khi đã code và Unit Test xong, các ngôn ngữ hiệu năng cao như Golang, Java, C, C++, ... mã nguồn sẽ được compile lại thành các file binary.
- CI Testing: Devops sẽ thiết lập trước một số những kịch bản để kiểm thử mã nguồn của bạn: Integration Test, Naming Convention, Functional Test
- Deploy: Mã nguồn của bạn được thành công triển khai trên production
- Monitor: Giám sát hiệu suất và trạng thái của ứng dụng sau khi triển khai bằng các công cụ như Prometheus, Grafana, New Relic.
Tóm gọn lại GitHub Actions sẽ giúp bạn thiết lập các tác vụ CI/CD trên repository GitHub, bạn chỉ có thể dùng được nó khi dùng Github thôi nhé, và nó đã và đang trở thành công cụ CI/CD sử dụng nhiều nhất hiện tại.
2. Những thành phần của GitHub Actions
2.1 Workflow
GitHub Workflow là một tập hợp các quy trình tự động hóa được định nghĩa trong repository GitHub của bạn, giúp quản lý và thực hiện các công việc như build, test, và deploy phần mềm. Workflows được cấu hình thông qua các tệp YAML và lưu trữ trong thư mục .github/workflows
của repository
2.2 Jobs
Jobs là các tập hợp các bước (steps) cần thực hiện trong workflow. Mỗi job chạy trên một runner riêng biệt, có thể chạy song song hoặc theo thứ tự phụ thuộc lẫn nhau.
- Runner: Là môi trường (ví dụ: Ubuntu, Windows, macOS) nơi các job được thực thi.
- Isolation: Mỗi job chạy trong môi trường cô lập để đảm bảo sự độc lập và tránh xung đột.
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: npm install
2.3 Runners
Runners là các máy chủ hoặc máy ảo nơi các jobs trong workflow được thực thi. GitHub cung cấp runners mặc định (hosted runners) và bạn cũng có thể tự thiết lập runners của riêng mình (self-hosted runners).
- GitHub-hosted runners: GitHub cung cấp các runners được quản lý và bảo trì bởi GitHub. Các runners này hỗ trợ nhiều hệ điều hành và cấu hình khác nhau.
- Self-hosted runners: Bạn có thể thiết lập và quản lý runners của riêng mình trên các máy chủ vật lý hoặc máy ảo mà bạn kiểm soát. Điều này cho phép bạn tùy chỉnh môi trường chạy theo nhu cầu cụ thể của dự án.
jobs:
build:
runs-on: ubuntu-latest
2.4 Actions
Actions là các nhiệm vụ (tasks) được thực thi trong một workflow. Một action có thể là một lệnh shell hoặc một phần mềm được đóng gói sẵn giúp thực hiện các nhiệm vụ phổ biến.
- Marketplace: GitHub Actions có một marketplace nơi bạn có thể tìm thấy nhiều actions do cộng đồng và GitHub cung cấp.
- uses: Từ khóa để sử dụng một action trong bước của job.
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
2.5 Events
Events là các sự kiện kích hoạt workflows. GitHub cung cấp nhiều sự kiện khác nhau, chẳng hạn như khi có push, pull request, hoặc issue mới.
- on: Định nghĩa sự kiện kích hoạt workflow.
- Các sự kiện phổ biến:
push
,pull_request
,schedule
,workflow_dispatch
on:
push:
branches:
- main
pull_request:
branches:
- main
3. Hướng dẫn tạo Workflow trong GitHub Actions
3.1 Tạo Workflow
Bạn có thể truy xuất GitHub Actions ở 1 repository bất kì bằng cách nhấn vào menu Actions như hình bên dưới:
Dưới đây là một ví dụ về workflow trên trang chủ GitHub, cài thư viên viện bats trong môi trường ubuntu và kiểm tra version mới cài đặt:
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm install -g bats
- run: bats -v
Đây là biểu đồ mô tả workflow:
Các bước thực hiện như sau:
- Bạn tạo thư mục
.github/workflows/
trong repository của mình. - Trong thư mục
.github/workflows/
, tạo một filelearn-github-actions.yml
và thêm vào đoạn code trên.
3.2 Giải thích Workflow
- name (không bắt buộc): Tên của workflow sẽ xuất hiện trong tab "Actions" của repository GitHub. Nếu trường này bị bỏ qua, tên của file workflow sẽ được dùng để thay thế.
- run-name: Tên động, có thể thay đổi qua các lần chạy , ví dụ như tên người đã trigger workflow chạy.
- on: Định nghĩa trigger mà workflow này sẽ chạy, ví dụ
push
event. - jobs: Danh sách các công việc trong workflow.
- check-bats-version: tên job.
- runs-on: môi trường thực thi (ubuntu, windows server, ...).
- steps: các bước trong 1 job.
- uses: hành động xảy ra trong từng bước.
4. Ưu điểm của GitHub Actions
Nếu bạn đang phân vân liệu họ có nên sử dụng GitHub Actions hay không và tại sao lại chọn nó thay vì các dịch vụ khác, thì mình khuyên là các bạn hãy thử dùng và trải nghiệm vì các lý do sau đây:
4.1 Giá cả
GitHub Actions hầu như miễn phí cho các người dùng cá nhân trả nghiệm và học tập (GitHub Free), rất thích hợp với những bạn muốn xây dựng profile cá nhân trong lĩnh vực Devops. Vì không phải nền tảng nào cũng cho bạn dùng miễn phí mà không cần phải cài đặt phức tạp như GitHub Actions đâu, đơn cử như Jenkins, GitLab CICD - những công cụ này yêu cầu bạn phải có server và cài đặt thì không hề dễ dàng.
4.2 Cộng đồng hỗ trợ lớn
GitHub Actions có một cộng đồng lớn và tích cực, với nhiều workflow và action mã nguồn mở có sẵn để sử dụng. Điều này giúp bạn dễ dàng tìm và sử dụng lại các workflow hiện có cũng như đóng góp cho cộng đồng bằng cách chia sẻ workflow của riêng bạn.
4.3 Tích hợp chặt chẽ với GitHub
GitHub Actions tích hợp hoàn hảo với các tính năng khác của GitHub, chẳng hạn như issue và pull request. Điều này giúp bạn dễ dàng quản lý toàn bộ quy trình làm việc của mình ở một nơi, đảm bảo rằng code của bạn luôn được kiểm tra trước khi nó được merge vào branch chính.
4.4 Dễ sử dụng
GitHub Actions cung cấp giao diện trực quan và dễ sử dụng để tạo và quản lý các workflow. Devloper có thể sử dụng các Actions được tạo sẵn hoặc tạo các Actions tùy chỉnh của riêng mình bằng bất kỳ ngôn ngữ lập trình nào. So sánh với các nền tảng CI/CD khác, mình cũng sẽ vote một phiếu cho GitHub Actions về khoản dễ dùng.
5. Kết luận
Và đây là những chia sẽ của mình về GitHub Actions cùng với lý do vì sao bạn nên bỏ chút thời gian trải nghiệm nó, so với các nền tảng CICD khác thì mình đánh giá cao GitHub Actions rất nhiều, giá cả lại miễn phí với người dùng cá nhân nữa.
200Lab cũng có các khoá học liên quan đến DevOps AWS Cloud và Azure Cloud, bạn tham khảo nhé!
Các bài viết liên quan:
Bài viết liên quan
Grafana Loki là gì? So sánh Loki và Elasticsearch
Nov 16, 2024 • 6 min read
Webhook là gì? So sánh Webhook và API
Nov 15, 2024 • 8 min read
Two-Factor Authentication (2FA) là gì? Vì sao chỉ Mật khẩu thôi là chưa đủ?
Nov 13, 2024 • 7 min read
ELK là gì? So sánh hiệu suất giữa ELK và PLG
Nov 06, 2024 • 9 min read
Docker Best Practices: Tối ưu Dung lượng Docker Image
Oct 30, 2024 • 8 min read
SQL Injection là gì? Những cách phòng ngừa SQL Injection
Oct 25, 2024 • 10 min read