Giới Thiệu
- Trong bài viết này, tôi sẽ chia sẻ quá trình thiết lập CI/CD (Continuous Integration/Continuous Deployment) cho blog cá nhân của mình. Việc tự động hóa quá trình kiểm thử và triển khai giúp tôi tiết kiệm thời gian, giảm thiểu lỗi thủ công và duy trì chất lượng blog một cách ổn định.
- Nếu bạn cũng đang quản lý một blog hoặc website nhỏ, đây có thể là một giải pháp CI/CD dễ dàng áp dụng.
1. Lợi Ích khi triển khai ci/cd tự động:
- Tiết kiệm thời gian: Quá trình cập nhật và triển khai diễn ra tự động.
- Giảm thiểu lỗi: Mỗi lần cập nhật sẽ được kiểm thử trước khi lên sản phẩm.
- Dễ dàng mở rộng: Nếu cần thêm tính năng hoặc thay đổi, chỉ cần cập nhật mã nguồn.
2. công cụ sử dụng:
- GitLab CI/CD: Quản lý và thiết lập pipeline tự động cho mã nguồn.
- VPS và Nginx: Máy chủ(mình dùng ubuntu) để lưu trữ blog và cấu hình Nginx làm web server.
- Docker (tùy chọn): Đóng gói ứng dụng vào container để dễ dàng triển khai và quản lý.
Quy Trình Thiết Lập CI/CD
1. Sơ Đồ
2. Cấu Hình Pipeline Trên GitLab ci
Tôi tạo một file .gitlab-ci.yml trong repository của mình để thiết lập pipeline CI/CD. File này bao gồm:
Stage build: Đóng gói dự án thành docker container rồi push lên docker hub.
- Đóng gói dự án thành docker image
- Push image lên docker hub
build:
stage: build
image: docker:25.0.3
services:
- docker:25.0.3-dind
before_script:
- echo "$CI_REGISTRY_PASS" | docker login -u "$CI_REGISTRY_USER" --password-stdin
- echo "ENV_VARABLE=$ENV_VARABLE" >> .env
script:
- echo "Start building source code..."
- docker build -t $REGISTRY/$IMAGE_NAME:$IMAGE_TAG . # build docker image
- docker push $REGISTRY/$IMAGE_NAME:$IMAGE_TAG # push docker image lên docker hub
- echo "Complete build source code..."
Stage deploy: pull container từ docker hub về rồi chạy bằng docker compose.
- Access to server using gitlab runner
- Dừng docker image hiện tại
- Pull docker image mới từ docker hub
- Start New docker image
deploy:
stage: deploy
needs: [build]
before_script:
- echo "$CI_REGISTRY_PASS" | docker login -u "$CI_REGISTRY_USER" --password-stdin
script:
- echo "Start deploy source code..."
- cd <project path>
- docker compose stop interface $ALIAS dừng container đang chạy
- docker compose rm -f $ALIAS # xoá image liên quan
- docker compose pull $ALIAS # pull image từ docker hub
- docker compose up -d $ALIAS # chạy container
- echo "End deploy source code..."
only:
- main
tags:
- <project runner tag name>
Kết Luận
- Với cấu hình CI/CD này, tôi có thể cập nhật nhanh chóng chỉ với một lần push lên repository.
- Mỗi lần thay đổi sẽ được kiểm thử và triển khai tự động, giúp tôi duy trì một blog ổn định mà không tốn nhiều công sức.
- Thiết lập CI/CD cho blog cá nhân là một bước nhỏ nhưng mang lại nhiều lợi ích lâu dài. Nó không chỉ giúp tối ưu hóa quy trình làm việc mà còn là cơ hội để học hỏi và áp dụng các công cụ DevOps vào thực tế.
- Tôi hy vọng bài viết này sẽ hữu ích cho bạn trong quá trình triển khai CI/CD cho các dự án của mình!