0

Triển khai CI/CD đơn giản cho dự án cá nhân sử dụng GitHub Actions (Phần 1)

Giới thiệu

Bài viết này dành cho những người muốn bắt đầu với CI/CD , hoặc nếu có hứng thú với GitHub Actions và muốn tìm hiểu nó hoạt động như thế nào.

Chúng ta sẽ cùng đi vào nội dung về CI/CD là gì, cách triển khai CI/CD cho dự án cá nhân của bạn với GitHub Actions.

CI/CD là gì?

CI/CD là một bộ đôi công việc, bao gồm CI (Continuous Integration) và CD (Continuous Deployment/Delivery), ý nói là quá trình tích hợp (integration) thường xuyên, nhanh chóng hơn khi code cũng như thường xuyên cập nhật phiên bản mới (delivery).

CI là phương pháp phát triển phần mềm yêu cầu bạn phải nộp code thường xuyên. Code sẽ được tích hợp liên tục lên test server, khi một đoạn code bị lỗi, cả team có thể sớm phát hiện và sửa chữa ngay lập tức. Đồng hành cùng tích hợp liên tục (CI), triển khai liên tục (CD) là thường xuyên release phiên bản mới lên môi trường test, việc này được diễn ra tự động, giảm gánh nặng cho dev để tập trung vào việc code mà thôi.

GitHub Actions là gì?

GitHub Actions cho phép chúng ta chạy những câu lệnh shell khi có một event xảy ra, ví dụ như commit code, tạo PR, hoặc chạy theo lịch định kỳ. Bạn có thể tìm những "Action" có sẵn ở đây, nó giống như một phần mở rộng để giúp bạn thực hiện những công việc phức tạp mà không cần phải viết code.

CI với GitHub Actions

Mình sẽ dùng project sau để dùng làm ví dụ cho bài viết này: https://github.com/semaphoreci-demos/semaphore-demo-php-laravel

Bạn có thể bắt đầu sử dụng ngay GitHub Actions ở repo trên GitHub ở đây:

Ở đây GitHub cung cấp rất nhiều workflow mẫu cho nhiều ngôn ngữ và framework khác nhau, ở đây vì mình đang dùng Laravel nên sẽ chọn workflow cho Laravel:

Vì mình cũng chỉ mới bắt đầu làm quen với GitHub Actions nên sẽ sử dụng workflow template có sẵn được cung cấp, và chỉnh sửa lại cho phù hợp với nhu cầu của mình.

name: Laravel

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  ci:
    runs-on: ubuntu-18.04
    steps:
    - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
      with:
        php-version: '7.3'
    - uses: actions/checkout@v2
    - name: Install composer packages
      run: composer install
    - name: Install node modules
      run: npm install
    - name: .env
      run: cp .env.example .env
    - name: Generate key
      run: php artisan key:generate
    - name: Run code analysis
      run: |
        php vendor/bin/phpmd app/ text phpmd_ruleset.xml
        php vendor/bin/phpcs app --report-full --standard=PSR2
        curl -L https://phar.phpunit.de/phpcpd.phar -o phpcpd.phar
        php phpcpd.phar app/ --min-lines=50
    - name: Run unit tests
      run: vendor/bin/phpunit

Mình đặt trigger là mỗi khi có một commit mới được push lên, hoặc có PR mới được tạo, thì nó sẽ chạy job mình define trong file yml.

Bạn có thể vào lại tab Actions để kiểm tra kết quả của job vừa chạy.

Tạm kết

Vậy là với bài viết này, mình đã giải thích cho các bạn những khái niệm về CI/CD cơ bản và setup một CI cơ bản với GitHub Actions. Cám ơn các bạn đã đọc hết bài của mình.

Tham khảo:


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í