接上文適配pg數據庫之后需要進行部署,便有了此文
1.下載并安裝Jenkins如下:
https://mirrors.jenkins.io/war-stable/2.504.3/jenkins.war
nohup java -jar jenkins.war --httpPort=8080 &
啟動Jenkins并解鎖安裝需要的環境,git,mvn等如下:
2.配置多分支流水線并設置需要拉取的分支
憑據哪里是設置對應git的accessToken值,密碼會報錯128問題
3.配置項目的Jenkinsfile如下:
pipeline {
agent any
environment {// 多模塊配置ADMIN_PROJECT = 'xxl-job-admin'EXECUTOR_PROJECT = 'xxl-job-executor'VERSION = '2.5.0'REMOTE_DIR = '/data/workspace'
}stages {stage('Checkout') {steps {sh 'git clone https://mygit.cn/victorydeng/xxl-job.git'}}stage('Build') {steps {dir('xxl-job') { // 進入倉庫目錄sh 'mvn clean package -DskipTests'}}}stage('Prepare Artifacts') {steps {// 將構建產物復制到工作區根目錄以便傳輸sh '''mkdir -p target_artifacts && \cp xxl-job/xxl-job-admin/target/xxl-job-admin-${VERSION}.jar target_artifacts/ && \cp xxl-job/xxl-job-executor/target/xxl-job-executor-${VERSION}.jar target_artifacts/'''}}stage('Deploy') {steps {script {// 1. 傳輸文件并執行部署(合并為一個操作)sshPublisher(publishers: [sshPublisherDesc(configName: '204ssh',transfers: [// 傳輸admin模塊sshTransfer(sourceFiles: 'xxl-job/xxl-job-admin/target/xxl-job-admin-*.jar',removePrefix: 'xxl-job/xxl-job-admin/target',remoteDirectory: "${REMOTE_DIR}",execCommand: """echo '====== DEPLOYING ADMIN ======'cd ${REMOTE_DIR}ADMIN_PID=\$(ps -ef | grep xxl-job-admin | grep -v grep | awk '{print \$2}')[ -n "\$ADMIN_PID" ] && kill -9 \$ADMIN_PIDsleep 2nohup java -Xms512m -Xmx2g -jar xxl-job-admin-${VERSION}.jar \--spring.profiles.active=local > admin.log 2>&1 &echo 'Admin deployed with PID: \$(pgrep -f xxl-job-admin)'"""),// 傳輸executor模塊sshTransfer(sourceFiles: 'xxl-job/xxl-job-executor/target/xxl-job-executor-*.jar',removePrefix: 'xxl-job/xxl-job-executor/target',remoteDirectory: "${REMOTE_DIR}",execCommand: """echo '====== DEPLOYING EXECUTOR ======'cd ${REMOTE_DIR}EXEC_PID=\$(ps -ef | grep xxl-job-executor | grep -v grep | awk '{print \$2}')[ -n "\$EXEC_PID" ] && kill -9 \$EXEC_PIDsleep 2nohup java -Xms512m -Xmx12g -jar xxl-job-executor-${VERSION}.jar \--spring.profiles.active=local > executor.log 2>&1 &echo 'Executor deployed with PID: \$(pgrep -f xxl-job-executor)'""")],usePromotionTimestamp: false,useWorkspaceInPromotion: false,verbose: true)])}}}}post {always {cleanWs()}
}
}
其中的204ssh為如下在Jenkins管理配置的可以訪問的服務器名稱:
4.執行構建并在遠程服務器上部署如下:
查看對應日志:
去到部署加上可以看到已經有對應進程如下:
至此 完成可一個簡單版本的自動話部署吧!