Skip to main content

Hướng dẫn tích hợp CICD với dự án OTA

  • Tài khoản gitlab
  • Có kiến thức cơ bản về CICD, Docker

2. Giới thiệu

  • Trong một dự án bất kỳ, quy trình là thứ được đặt lên hàng đầu. Giúp cho mọi thứ đi đúng kế hoạch được vạch ra, bàn giao sản phẩm đúng tiến độ. Áp dụng CI/CD vào dự án sẽ giúp giảm thiểu tối đa nguyên nhân khách quan từ con người. Kiểm tra chất lượng code, giảm thời gian deploy, ....
  • Trong bài viết này, chúng ta sẽ hiểu hơn về cách sử dụng gitlab runner, gitlab container registry vào dự án như thế nào.

3. Nội dung chi tiết

3.1. Giải thích

  • Trong ví dụ này, mình sẽ đưa ra dự án chạy bằng wordpress php.

  • Dự án wordpress sẽ bao gồm 1 source wordpress, và nhiều source plugins, themes nhỏ. Mỗi source code plugin hay theme đều có một repository trên gitlab của mình. Vậy vấn đề được đặt ra:

    • Nếu như một ngày đẹp trời sếp mình muốn migrate wordpress từ hệ điều hành Ubuntu của nhà cung cấp A sang nhà cung cấp B thì sao ? Phải manual clone source từ gitlab về hệ điều hành mới ? Phải nhập lại những dòng lệnh tải chính xác wordpress version cũ về ?
    • Khi feature hoặc hotfix được test kỹ càng pass các testcase. Vậy bây giờ bạn dev tính năng, hotfix ấy phải làm gì tiếp theo ? Đợi team cùng meeting để thực thi việc cập nhật mã nguồn một cách thủ công ?
  • Những việc đó chỉ là số ít những thứ khiến cho dự án chậm tiến độ, mệt mỏi với những bên liên quan. Thậm chí sẽ gây ra những vấn đề nguy hiểm khi thao tác trực tiếp trên server mà dự án đang chạy live.

  • CI/CD sẽ handle tất cả chuyện đó, lập trình viên chỉ cần merge vào nhánh chạy demo hay production, chuyện còn lại sẽ do CI/CD của gitlab thực thi.

3.2. Cài đặt

  • Tạo một repository trên gitlab, là nơi chứa source chính. Ở đây source repo của mình chứa 2 files Dockerfile

  • File Dockerfile

    # Use the official WordPress image as a parent image
    FROM wordpress:6.5.5

    RUN apt-get update && apt-get install -y git php8.1 default-mysql-client libmagickwand-dev --no-install-recommends \
    && docker-php-ext-install pdo_mysql

    # Install Composer
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

    # Clone your plugin repository
    RUN git clone https://${USER}:${ACCESS_TOKEN}@gitlab.com/user/repo_A.git /var/www/html/wp-content/plugins/name_plugin_A
    RUN git clone https://${USER}:${ACCESS_TOKEN}@gitlab.com/user/repo_B.git /var/www/html/wp-content/plugins/name_plugin_B
    RUN git clone https://${USER}:${ACCESS_TOKEN}@gitlab.com/user/repo_C.git /var/www/html/wp-content/plugins/name_plugin_C
    RUN git clone https://${USER}:${ACCESS_TOKEN}@gitlab.com/user/repo_D.git /var/www/html/wp-content/themes/name_theme_D

    WORKDIR /var/www/html/wp-content/plugins/name_plugin_A
    RUN composer install

  • File .env sẽ chứa các key định nghĩa cho Dockerfile.

  • Đi vào trang repo của bạn, mở Deploy -> Container Registry -> Thực hiện theo các bước gitlab hướng dẫn.

  • Bạn lưu ý phải clone source chứa file Dockerfile và file .env mới chạy các câu lệnh của gitlab.

  • Sau khi build và đẩy image của bạn lên docker hub thành công. Bạn có thể chạy hoặc pull về ở những nơi khác.

  • Việc tiếp theo bạn sẽ viết một file gitlab cicd ở các project liên quan có trong file Dockerfile của repo chính. Bạn sẽ kiểm tra nhánh chạy script này khi merge code. Trong file script bạn định nghĩa công việc của chúng là thực hiện y chang theo các bước login -> build -> push image lên lại docker hub. Cuối cùng ta sẽ remote vào server và thực thi kill hết image, container liên quan và pull lại version mới nhất.

  • Để cài đặt dễ dàng cần hiểu được các khái niệm cơ bản.
  • Tài liệu này hướng dẫn cách cài đặt CI/CD vào dự án, mục tiêu giảm thiểu tác động chủ quan từ con người.

Hiện tại baì viết còn nhiều thiếu sót nếu có góp ý xin vui lòng điền vào form bên dưới