Phần 4: Các thành phần cơ bản trong file “.gitlab-ci.yml”

Xem thêm:

Để có thể sử dụng CI/CD trên Gitlab thì bạn cần tạo 1 file .gitlab-ci.yml. File này sẽ chứa các thông tin cần thiết để Gitlab runner và executor sử dụng và thực thi các công việc được yêu cầu. Các thành phần cơ bản sẽ bao gồm như sau:

  • Danh sách các bước (stage) sẽ thực hiện
  • Các công việc (job) cần được thực hiện của stage đi kèm với danh sách câu lệnh
  • Các biến môi trường cần sử dụng cho toàn bộ các công việc hoặc từng job (nếu có)
  • Các tập tin cần thiết từ các repository khác cần được thêm (nếu có)
  • Docker image cần sử dụng cho các job (nếu có)
  • Danh sách các câu lệnh cần được thực thi trước và sau khi thực thi job (nếu có)
  • Tag dùng để chỉ định runner nào được chọn để thực thi job (nếu có)
Ví dụ:
gitlab-ci template
Nội dung cơ bản của file “.gitlab-ci.yml”

 

gitlab pipeline
Pipeline từ file .gitlab-ci.yml

stages: các bước cần thực hiện #

Từ khóa này đực sử dụng để khai báo và thứ tự các bước (stage) mà pipeline của người dùng sẽ có. Nếu như không được khai báo trong file gitlab-ci.yaml, pipeline của người dùng sẽ bao gồm các stage mặc định của Gitlab:
– .pre
– build
– test
– deploy
– .post

 

Người dùng có thể tự khai báo các stage với cách đặt tên và thứ tự các stage theo nhu cầu của mình, không yêu cầu phải giống như cấu hình mặc định của Gitlab. Ví dụ:
stages:
 - linter
 - unit-test
 - build-image
 - deploy-service

 

Các stage sẽ được thực thi 1 cách tuần tự, từ trên xuống dưới. Khi stage đầu tiên thực thi “thành công” các job của mình thì stage tiếp theo sẽ bắt đầu xử lý các job cả mình. Quá trình này sẽ do người dùng quy định dựa vào cách liệt kê và sắp xếp các stage.
gitlab-ci-stage
1 stage có thể bao gồm nhiều job

 

Một stage sẽ có thể bao gồm nhiều job khác nhau, nhưng 1 job thì chỉ thuộc 1 stage. Những job nào không khai báo “stage” thì sẽ mặc định được cấu hình thuộc stage “test”. Các job thuộc cùng 1 stage sẽ được xử lý đồng thời (parallel) tùy theo số lượng runner hiện có của repo.

 

job: các công việc cần thực hiện của từng stage #

Các job sẽ được người dùng khai báo bằng cách đặt tên không trùng với các từ khóa mặc định của Gitlab-CI (default, stages, variables,…). Nội dung của 1 job sẽ cơ bản bao gồm:
– stage: tên của stage mà job thuộc về. Nếu không khai báo thì mặc định job sẽ thuộc về stage “test”
– script: danh sách các câu lệnh mà job sẽ thực hiện
– image: Docker image được sử dụng cho job (chỉ áp dụng đối với executor là Docker)
– variables: danh sách các biến môi trường của job (tùy chọn – không bắt buộc)
– tags: danh sách các tag dùng để chỉ định runner nào sẽ thực thi job

 

Ví dụ:
unit-test-job:        # Job có tên là unit-test-job
  stage: test         # Thuộc stage "test"
  image: python:3.6   # Docker image sử dụng để thực thi job (chỉ áp dụng đối với executor là Docker)
  tags:               # Những runner được đánh tag thuộc danh sách đã liệt kê sẽ thực thi job
    - testing
    - python
  script:             # Danh sách câu lệnh mà job này sẽ thực hiện
    - command test 1
    - command test n

script: các câu lệnh job sẽ thực thi #

Từ khóa này được khai báo bên trong từng job và sử dụng để liệt kê danh sách các câu lệnh cần được thực thi của các job. Mỗi job sẽ cần được khai báo cách “script” để executor có thể thực hiện.

stage: khai báo job thuộc stage được chỉ định (tùy chọn) #

Từ khóa này được sử dụng bên trong các job để khai báo job sẽ thuộc một stage trong danh sách đã khai báo trước đó. Nếu như danh sách stage khác với cấu hình mặc định của Gitlab, bạn cần thêm trường này để xác định rõ job sẽ thuộc stage nào trong pipeline. Nếu không được định nghĩa, job sẽ mặc định thuộc stage “test”.

image: chỉ áp dụng khi executor là docker (tùy chọn) #

Từ khóa này được sử dụng để khai báo Docker image mặc định sử dụng cho toàn bộ các job hoặc chỉ sử dụng cho 1 job cụ thể nếu “executor” của runner là docker.

gitlab-ci

tags: dùng để chọn runner xử lý job (tùy chọn) #

Khi sử dụng từ khóa này, người dùng có thể chỉ định được runner nào sẽ nhận và xử lý job bằng các liệt ê các tag tương ứng. Mặc định chỉ những runner được đánh tag cùng tên với danh sách đã liệt kê sẽ có quyền xử lý job, những runner còn lại nếu chưa được đánh tag sẽ “hầu như” không được nhận job. Cách đặt tên tag là do người dùng quyết định.

variables: biến môi trường (tùy chọn) #

Từ khóa này được sử dụng để khai báo các biến môi trường được sử dụng toàn bộ các job hoặc cho từng job cụ thể nếu được khai báo bên trong các job. Ví dụ:

gitlab-ci-variables
Cách khai báo biến môi trường trong file “.gitlab-ci.yml”

before_script: các câu lệnh job sẽ thực thi (tùy chọn) #

Từ khóa này được sử dụng để liệt kê danh sách các câu lệnh cần được thực thi trước khi vào các câu lệnh chính của job được thực hiện. Bạn có thể sử dụng từ khóa này để áp dụng cho toàn bộ các job nếu khai báo bên từ khóa này không thuộc bất kỳ job nào cả.

after_script: các câu lệnh job sẽ thực thi (tùy chọn) #

Từ khóa này được sử dụng để liệt kê danh sách câu lệnh cần được thực thi sau khi “script” bên trên đã thực thi xong. Bạn có thể sử dụng từ khóa này để tiến hành các câu lệnh mang tính chất “dọn dẹp” sau khi đã thực thi xong công việc để giải phóng tài nguyên của hệ thống được sinh ra trong quá trình thực thi “script”.

Nguồn tham khảo: Gitlab

Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở.

🌐Website: https://tel4vn.edu.vn/
🔗 Fanpage: https://www.facebook.com/tel4vn

🔗 Youtube: TEL4VN

🏠Địa chỉ: 82/2/9 Đinh Bộ Lĩnh, P.26, Q.Bình Thạnh, TP.HCM
☎️SĐT: 028 3622 0868
📩 Email: tuyensinh@tel4vn.com

Powered by BetterDocs

Để lại bình luậ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 *