Facebook Pixel

GitHub Actions là gì? Công cụ CI/CD hiệu quả cho Devops

11 Jun, 2024

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.

GitHub Actions là gì? Công cụ CI/CD hiệu quả cho Devops

Mục Lục

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:

  1. 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)
  2. 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.
  3. 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
  4. Deploy: Mã nguồn của bạn được thành công triển khai trên production
  5. 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.
Bash
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.
Bash
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.
Bash
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
Bash
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:

Bash
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:

  1. Bạn tạo thư mục.github/workflows/ trong repository của mình.
  2. Trong thư mục .github/workflows/ , tạo một file  learn-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 CloudAzure Cloud, bạn tham khảo nhé!

Các bài viết liên quan:

Bài viết liên quan

Lập trình backend expressjs

xây dựng hệ thống microservices
  • Kiến trúc Hexagonal và ứng dụngal font-
  • TypeScript: OOP và nguyên lý SOLIDal font-
  • Event-Driven Architecture, Queue & PubSubal font-
  • Basic scalable System Designal font-

Đăng ký nhận thông báo

Đừng bỏ lỡ những bài viết thú vị từ 200Lab