0

Hướng dẫn Setup Jenkins cho hệ thống Monolith - Bài 5: Kết nối Jenkins với Git/GitHub/GitLab và quản lý SSH Keys bảo mật

Đối với hệ thống Monolith, mã nguồn thường nằm tập trung ở một repository lớn (GitHub, GitLab, hoặc Bitbucket nội bộ). Để Jenkins có thể "gọi" và kéo (git clone/git pull) code về build mà không gặp rào cản bảo mật hay lộ mật khẩu, chúng ta phải sử dụng cơ chế xác thực bằng SSH Keys và Webhook.

1. Bản chất của việc kết nối Git với Jenkins

  • Xác thực an toàn: Thay vì dùng tài khoản mật khẩu thông thường (vốn dễ lộ và GitHub/GitLab hiện tại đã bỏ hỗ trợ password authentication cho Git CLI), chúng ta dùng cặp khóa SSH Key (Public & Private Key).

  • Tự động hóa qua Webhook: Giúp Jenkins nhận tín hiệu ngay lập tức (real-time) mỗi khi có lệnh git push lên nhánh main hoặc develop, thay vì phải cấu hình hẹn giờ (Poll SCM) gây tốn tài nguyên.

2. Các bước thiết lập kết nối SSH Key từ Jenkins đến Git

Bước 1: Tạo cặp khóa SSH trên Jenkins Server

Đăng nhập vào máy chủ Linux (hoặc vào thẳng container Jenkins nếu cần) và sinh cặp khóa SSH:

Bash

ssh-keygen -t rsa -b 4096 -C "jenkins-monolith-bot@yourcompany.com"

  • Nhấn Enter cho đến hết (không cần nhập passphrase để Jenkins có thể tự động đọc khóa ngầm).

  • Thao tác này sẽ tạo ra 2 file tại thư mục ~/.ssh/:

    • id_rsa: Private Key (sẽ đưa vào Jenkins Credentials).

    • id_rsa.pub: Public Key (sẽ dán vào cài đặt của GitHub/GitLab).

Bước 2: Thêm Public Key vào Git Repository

  1. Copy nội dung của file id_rsa.pub:

    Bash

    cat ~/.ssh/id_rsa.pub
    
    
  2. Truy cập vào kho chứa mã nguồn Monolith trên GitHub hoặc GitLab:

    • Vào Settings -> Deploy Keys (hoặc Access Keys trên GitLab).

    • Bấm Add deploy key, đặt tiêu đề (ví dụ: Jenkins Monolith Server), dán đoạn Public Key vào.

    • Lưu ý quan trọng: Hãy tích chọn ô Allow write access nếu dự án của bạn cần Jenkins tự động push ngược lại code (ví dụ: tự động tăng version, commit changelog). Sau đó bấm Add key.

Bước 3: Lưu trữ Private Key vào Jenkins Credentials Store

  1. Lấy nội dung của file Private Key (id_rsa):

    Bash

    cat ~/.ssh/id_rsa
    
    
  2. Trên giao diện Jenkins, vào Dashboard -> Credentials -> System -> Global credentials (unrestricted) -> Bấm Add Credentials.

  3. Điền thông tin cấu hình:

    • Kind: Chọn SSH Username with private key.

    • ID: Đặt mã định danh dễ nhớ (ví dụ: jenkins-git-ssh-key).

    • Username: Điền git hoặc tên tài khoản quản lý.

    • Private Key: Chọn Enter directly, bấm Add và dán toàn bộ nội dung file id_rsa vào.

    • Bấm Create.

3. Kiểm tra kết nối thông qua một Jenkins Job thử nghiệm

Để đảm bảo Jenkins đã "bắt tay" thành công với Git:

  1. Tạo một Job mới dạng Freestyle project hoặc Pipeline với tên test-git-connection.

  2. Trong phần cấu hình Pipeline/Source Code Management, chọn Git, điền đường dẫn SSH của kho chứa Monolith (ví dụ: git@github.com:your-org/monolith-app.git).

  3. Tại mục Credentials, chọn đúng jenkins-git-ssh-key vừa tạo ở Bước 3.

  4. Thử bấm Build Now và kiểm tra Console Output. Nếu log hiển thị quá trình Cloning repository... thành công mà không báo lỗi Permission Denied, nghĩa là bạn đã thiết lập hoàn tất!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí