如何在Linux用Jenkins自动化
一、前置准备:安装Java环境
Jenkins是基于Java的应用程序,需先安装JDK(推荐OpenJDK 8/11)。以CentOS为例,执行以下命令:
sudo yum update -y
sudo yum install -y java-11-openjdk-devel # Ubuntu/Debian用sudo apt install -y openjdk-11-jdk
java -version # 验证安装(需显示Java版本信息)
配置Java环境变量(若未自动配置):
vim /etc/profile
添加以下内容(根据实际JDK路径调整):
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 替换为实际路径
export PATH=$JAVA_HOME/bin:$PATH
保存后使配置生效:
source /etc/profile
二、安装Jenkins
1. 添加Jenkins官方仓库
以CentOS为例,执行以下命令添加Jenkins仓库:
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
Ubuntu/Debian用户需先导入GPG密钥并添加仓库:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ >
/etc/apt/sources.list.d/jenkins.list'
2. 安装并启动Jenkins
使用包管理器安装Jenkins(CentOS用yum
,Ubuntu用apt
):
sudo yum install -y jenkins # CentOS
# 或 sudo apt update &
&
sudo apt install -y jenkins # Ubuntu/Debian
启动Jenkins服务并设置开机自启:
sudo systemctl start jenkins
sudo systemctl enable jenkins
验证Jenkins服务状态:
sudo systemctl status jenkins # 应显示“active (running)”
三、配置Jenkins
1. 初始访问与设置
打开浏览器,访问http://<
服务器IP>
:8080
(若为本地测试,用localhost:8080
)。首次访问需输入管理员密码,从以下路径获取:
cat /var/lib/jenkins/secrets/initialAdminPassword
输入密码后,按照提示完成插件安装(推荐选择“安装推荐插件”)和管理员账户创建。
2. 安装必要插件
进入Manage Jenkins
>
Manage Plugins
,切换至“Available”标签,搜索并安装以下核心插件:
- Git Plugin:用于从Git仓库拉取代码;
- Pipeline:支持流水线自动化(可选但推荐);
- Maven Integration(Java项目必备)或Gradle Plugin(Gradle项目);
- Docker Plugin(若需用Docker构建/部署);
- Email Extension(用于构建通知)。
安装完成后重启Jenkins使插件生效。
3. 配置全局工具
进入Manage Jenkins
>
Global Tool Configuration
,配置以下工具路径(若未自动检测):
- JDK:指定JDK安装路径(如
/usr/lib/jvm/java-11-openjdk-amd64
); - Git:指定Git安装路径(如
/usr/bin/git
); - Maven:指定Maven安装路径(如
/usr/share/maven
,若未安装需先通过yum/apt
安装)。
四、创建自动化任务
1. 新建任务
进入Jenkins主页,点击New Item
,输入任务名称(如my-app-build
),选择任务类型:
- Freestyle Project:适合简单构建流程(如编译、打包);
- Pipeline:适合复杂流水线(如多阶段构建、测试、部署),需编写
Jenkinsfile
。
2. 配置Freestyle任务(以Java项目为例)
源码管理
选择Git
,输入代码仓库URL(如https://github.com/username/repo.git
)和分支(如main
)。若仓库需要认证,点击“Add”添加Credentials(如SSH密钥或账号密码)。
构建触发器
配置自动触发构建的方式:
- 定时触发:如
H/5 * * * *
(每5分钟检查一次代码变更); - 代码提交触发:勾选“Poll SCM”,输入与定时触发相同的格式(如
H/5 * * * *
),或配置Git Webhook(需在仓库管理界面设置,指向http://< Jenkins服务器IP> :8080/job/my-app-build/build?token=TOKEN_NAME
)。
构建步骤
添加构建步骤(根据项目需求选择):
- 执行Shell(适用于Linux环境):输入编译、测试、打包命令,如:
mvn clean package # Maven项目 # 或 ./gradlew build # Gradle项目
- Invoke top-level Maven targets(适用于Maven项目):选择Maven版本,输入目标(如
clean package
)。
构建后操作
配置构建成功后的操作:
- Archive the artifacts:归档构建产物(如
target/*.jar
),便于后续下载; - Send build notifications:发送邮件或消息通知(需提前配置Email Extension插件);
- Deploy to server:通过SSH或Docker插件将构建产物部署到目标服务器。
五、高级配置:Pipeline流水线
若需更灵活的自动化流程(如多阶段构建、条件判断),建议使用Pipeline。
1. 创建Pipeline任务
新建任务时选择Pipeline
类型,配置任务名称后,可选择“Pipeline script”(直接编写脚本)或“Pipeline script from SCM”(从代码仓库读取Jenkinsfile
)。
2. 编写Jenkinsfile示例
在项目根目录创建Jenkinsfile
(以Declarative Pipeline为例),定义构建、测试、部署流程:
pipeline {
agent any // 使用任意可用节点
tools {
maven 'maven-3.8.6' // 引用全局工具配置中的Maven
jdk 'jdk-11' // 引用全局工具配置中的JDK
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/username/repo.git' // 拉取代码
}
}
stage('Build') {
steps {
sh 'mvn clean package' // 编译打包
}
}
stage('Test') {
steps {
sh 'mvn test' // 运行测试
}
post {
always {
junit '**/target/surefire-reports/*.xml' // 发布测试报告
}
}
}
stage('Deploy') {
steps {
sh 'scp target/*.jar user@server:/opt/app/' // 部署到服务器(需配置SSH免密)
sh 'ssh user@server "systemctl restart my-app.service"' # 重启服务
}
}
}
post {
success {
emailext body: 'Build succeeded!', subject: 'Jenkins Build Success', to: 'dev-team@example.com' // 发送成功通知
}
failure {
emailext body: 'Build failed!', subject: 'Jenkins Build Failure', to: 'dev-team@example.com' // 发送失败通知
}
}
}
保存后点击“Build Now”,Jenkins将按照流水线步骤自动执行。
六、常见问题排查
- 无法访问Jenkins:检查防火墙是否开放8080端口(
sudo firewall-cmd --add-port=8080/tcp --permanent & & sudo firewall-cmd --reload
); - Java环境错误:确认
JAVA_HOME
配置正确,且java -version
能正确显示版本; - 插件安装失败:检查网络连接(Jenkins插件仓库需访问外网),或尝试离线安装(下载
.hpi
文件后通过Manage Plugins
>Advanced
上传)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Linux用Jenkins自动化
本文地址: https://pptw.com/jishu/716045.html