Linux 上 Jenkins 与常见工具的集成实践
一 基础准备与插件体系
二 源码管理与自动触发
三 构建与制品管理 Docker 与 Kubernetes
四 部署与通知落地模式
五 示例 Jenkinsfile 多工具串联
pipeline {
agent any
environment {
IMAGE = "your-registry/your-app:${env.BUILD_NUMBER}"
REGISTRY = "https://your-registry"
CRED_ID = 'docker-reg-creds' // Docker Registry 凭据 ID
SSH_CRED = 'deploy-ssh-key' // SSH 凭据 ID
HOST = '10.0.0.10'
SERVICE = 'app'
}
stages {
stage('Checkout') {
steps { git branch: 'main', url: 'git@github.com:org/repo.git' }
}
stage('Build & Test') {
steps {
sh 'mvn -B -DskipTests clean package'
sh 'mvn test'
}
}
stage('Build & Push Image') {
steps {
script {
docker.build(IMAGE, ".")
docker.withRegistry(REGISTRY, CRED_ID) {
docker.image(IMAGE).push()
}
}
}
}
stage('Deploy via SSH') {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: SSH_CRED,
transfers: [
sshTransfer(
execCommand: """
set -e
docker pull ${IMAGE}
docker stop ${SERVICE} || true
docker rm ${SERVICE} || true
docker run -d --name ${SERVICE} -p 8080:8080 ${IMAGE}
"""
)
]
)
]
)
}
}
}
post {
success { echo 'Deploy succeeded.' }
failure { echo 'Deploy failed.' }
}
}
说明:上述流水线串联了 Git → Maven → Docker → Registry → SSH 部署,凭据通过 credentialsId 注入,便于在不同环境复用与审计。