Thiết lập CI/ CI trong Gitlab

Tự động hóa các qui trình trong sản xuất phần mềm là một công cụ giúp nâng cao hiệu quả công việc cho các công ty công nghệ thông tin. CI/ CD là một phần trong quá trình tự động hóa này. Nó được Gitlab hỗ trợ trong phiên bản 9.0 trở lên. Bài viết này tôi xin đề cập đến làm thế nào thiết lập CI/ CD cơ bản trong gitlab.

CI/ CI là gì?

CI là từ được viết tắt từ Continues Integration và được hiểu là Tích hợp liên tục. Khi bạn phát triên ứng dụng bạn cần trải qua các giai đoạn phổ biến như: Test, Build. Các giai đoạn này sẽ được làm một cách tự động mà ít cần sự can thiệp của con người. Chính vì thế chất lượng phần mềm sẽ được đảm bảo hơn khi không có cảm tính trong quá trình kiểm thử. Tuy nhiên đòi hỏi Lập trình viên cần viết các mã test (unit test, integration test…)

CD được viết tắt từ Continues Delivery hay Continues Deployment. Nó được xem là một giai đoạn để triển khai mã nguồn lên sản phẩm đang cung cấp. Ta có thể hiểu nó như là một gia đoạn triển khai sản phẩm trên các mội trường dev, test, stagingproduction. Quá trình này sẽ diễn ra một cách tự động theo một kịch bản đã được viết bởi lập trình viên. Để kích hoạt quá trình thì cần có thêm các điều kiện như test không có lỗi…

Thông qua CI/ CD, các công ty phần mềm có thể triển khai các ứng dụng của mình một cách nhanh chống và an toàn. Giảm thiểu lỗi do thiếu các bước mỗi lần triển khai. Giảm thiểu chi phí cho công việc lập đi lập lại của quá trình triển khai. CI/ CD được sử dụng tốt trong các ứng dụng dạng SaaS, Cloud… trong các quy trình phần mềm Agile.

Thiết lập với .gitlab-ci.yml

Khi mã nguồn bạn được commit lên repository thì gitlab sẽ có một trigger để nhận biết cần phải làm gì tiếp theo. Nếu bạn không định nghĩa các bước nào tiếp theo thì gitlab không thể thực hiện được. Do đó cần có một thứ gì đó để cho gitlab biết mình phải làm gì.

.gitlab-ci.yml là tập tin định nghĩa các bước làm ấy. Người dùng cần phải tạo nó trong thư mục gốc (root) của mã nguồn repositorycommit cùng với mã nguồn.

stages:
- test
- build
- deploy

test:
  stage: test
  script: echo "Running tests"

build:
  stage: build
  script: echo "Building the app"

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging environment"
  environment:
    name: staging
    url: https://staging.codetot.com
  only:
  - master

Đoạn mã trên là ví dụ đơn giản của một .gitlab-ci.yml. Tôi chia quá trình phát triển phần mềm của mình là 3 giai đoạn (thể hiện trong stage): test, builddeploy. Mỗi giai đoạn sẽ thực hiện những gì sẽ được tôi định nghĩa trong đoạn mã bên trên. Ví dụ giai đoạn test tôi chỉ đơn thuận in ra câu Running tests thì đoạn mã sẽ được thể hiện.

test:
  stage: test
  script: echo "Running tests"

Tương tự ta cần tìm hiểu thêm các giai đoạn còn lại. Và để viết được nội dung thực thi trong mỗi giai đoạn bạn cần tham khảo thêm các lệnh trong CI/ CD của gitlab https://docs.gitlab.com/ee/ci/yaml/README.html.

Gitlab Runner

Tôi sử dụng Docker để tạo một service Gilab Runner vì nó đơng giản nhất cho người sử dụng. Chỉ cần bạn đã có Docker Engine đã được cài đặt và chạy đoạn mã bên dưới là mọi thứ đã xong. Nếu chưa có Docker Engine, bạn có thể vào https://docs.docker.com/install/linux/docker-ce/ubuntu/ để cài đặt.

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

Bài viết này tôi giả định bạn đã biết cơ bản về Docker nên đoạn mã trên không cần phải giải thích thêm.

Bây giờ ta cần đăng ký Docker Runner kết nối đến gitlab của bạn. Hãy vào Setting -> CI/ CD -> Runner. Nhấp vào Expand để thấy thông tin cấu hình.

Hãy tìm Set up a specific Runner manually. Chú ý (2.) và (3.), đây là 2 thông số để chúng ta thiết lập URLTOKEN giúp bạn kết nối giữa Gitlab RunnerGitlab hiện tại.

Cần vào lại Docker của gitlab runner để thiết lập.

# login docker gitlab-runner
docker exec -u root -it gitlab-runner /bin/bash

# defiend parameter
export GITLAB_URL=http://gitlab.vtsspace.com/
export GITLAB_TOKEN=zJU6xbGJT7tzyY9Dqmc6

# registry gitlab runner to gitlab
gitlab-runner \
    register -n \
    --name "Docker Runner" \
    --executor docker \
    --docker-image docker:latest \
    --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
    --url $GITLAB_URL \
    --registration-token $GITLAB_TOKEN \
    --tag-list test,build,deploy

Nếu bạn vào lại Runner Setting như ở trên và thấy được hình bên dưới thì Runner của bạn đã đăng ký thành công.

Kiểm tra kết quả

Hãy vào lại dự án trong gitlab mà bạn vừa khai báo Gitlab Runner để xem kết quả. Nhấp vào CI/ CD bên ở menu bên trái. Bạn sẽ thấy được các Pipeline đã chạy.

Bạn sẽ thấy được kết quả của mỗi giai đoạn (stage) của mỗi Pipeline sau mỗi lần commit mã. Nếu bạn cần thấy được chi tiết kết quả của mỗi lần chạy thì nhấp vào mỗi Pipeline

Tài liệu tham khảo

  1. Gitlab CI Reference

Trả lời

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 *