Xem thêm:
- Phần 1: Giới thiệu tổng quan về Gitlab Runner
- Phần 2: Các loại Runner Executor trong Gitlab CI
- Phần 3: Hướng dẫn cài đặt Gitlab Runner trên Ubuntu
- Phần 3: Hướng dẫn cài đặt Gitlab Runner trên Centos
- Phần 3: Hướng dẫn cài đặt Gitlab Runner trên Windows
- Phần 3: Hướng dẫn cài đặt Gitlab Runner trên macOS
- Phần 5: Tạo Docker image với Gitlab Runner
- Phần 6: Deploy AWS Lambda với Gitlab-CI và Serverless Framework
- Phần 7: Lưu trữ Terraform state trên Gitlab
Để 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ó)
stages: các bước cần thực hiện #
stages:
- linter
- unit-test
- build-image
- deploy-service
job: các công việc cần thực hiện của từng stage #
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.
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ụ:
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/ |