Cách thức tổ chức mã nguồn và quá trình build ảnh docker

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801 (Trang 58 - 63)

4.1 Cài đặt

4.1.2 Cách thức tổ chức mã nguồn và quá trình build ảnh docker

Mã nguồn của của các vi dịch vụ nêu trên được tổ chức trên kho quản lý mã

gitlab như sau (Hình 4.3):

Hình 4.3: Cách tổ chức mã nguồn

Tầng tiếp theo là thư mục java, resources, … để chứa mã nguồn và các tài nguyên khác của ứng dụng.

• Tạo thư mục docker-build ở cùng mức với thư mục mã nguồn src, chứa

Dockerfile dùng để build ảnh docker, các tệp script để sử dụng như tài nguyên cho ảnh. Ngồi ra, các script để tự động hóa q trình build và đẩy ảnh lên kho chứa ảnh cũng được đặt trong thư mục này.

Để có tồn quyền cấu hình, luận văn cài đặt hệ thống quản lý mã Gitlab và máy

chủ CI Jenkins như các ứng dụng nội bộ. Jenkins cần sử dụng các plugin để cung cấp các chức năng tự động hóa cụ thể. Trong bài, scm-plugin được sử dụng để tải mã từ

gitlab về máy chủ Jenkins và gitlab-plugin sẽ được sử dụng để giúp Jenkins nhận được thông báo về các sự kiện thay đổi mã trên Gitlab, từ đó kích hoạt q trình build và

cập nhật kết qủa lên chính commit đã kích hoạt đó.

Hình 4.5: Cấu hình Gitlab plugin trên Jenkins cho tiền hợp nhất

Có hai q trình build được sử dụng trong luồng triển khai được cài đặt: build

tiền hợp nhất và build hậu hợp nhất.

Build tiền hợp nhất (premerge-build) được kích hoạt khi nhà phát triển gửi yêu

cầu hợp nhất vào nhánh chính trên gitlab. Gitlab sẽ được cấu hình để gửi sự kiện tới Jenkins khi yêu cầu hợp nhất được tạo ra (Open Merge Request Event) thơng qua web hook, cịn Jenkins sẽ được cấu hình để chỉ lắng nghe sự kiện này, từ đó tải mã mới về máy, chạy shell script để thực hiện q trình build. Các bài kiểm thử, phân tích tĩnh có thể được sử dụng trong q trình build này. Tuy nhiên, để đơn giản hoá hệ thống nhằm mục đích đánh giá thiết kế, luận văn chỉ sử dụng lệnh build đơn giản của Maven trong bước này.

Build hậu hợp nhất (postmerge-build) được kích hoạt khi yêu cầu hợp nhất được

chấp nhận. Khi yêu cầu hợp nhất từ nhánh nguồn tới nhánh đích được phê duyệt,

Gitlab sẽ tạo ra một sự kiện đẩy mã lên nhánh đích (Push Event). Gitlab sẽ được cấu hình để gửi sự kiện này tới Jenkins như bước tiền hợp nhất. Quá trình build trên

Jenkins được thực hiện bằng việc sử dụng shell script. Đồng thời trong bước này,

Jenkins sẽ sử dụng các script được cung cấp trong chính thư mục mã nguồn của vi

Hình 4.6 Trạng thái build tiền hợp nhất được cập nhật theo thời gian thực trên Gitlab

Hình 4.7: Build tiền hợp nhất chạy thành cơng

Slack được sử dụng trong luận văn như kênh giao tiếp chính. Slack-plugin được cài đặt trong Jenkins để gửi thông báo tới Slack dựa vào trạng thái của quá trình build (Hình 4.8). Tất cả trạng thái của các quá trình build này sẽ được cập nhật trực tiếp lên Gitlab, cung cấp thông tin trực quan cho nhà phát triển.

Hình 4.8: Thơng báo từ Jenkins tới Slack

Sau khi build tiền hợp nhất thực hiện thành công, luận văn sử dụng API được

cung cấp bởi Jenkins để kích hoạt tiếp q trình triển khai, từ đó cập nhật ứng dụng

vào môi trường sản phẩm (production environment).

Hầu hết các tác vụ trong Jenkins đều được cấu hình thơng qua mã Groovy DSL một cách tự động. Điều này giúp cho việc cấu hình trở nên đơn giản, nhanh chóng và

quan trọng nhất là có thể kiểm thử được từ trước khi thực sự chạy (Hình 4.9)

Hình 4.10: Các tác vụ trong Jenkins

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801 (Trang 58 - 63)

Tải bản đầy đủ (PDF)

(83 trang)