Hiện nay, hầu như các bạn đã từng nghe đến hệ thống CI/CD. Mục tiêu của nó là tự động hóa các khâu trong quy trình phát triển phần mềm hiện nay cũng như là tự động hóa cấu hình cho các thiết bị mạng.
Có rất nhiều hệ thống như Gitlab, Jenkin, Circle-CI có thể giúp bạn làm được điều đó. Trong bài viết này, sẽ giới thiệu với các bạn tổng quan Gitlab CI và cách để xây dựng một hệ thống cơ bản.
Các command cần thiết sẽ như sau:
Đây là các command basic khi tạo mới một project.
Developer hoàn thành một feature nào đó và push lên Gitlab để mọi người review. Khi đó GitLab cũng bắt đầu thực hiện công việc mà nó được giao.
Để GitLab CI cỏ thể hoạt động được chúng ta sẽ cần 02 thành phần:
File .gitlab-ci.ym: nằm trong thư mục gốc của repo, file này sẽ định nghĩa các Job để thực hiện, các Job sẽ chạy như thế nào, ở đâu và cấu hình project sử dụng các Runner.
Gitlab Runner: Có nhiệm vụ clone project về, đọc file .gitlabci.yaml và thực hiện các hưởng dẫn trong file. Luồng thực hiện như sau:
Khi chúng ta chạy git push hoặc click vào pipeline thì gitlab repo sẽ thông báo đến cho gitlab runner, khi đó gitlab runner sẽ pull code mới về, đọc file gitlab-ci.yaml và thực hiện theo các bước đã được định nghĩa trong đó.
Một Pipeline CI sinh ra và report sẽ được hiển thị giao diện sau.
Vậy Pipelines là gì?
Là thành phần cấp cao nhất của tích hợp, phân phối và triển khai liên tục.
Pipelines are the top-level component of continuous integration, delivery, and deployment.
Pipeline bao gồm:
Pipeline hoạt động theo nguyên tắc sau :
Bên dưới là ví dụ về đồ thị Pipeline thông thường :
Tóm lại, các bước để Gitlab CI hoạt động như sau :
Để tạo được project trên GitLab, bạn cần thực hiện:
Tạo và sao chép thông tin public:
Cấu hình public key đã tạo ở trên như sau:
image: python:latest
stages:
- validate
- test
- build
- deploy
- request deploy to production
validate:
stage: validate
script:
- echo "VALIDATE"
test:
stage: test
script:
- echo "TEST"
build:
stage: build
script:
- echo "BUILD"
deploy:
stage: deploy
script:
- echo "DEPLOY"
request deploy to production:
stage: request deploy to production
script:
- echo "request deploy to production:"
only:
- master
.gitlab-ci.yml được viết theo định dạng YAML.
Như đã đề cập ở trên, .gitlab-ci.yml cho Runner biết những công việc cần phải làm. Mặc định, nó sẽ chạy một pipelines với 05 stage :
Tuy nhiên, chúng ta không cần phải sử dụng cả 05 stage, các stage không được giao việc sẽ được bỏ qua.
Khi define xong, chúng ta sẽ chạy các command sau để commit và push lên repo của gitlab:
Trong gitlab, các Runner thực thi các jobs được định nghĩa trong file .gitlab-ci.yml.
Một Runner có thể xác định cụ thể cho một dự án nhất định hoặc phục vụ cho nhiều dự án trong Gitlab. Nếu nó phục vụ cho tất cả project thì được gọi là Shared Runner. Trong bài viết này sẽ không nói sâu vào cái đặt và cấu hình Runner, sẽ dung Shared Runner mặt định trên gitalb.com.
Cụ thể hơn về cài đặt và cấu hình Runner sẽ được giới thiệu ở loạt bài viết sau.
Để xác định xem Runner nào được chỉ định cho project của bạn. Vào Settings -> CI/CD.
Với file .gitlab-ci đã cấu hình ở trên và sử dụng default runner của gitlab.com thì Pipelines sẽ như sau:
Chúng ta cũng có thể xem cụ thể từng Jobs bằng cách truy cập Pipelines -> Jobs, chọn job cụ thể cần xem. Xem từng Jobs để có thể biết được cụ thể từng Jobs các lỗi