在 CentOS 上落地 Jenkins 自动化的关键步骤
一 环境与基础安装
二 核心配置与插件
三 触发器与流水线设计
四 典型场景示例
示例一 Java + Maven(构建产物为 JAR,使用 SSH 发布到目标主机)
pipeline {
agent any
tools { maven 'Maven-3' jdk 'JDK-11' } // 与全局工具配置中的名称保持一致
environment {
APP_NAME = 'myapp'
ARTIFACT = "${APP_NAME}-*.jar"
REMOTE_HOST = 'deploy@192.168.10.20'
REMOTE_DIR = '/opt/apps'
JAR_PATH = "target/${ARTIFACT}"
}
stages {
stage('Checkout') { steps { git branch: 'main', url: 'git@github.com:org/repo.git' } }
stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } }
stage('Deploy') {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'prod-ssh', // 在系统配置中预先定义 SSH Server
transfers: [
sshTransfer(
sourceFiles: "${JAR_PATH}",
removePrefix: 'target',
remoteDirectory: REMOTE_DIR
)
],
execCommand: """
cd ${REMOTE_DIR}
pkill -f ${APP_NAME} || true
nohup java -jar ${ARTIFACT} > app.log 2>&1 &
"""
)
]
)
}
}
}
}
示例二 Node.js + Vue(前端构建与发布)
pipeline {
agent any
tools { nodejs 'NodeJS-18' }
environment {
APP_NAME = 'my-vue'
DIST_DIR = 'dist'
REMOTE_HOST = 'deploy@192.168.10.20'
REMOTE_DIR = '/var/www/my-vue'
}
stages {
stage('Checkout') { steps { git branch: 'main', url: 'git@github.com:org/repo.git' } }
stage('Install') { steps { sh 'npm ci --quiet' } }
stage('Build') { steps { sh 'npm run build -- --prod' } }
stage('Deploy') {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'prod-ssh',
transfers: [
sshTransfer(
sourceFiles: "${DIST_DIR}/**",
removePrefix: "${DIST_DIR}",
remoteDirectory: REMOTE_DIR
)
]
)
]
)
}
}
}
}
五 安全与运维要点