内容目录
- —— 准备工作
- —— 配置 Jenkins
- —— 创建 Jenkins 任务
- —— 编写 Jenkinsfile
- —— 总结
随着 DevOps 理念的普及,自动化发布和回滚成为了软件开发生命周期中不可或缺的一部分。Jenkins 是一款广泛使用的持续集成/持续交付(CI/CD)工具,它可以帮助团队实现自动化构建、测试以及部署。本文将详细介绍如何在 CentOS 7 环境下配置 Jenkins 以实现应用程序的自动发布和回滚。
准备工作
在开始之前,请确保你的 CentOS 7 系统已经安装了 Java 和 Jenkins,并且 Jenkins 服务已经启动。如果没有安装,可以通过以下命令进行安装:
# 安装 Java
sudo yum install java-1.8.0-openjdk-devel -y
# 添加 Jenkins 软件仓库
sudo rpm -Uvh https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 安装 Jenkins
sudo yum install jenkins -y
# 启动 Jenkins 服务
sudo systemctl start jenkins
# 设置 Jenkins 自启动
sudo systemctl enable jenkins
配置 Jenkins
- 访问 Jenkins 界面 打开浏览器,访问
http://<your_server_ip>:8080
,根据提示输入初始管理员密码,该密码可以在/var/lib/jenkins/secrets/initialAdminPassword
文件中找到。 - 安装插件 根据 Jenkins 的提示安装必要的插件,例如 Git、Maven、Pipeline 等。
- 创建 Jenkins 用户 在 CentOS 7 上创建一个 Jenkins 用户,以便 Jenkins 能够执行 shell 命令:
sudo useradd -m -s /bin/bash jenkins
- 配置权限 给 Jenkins 用户分配必要的权限,例如访问 Git 仓库、执行部署脚本等。
创建 Jenkins 任务
- 创建新任务 登录 Jenkins 后,点击“新建任务”,然后选择“流水线”(Pipeline)类型。
- 配置任务
- 常规设置:填写任务名称和其他基本信息。
- 源码管理:配置 Git 仓库的 URL 和凭证。
- 构建触发器:根据需求选择触发构建的方式,如每次推送代码到仓库时自动构建。
- 构建环境:可以在此处添加任何构建前需要执行的命令。
- 构建步骤:定义流水线脚本,使用 Jenkinsfile 或直接在界面上编写 Pipeline 脚本。
编写 Jenkinsfile
Jenkinsfile 是一个文本文件,位于项目的根目录下,用于定义 Jenkins 的构建步骤。下面是一个简单的 Jenkinsfile 示例,展示如何实现自动发布和回滚:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
script {
def releaseVersion = env.BUILD_NUMBER
sh "scp target/app.jar jenkins@<server_ip>:/opt/app"
sh "ssh jenkins@<server_ip> 'systemctl stop app.service'"
sh "ssh jenkins@<server_ip> 'cp /opt/app/app.jar /opt/app/releases/${releaseVersion}'"
sh "ssh jenkins@<server_ip> 'ln -sf /opt/app/releases/${releaseVersion} /opt/app/current'"
sh "ssh jenkins@<server_ip> 'systemctl start app.service'"
}
}
}
stage('Rollback') {
when {
expression { return currentBuild.result == 'FAILURE' }
}
steps {
script {
def lastSuccessVersion = readFile('/opt/app/current').trim()
sh "ssh jenkins@<server_ip> 'systemctl stop app.service'"
sh "ssh jenkins@<server_ip> 'ln -sf /opt/app/releases/${lastSuccessVersion} /opt/app/current'"
sh "ssh jenkins@<server_ip> 'systemctl start app.service'"
}
}
}
}
post {
always {
echo 'Build finished.'
}
}
}
总结
通过上述步骤,我们成功地在 CentOS 7 上配置了 Jenkins 来实现自动发布和回滚功能。Jenkins 作为一款强大的 CI/CD 工具,可以帮助团队提高效率,减少人为错误,并确保软件质量。希望这篇教程能够帮助你在 CentOS 7 环境下顺利地部署 Jenkins 并实现自动化的发布流程。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END