CI/CD là gì? Triển khai CI/CD trên GitLab


Trong quá trình phát triển phần mềm, có một khâu rất quan trọng đó là deploy sản phầm lên môi trường test, môi trường product. Việc thực hiện bằng tay sẽ làm tiêu tốn khá nhiều thời gian của bạn. Việc CI/CD ra đời sẽ giúp chúng ta tự động hóa 1 phần công việc. Hôm nay, vinasupport.com sẽ giới thiệu với các bạn về CI/CD và hướng dẫn triển khai nó trên GitLab.

CI/CD là gì?

CI/CD là gì? CI/CD với CI (Continuous Integration) và CD (Continuous Delivery), 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).

Triển khai CD/CD trên GitLab

Cài  đặt GitLab Runner trên Ubuntu

Đầu tiên chúng ta download GitLab Runner. Bạn có thể tìm file cài đặt tại địa chỉ: https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html

VD: Download File cài đặt GitLab Runner cho HDH Ubuntu

curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"

Cài đặt GitLab Runner

sudo dpkg -i gitlab-runner_amd64.deb

Verify lại GitLab Runner

gitlab-runner verify

Đăng ký GitLab Runner

Tạo 1 project trên GitLab (Cái này các bạn tự tìm hiểu, nó rất đơn giản)

Lấy thông tin để đăng ký GitLab Runner

Các bạn vào Project vừa tạo => [ Settings ] => [ CI / CD ] => Expand mục “Runners“. Chúng ta sẽ có các thông số như sau:

  • URL để đăng ký GitLab Runner
  • Token

Trên máy chủ chúng ta thực hiện command để đăng ký GitLab Runner vào Project mà chúng ta vừa tạo.

sudo gitlab-runner register
  • Enter thte GitLab instance URL: Nhập địa chỉ URL đăng ký GitLab ở bên trên
  • Enter the registration token: Nhập Token ở bên trên
  • Enter a description for the runner: Nhập miêu tả về runner
  • Enter tags fỏ the runner: Điền tag gì cũng đc.
  • Enter an executor: Ở đây mình chọn là shell

Kết quả sau khi đăng ký GitLab Runner

GitLab Runner đang ở trạng thái activated, nếu muốn tạm dựng bấm [ Pause ], còn nếu bạn muốn gỡ bỏ bấm [ Remove Runner ].

Bạn có thể đăng ký nhiều Runner cho 1 project. Khi có commit mới, dựa vào tags nó sẽ gọi đến runner tương ứng để chạy.

Cấu hình file  .gilab-ci.yml

File .gitlab-ci.yml là 1 file config dưới dạng YAML, Tham khảo các tham số của file ở đâu: https://docs.gitlab.com/ee/ci/yaml/

Nội dung file giống như là:

# This file is a template, and might need editing before it works on your project.
stages:
  - build
  - test
  - deploy
build_code_job:
  stage: build
  script:
    - echo "Build Code"
  tags:
    - develop
test_code_job:
  stage: test
  script:
    - echo "Test Code"
  tags:
    - develop
deploy_code_job:
  stage: deploy
  script:
    - echo "We are vinasupport.com team"
  tags:
    - develop

Rồi sau đó đặt nó vào thư mục root của Project và commit nó lên:

git add .gitlab-ci.yml
git commit -m "Add .gitlab-ci.yml"
git push origin master

Khi nào có commit, GitLab Runner chạy Pipelines

Để kiểm tra log chạy, các bạn bấm vào chữ pass để xem chi tiết 1 Pipeline

Trong log của 1 job bạn sẽ tìm thấy thư mục GitLab Runner clone source code.

Thay đổi đường dẫn clone source

Mặc định đường dẫn checkout source tại: /home/gitlab-runner/builds

Nếu bạn muốn thay đổi đường dẫn này vui lòng sửa file: /etc/gitlab-runner/config.toml thêm tham số builds_dir như sau:

Sau khi sửa đường dẫn clone của Gitlab Runner thì bạn có thể bị lỗi permission. Vì gitlab runner mặc định sẽ chạy với user là gitlab-runner.

Vì vậy bạn có thể chown quyền của thư mục clone Hoặc thay đổi user chạỵ ở đường dẫn: /etc/systemd/system/gitlab-runner.service như sau:

Kết luận

Trên  mạng có rất nhiều bài viết về CI/CD của GitLab nhưng thực sự mình thấy các bài viết đó đều viết không cẩn thận, ko đặt mình vào vị trí người đọc nên người dùng chưa biết gì dều khó khăn khi thực hiện. Nên mình viết bài này, hy vọng các bạn sẽ có 1 tài liệu triển khai CI/CD hoàn chỉnh. Nếu có bất cứ vấn đề gì chưa hiểu thì hãy bình luận bên dưới. Mình giải  đáp các thắc mắc.

Nguồn:  vinasupport.com

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web