Tự động triển khai dự án Spring Boot qua nền tảng CI/CD Coding

Triển khai một dự án Spring Boot từ nền tảng DevOps Coding sang máy chủ từ xa chỉ cần ba bước chính:

  • Biên dịch mã nguồn thành file JAR.
  • Sao chép file JAR lên máy chủ đích thông qua SCP.
  • Thực thi lệnh shell từ xa để khởi chạy ứng dụng.

Cơ chế tự động hóa trên Coding

Coding cung cấp giải pháp tích hợp liên tục (CI) dựa trên Jenkins, nhưng được đóng gói và tối ưu hóa cho trải nghiệm liền mạch. Mỗi lần build, hệ thống sẽ tạo ra một máy ảo (CVM), cài đặt Jenkins bên trong và thực thi pipeline — giống như cách triển khai thủ công trên server vật lý.

Hai phương pháp triển khai phổ biến

1. Triển khai truyền thống với Jenkins

Yêu cầu cài đặt các công cụ sau trên server:

Công cụMục đích
JenkinsQuản lý quy trình CI/CD
GitQuản lý phiên bản mã nguồn
MavenXây dựng dự án Java
JDKMôi trường chạy ứng dụng Java

Jenkins có thể sử dụng SSH để điều khiển server từ xa mà không cần cài đặt trực tiếp trên đó. Tuy nhiên, cấu hình ban đầu khá phức tạp: cần khai báo đường dẫn JDK, Maven, repository Git... Một sai sót nhỏ cũng có thể khiến toàn bộ pipeline thất bại.

2. Triển khai hiện đại với Coding CI

Coding CI hỗ trợ ba loại môi trường build:

  • Mặc định: Chạy trên máy ảo do Coding cung cấp.
  • Docker: Chạy trong container từ image tùy chọn.
  • Dockerfile: Xây dựng container từ Dockerfile trong repo.

Chuẩn bị kết nối SSH đến server

Trên server đích, tạo cặp khóa SSH:

ssh-keygen -m PEM -t rsa -b 4096 -C "your.email@example.com"

Khóa công khai (id_rsa.pub) cần được thêm vào ~/.ssh/authorized_keys. Khóa riêng tư (id_rsa) sẽ được lưu trong phần "Quản lý xác thực" của Coding dưới dạng凭据私钥.

Viết Pipeline triển khai

Dưới đây là ví dụ pipeline triển khai dự án Spring Boot:

pipeline {
  agent any
  stages {
    stage('Lấy mã nguồn') {
      steps {
        checkout([
          $class: 'GitSCM',
          branches: [[name: env.GIT_BUILD_REF]],
          userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
        ])
      }
    }

    stage('Build') {
      steps {
        dir('user-authority') {
          sh 'mvn -T 1C clean package -DskipTests -s ./settings.xml'
        }
        archiveArtifacts(artifacts: '**/target/*.jar', fingerprint: true)
      }
    }

    stage('Triển khai') {
      steps {
        script {
          def server = [
            name: 'prod-server',
            host: '121.36.19.189',
            port: 22,
            user: 'root',
            allowAnyHosts: true
          ]

          withCredentials([sshUserPrivateKey(credentialsId: "your-credential-id", keyFileVariable: 'SSH_KEY')]) {
            server.identityFile = SSH_KEY

            sshPut remote: server, from: 'user-authority/target/user-authority-0.0.1-SNAPSHOT.jar', into: '/opt/app/'
            sshCommand remote: server, command: 'cd /opt/app && java -jar user-authority-0.0.1-SNAPSHOT.jar &'
          }
        }
      }
    }
  }
}

Xử lý phụ thuộc Maven từ kho nội bộ

Nếu dự án cần tải dependency từ Nexus/Maven私服, hãy đặt file settings.xml đã cấu hình vào thư mục gốc dự án và gọi lệnh build kèm tùy chọn:

mvn -T 1C clean package -DskipTests -s ./settings.xml

Kích hoạt build tự động

Coding hỗ trợ trigger build theo nhiều điều kiện: push code, pull request, hoặc cron schedule. Cấu hình này giúp triển khai ứng dụng tự động mỗi khi có thay đổi mã nguồn.

Thẻ: SpringBoot CodingCI Jenkins pipeline DevOps

Đăng vào ngày 14 tháng 6 lúc 08:00