1. 环境准备:安装Java与Jenkins Jenkins依赖Java环境(推荐OpenJDK 11+),首先通过Linux包管理器安装Java:
sudo apt update && sudo apt install openjdk-11-jdk -ysudo yum install java-11-openjdk java-11-openjdk-devel -yjava -version(需显示Java版本信息)。添加Jenkins官方仓库并安装:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc,添加仓库echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list,然后sudo apt update && sudo apt install jenkins -y;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 jenkins -y。启动Jenkins并设置开机自启:sudo systemctl start jenkins && sudo systemctl enable jenkins。
2. 初始配置:解锁与插件安装
首次访问http://<服务器IP>:8080,通过sudo cat /var/lib/jenkins/secrets/initialAdminPassword获取初始密码并输入。选择“Install suggested plugins”安装推荐插件(含Git、Pipeline、SSH等核心插件),完成后创建管理员用户。
3. 创建自动化任务:Freestyle或Pipeline
Freestyle项目(适合简单流程):
点击“New Item”→ 输入任务名称→ 选择“Freestyle project”→ 配置:
https://github.com/user/repo.git)及认证信息(凭据ID需提前在“Manage Credentials”中添加);H/5 * * * *表示每5分钟检查一次)或“GitHub hook trigger for GITScm polling”(配合Webhook实现代码推送触发);mvn clean package(编译打包)。Pipeline项目(适合复杂流程,推荐):
点击“New Item”→ 输入任务名称→ 选择“Pipeline”→ 配置:
Jenkinsfile,需与代码仓库中的文件名一致)。4. 编写Jenkinsfile:定义自动化流程 Jenkinsfile是Pipeline的核心,采用声明式语法定义构建、测试、部署流程。示例如下:
pipeline {
agent any // 使用任意可用节点
environment {
MAVEN_OPTS = "-Dmaven.repo.local=${env.WORKSPACE}/.m2" // 配置Maven本地仓库缓存
DEPLOY_ENV = 'dev' // 默认部署环境
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/user/repo.git' // 拉取代码
}
}
stage('Build') {
steps {
sh 'mvn -B clean package' // Maven编译打包
}
}
stage('Test') {
parallel {
stage('Unit Test') {
steps {
junit '**/target/surefire-reports/*.xml' // 单元测试报告
}
}
stage('Integration Test') {
steps {
sh 'mvn verify -DskipUnitTests' // 集成测试
}
}
}
}
stage('Deploy') {
when {
expression { params.DEPLOY_ENV != 'prod' } // 非生产环境才部署
}
steps {
sshPublisher( // SSH远程执行部署脚本
publishers: [
sshTransfer(
execCommand: "/opt/deploy.sh ${params.DEPLOY_ENV}",
sourceFile: 'target/*.jar' // 部署的文件
)
]
)
}
}
}
parameters {
choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'prod'], description: '选择部署环境') // 参数化部署环境
}
}
该流水线实现了代码拉取、并行测试、参数化部署等关键步骤,可根据项目需求调整。
5. 触发自动化构建:Webhook与定时任务
Webhook触发(实时触发):
在Git平台(如GitHub、GitLab)配置Webhook,URL为http://<Jenkins服务器IP>:8080/github-webhook/(GitHub)或http://<Jenkins服务器IP>:8080/gitlab-webhook/(GitLab),事件选择“Push”(代码推送时触发)。Jenkins需安装对应插件(如“GitHub Integration”“GitLab Plugin”)并配置Webhook URL。
定时触发(周期性构建):
在Freestyle项目的“构建触发器”中选择“Poll SCM”,设置cron表达式(如H/10 * * * *表示每10分钟检查一次代码变更,若有变更则触发构建)。
6. 优化与安全:提升自动化效率
withCredentials加密引用,例如:stage('Deploy') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: 'ssh-key', keyFileVariable: 'SSH_KEY')]) {
sh 'scp -i $SSH_KEY target/*.jar user@remote-server:/opt/app/'
}
}
}
避免敏感信息泄露。-v /path/to/local/repo:/root/.m2挂载宿主机目录到Jenkins容器),减少重复下载依赖的时间;结合Git commit hash实现增量构建(如mvn package -pl :module1 -am仅构建修改的模块),提升构建速度。