1. 准备工作:安装Jenkins及依赖 在Linux系统(如CentOS、Ubuntu)上,首先需要安装Jenkins及运行所需的依赖。以CentOS为例,步骤如下:
sudo yum update -y && sudo yum install -y java-1.8.0-openjdk-devel wget
。sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo && sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
。sudo yum install -y jenkins
。sudo systemctl start jenkins && sudo systemctl enable jenkins
。http://<服务器IP>:8080
,通过/var/lib/jenkins/secrets/initialAdminPassword
获取初始密码登录,完成管理员账号设置及推荐插件安装(如Git、Maven、Pipeline等)。2. 配置Jenkins全局工具与环境 为了让Jenkins识别项目所需的工具(如Java、Maven、Git),需进入“系统管理→全局工具配置”进行设置:
/usr/lib/jvm/java-1.8.0-openjdk
)。/opt/maven
),并配置MAVEN_HOME
环境变量。/usr/bin/git
),确保Jenkins能拉取代码。3. 创建Jenkins任务
登录Jenkins后,点击“新建任务”,输入任务名称(如my-app-build
),选择任务类型:
mvn clean package
)。Jenkinsfile
(代码库中的流水线定义文件),后续会详细说明。4. 编写Pipeline脚本(核心流程)
Pipeline是Jenkins实现自动化构建的关键,通过Jenkinsfile
(声明式或脚本式语法)定义构建、测试、部署流程。以下是一个Java项目的典型示例:
pipeline {
agent any // 使用任意可用节点执行
environment {
MAVEN_OPTS = "-Dmaven.repo.local=${env.WORKSPACE}/.m2" // 配置Maven本地仓库路径
DEPLOY_ENV = 'staging' // 默认部署环境
}
stages {
stage('Checkout') { // 拉取代码
steps {
git branch: 'main', url: 'https://github.com/user/repo.git' // 关联Git仓库
}
}
stage('Build') { // 编译打包
steps {
sh 'mvn -B clean package' // 使用Maven编译并打包
archiveArtifacts 'target/*.jar' // 归档构建产物(如JAR文件)
}
}
stage('Test') { // 运行测试
parallel { // 并行执行单元测试与集成测试,提升效率
stage('Unit Test') {
steps {
junit '**/target/surefire-reports/*.xml' // 生成JUnit测试报告
}
}
stage('Integration Test') {
steps {
sh 'mvn verify -DskipUnitTests' // 执行集成测试(跳过单元测试)
}
}
}
}
stage('Deploy') { // 部署到测试环境
when { // 条件触发:仅当分支为develop或手动触发时部署
branch 'develop'
}
steps {
sshagent(['staging-key']) { // 使用SSH密钥认证
sh 'scp target/*.jar user@staging-server:/opt/app' // 将制品复制到测试服务器
}
}
}
}
post { // 构建后操作
always { // 无论成功失败都执行
cleanWs() // 清理工作空间
}
success { // 构建成功时发送通知
echo 'Build succeeded!'
}
failure { // 构建失败时发送通知
emailext body: 'Build failed: ${BUILD_URL}', subject: 'Jenkins Build Failed'
}
}
}
将Jenkinsfile
提交到代码库(如Git),Jenkins可通过Pipeline插件读取并执行。
5. 配置自动化触发 实现“代码提交即构建”的核心步骤,常见触发方式:
http://<服务器IP>:8080/github-webhook/
),当代码推送到指定分支时,Git会自动向Jenkins发送请求触发构建。H/5 * * * *
表示每5分钟检查一次代码变更并触发构建)。6. 优化与扩展:提升自动化效率
-v /path/to/local/repo:/root/.m2
),避免重复下载依赖,提升构建速度。mvn package -pl :module1 -am
),仅构建修改的模块。docker.build("myapp:${env.BUILD_ID}")
→docker.withRegistry('https://registry.hub.docker.com', 'dockerhub-credentials') { image.push() }
→sh 'kubectl set image deployment/myapp myapp=myapp:${env.BUILD_ID}'
)。