CI-CD cho dự án của bạn

Overview

CI-CD là gì? Và vì sao mình lại chia sẻ CI-CD. CI-CD là viết tắt của cụm

  • Continuous Integration (CI)
  • Continuous Delivery (CD)
  • Continuous Deployment (CD)

CI-CD trong công nghệ phần mềm dùng để tích hợp triển khai dự án tự động liên tục hay deploy dự án một cách liên tục. Có khá nhiều platform CI-CD nổi tiếng như: Jenkins, Gitlab CI, Circle CI… Hay mới đây chúng ta có thêm cả Github Action. Trong series CI-CD của mình mình sẽ chọn Gitlab CI làm platform để chia sẻ với các bạn. Lý do thì khá đơn giản vì hiện nay có khá nhiều công ty sử dụng Gitlab và Gitlab CI làm techstack, cũng như mình thường xuyên làm việc với Gitlab CI nên mình có hiểu biết nhất định với nó thay vì các platform khác.

Getting Started

Để bắt đầu với Gitlab CI bạn cần định nghĩa một file là .gitlab-ci.yml ở root project của bạn. Khi source code của bạn có sự thay đổi(developer push code) thì các job được định nghĩa trong file .gitlab-ci.yml sẽ được chạy. Tập hợp các job của một file .gitlab-ci.yml tạo thành một pipeline.

Vậy job là gì, pipeline là gì? Job là một tập hợp các script được định nghĩa để thực thi một nhiệm vụ nào đó. Pipeline là tập hợp của các job. Pipeline dịch ra tiếng việt có nghĩa là đường ống, vậy khi một job thì pipeline sẽ không thể chạy tiếp tức là các job sau sẽ không được thực thi. Nó giống với việc khi đường ống của chúng ta bị tắc và nước không thể chảy qua tiếp vậy.

Example

Chúng ta cùng đi vào một ví dụ để có thể hiểu rõ hơn nhé. Tất nhiên rồi để dùng Gitlab CI thì bạn phải có một account Gitlab CI.

Các đầu việc chúng ta sẽ làm gồm có:

  1. Khởi tạo một project ở local và Gitlab
  2. Định nghĩa file .gitlab-ci.yml
  3. Push code từ local lên repo để xem cách CI-CD hoạt động

Trong phần TODO 2: “Định nghĩa file .gitlab-ci.yml ” mình sẽ hướng dẫn các bạn cách để chúng ta có thể định nghĩa được một một file .gitlab-ci.yml cơ bản. Và trong phần TODO 3: “Push code từ local lên repo để xem cách CI-CD hoạt động” sẽ giúp các bạn hiểu hơn phần nào.

TODO 1: Khởi tạo một project ở local và Gitlab

Đầu tiên mình khởi tạo một project với Gitlab và ở local

$ mkdir stuty-cicd && cd study-cicd
$ git init
$ git remote add origin ${YOUR_ORIGIN}
TODO 2: Định nghĩa file .gitlab-ci.yml
stages:
  - test
  - build
  - deploy

job_test:
  image: alpine
  stage: test
  script:
    - echo "start job_test"
    - echo "job_test doing something..."
    - cat etc/alpine-release
    - echo "end job_test"

job_build:
  image: build_image
  stage: build
  script:
    - echo "start job_build"
    - echo "job_build doing something..."
    - echo "end job_build"

job_deploy:
  image: alpine
  stage: deploy
  script:
    - echo "start job_deploy"
    - echo "job_deploy doing something..."
    - echo "end job_deploy"
  only:
    - master
    - stagging
  when: manual

Các thành phần chính giúp chúng ta sẽ định nghĩa trong file .gitlab-ci.yml gồm có

  1. stages
  2. các job

Trong đó stages giúp chúng ta định nghĩa các giai đoạn mà job làm việc, các thứ tự ưu tiên job nào làm trước job nào làm sau. Trong ví dụ này chúng ta có 3 stages: đó là test, build, deploy. Nếu tất cả các job trong stage test success thì các job trong stage build sẽ được thực thi. Và nếu tất cả các job trong stage build success thì các job trong stage deploy sẽ được thực thi. Các job trong cùng một stage sẽ được thực thi đồng thời.

Các thành phần chính giúp chúng ta định nghĩa được 1 job.

  1. image
  2. stage
  3. script
  4. when(option)
  5. only(option)

image là base image khởi tạo môi trường container để thực thi các script. stage định nghĩa kiểu stage cho job. script nhóm các script để thực thi cho job của bạn. Ngoài ra ở đây mình chia sẻ thêm một vài options như when dùng để cho biết job được chạy khi nào. Trong ví dụ mình để when manual nghĩa là bạn phải bấm bằng tay thì job mới được thực thi. Ngoài ra các bạn có thể xem thêm chi tiết hơn ở https://docs.gitlab.com/ee/ci/yaml/

TODO 3: Push code từ local lên repo để xem CI-CD hoạt động

Giờ thì chúng ta sẽ cùng commit code và push lên repo gitlab để xem thử nhé.

$ git add . && git commit -m 'Initial commit'
$ git push -u origin master


Summary

Trong blog này mình đã giới thiệu với các bạn về CI-CD và apply Gitlab CI vào dự án của bạn. Hi vọng sẽ giúp ích được phần nào đó cho các bạn.

Các bạn có thể xem thêm video ở channel Youtube bé nhỏ của mình ở đây và source code ở đây. Thanks! ❤

Advertisement

Thích bài này:

Thích

Đang tải…