如何在CentOS上实现Jenkins自动化
一、环境准备
在CentOS上实现Jenkins自动化前,需完成以下基础准备:
- 系统更新:运行
sudo yum update -y
确保系统软件包为最新版本。 - 安装Java环境:Jenkins基于Java开发,推荐安装OpenJDK 11及以上版本(如
sudo yum install -y java-11-openjdk-devel
),安装后通过java -version
验证是否成功。 - 安装依赖工具:安装
wget
用于下载Jenkins仓库配置(sudo yum install -y wget
)。
二、安装Jenkins
1. 添加Jenkins官方仓库
通过以下命令添加Jenkins Red Hat Stable仓库并导入GPG密钥(确保软件包来源可信):
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
2. 安装Jenkins
使用YUM包管理器安装Jenkins(自动解决依赖):
sudo yum install -y jenkins
3. 启动与配置Jenkins服务
启动Jenkins服务并设置开机自启:
sudo systemctl start jenkins
sudo systemctl enable jenkins
通过sudo systemctl status jenkins
检查服务状态(显示“active (running)”即为成功)。
三、配置Jenkins
1. 获取初始密码
首次访问Jenkins需输入管理员初始密码,可通过以下命令获取:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
2. 访问Web界面
在浏览器中输入http://<
服务器IP>
:8080
,粘贴初始密码完成解锁。
3. 安装推荐插件
选择“安装推荐插件”(如Git、Maven、Pipeline等),覆盖常用功能;或进入“Manage Jenkins > Manage Plugins”手动安装所需插件(如Docker、Kubernetes等)。
4. 配置全局工具
进入“Manage Jenkins > Global Tool Configuration”,设置工具路径(如JDK、Maven、Git):
- JDK:指定安装路径(如
/usr/lib/jvm/java-11-openjdk
); - Maven:配置
MAVEN_HOME
(如/usr/share/maven
); - Git:填写Git安装路径(如
/usr/bin/git
)。
5. 配置防火墙
允许Jenkins端口(默认8080)通过防火墙:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
6. 创建管理员账户
完成初始配置后,创建管理员账户(设置用户名、密码、邮箱),替代默认的“admin”账户。
四、创建自动化任务
1. 新建任务
进入Jenkins主页,点击“New Item”,输入任务名称(如“my-app-ci”),选择任务类型:
- Freestyle Project:适用于简单构建流程(如编译、打包);
- Pipeline:适用于复杂流水线(如多阶段构建、部署),推荐使用。
2. 配置任务(以Pipeline为例)
(1)配置源码管理
选择“Git”,填写仓库URL(如https://github.com/user/repo.git
)和分支(如main
);若仓库为私有,需添加SSH密钥或账号密码作为凭证。
(2)配置构建触发器
- 代码提交触发:勾选“GitHub hook trigger for GITScm polling”(需在GitHub仓库中配置Webhook,指向
http://< 服务器IP> :8080/github-webhook/
); - 定时触发:使用Cron语法(如
H/5 * * * *
表示每5分钟触发一次)。
(3)配置Pipeline脚本
选择“Pipeline script from SCM”,指定SCM类型为“Git”,填写仓库URL和Jenkinsfile路径(如Jenkinsfile
,需存放在仓库根目录)。
(4)示例Jenkinsfile(声明式Pipeline)
pipeline {
agent any // 使用任意可用节点
stages {
stage(&
x27;
Checkout&
x27;
) {
steps {
git branch: &
x27;
main&
x27;
, url: &
x27;
https://github.com/user/repo.git&
x27;
// 拉取代码
}
}
stage(&
x27;
Build&
x27;
) {
steps {
sh &
x27;
mvn -B clean package&
x27;
// 使用Maven编译打包
}
}
stage(&
x27;
Test&
x27;
) {
steps {
junit &
x27;
**/target/surefire-reports/*.xml&
x27;
// 运行单元测试并生成报告
}
}
stage(&
x27;
Deploy&
x27;
) {
steps {
sh &
x27;
scp target/*.jar user@server:/opt/app/&
x27;
// 部署到测试服务器
}
}
}
post {
always {
cleanWs() // 清理工作空间
}
}
}
保存任务后,点击“Build Now”即可触发首次构建。
五、自动化触发优化
1. Webhook触发
在代码仓库(如GitHub、GitLab)中配置Webhook,指向Jenkins服务器的/github-webhook/
或/gitlab-webhook/
接口,实现代码提交后自动触发构建。
2. 定时触发
通过Cron语法设置定时任务(如每天凌晨2点构建):
pipeline {
triggers {
cron(&
x27;
H 2 * * *&
x27;
) // 每天2点触发
}
// 其他配置...
}
3. 手动触发
在任务页面点击“Build Now”,手动启动构建(适用于需要人工确认的场景)。
六、高级实践(可选)
1. 分布式构建
通过Docker添加构建节点(如Linux节点),提升构建效率:
docker run -d --name jenkins-agent -p 50000:50000 jenkins/agent
在Jenkins“Manage Jenkins >
Manage Nodes and Clouds”中添加节点,配置Label(如linux
),在Pipeline中使用agent {
label 'linux' }
指定节点。
2. 容器化部署
结合Docker和Kubernetes实现标准化部署:
stage(&
x27;
Build Image&
x27;
) {
steps {
script {
docker.build("myapp:${
env.BUILD_ID}
") // 构建Docker镜像
}
}
}
stage(&
x27;
Push to Registry&
x27;
) {
steps {
withCredentials([usernamePassword(credentialsId: &
x27;
dockerhub&
x27;
, usernameVariable: &
x27;
DOCKER_USER&
x27;
, passwordVariable: &
x27;
DOCKER_PASS&
x27;
)]) {
docker.withRegistry(&
x27;
https://registry.hub.docker.com&
x27;
, &
x27;
dockerhub&
x27;
) {
docker.image("myapp:${
env.BUILD_ID}
").push() // 推送镜像到Docker Hub
}
}
}
}
stage(&
x27;
Deploy to Kubernetes&
x27;
) {
steps {
sh &
x27;
kubectl set image deployment/myapp myapp=myapp:${
env.BUILD_ID}
&
x27;
// 更新Kubernetes Pod镜像
}
}
3. 质量门禁
集成SonarQube进行代码质量扫描,阻断问题构建:
stage(&
x27;
Code Scan&
x27;
) {
steps {
withSonarQubeEnv(&
x27;
sonar-server&
x27;
) {
// 配置SonarQube服务器
sh &
x27;
mvn sonar:sonar&
x27;
}
}
}
stage(&
x27;
Quality Gate&
x27;
) {
steps {
timeout(time: 15, unit: &
x27;
MINUTES&
x27;
) {
waitForQualityGate abortPipeline: true // 若质量不达标,终止流水线
}
}
}
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在CentOS上实现Jenkins自动化
本文地址: https://pptw.com/jishu/714972.html