在 CentOS 7 上使用 Jenkins 实现自动发布与回滚

内容目录

随着 DevOps 理念的普及,自动化发布和回滚成为了软件开发生命周期中不可或缺的一部分。Jenkins 是一款广泛使用的持续集成/持续交付(CI/CD)工具,它可以帮助团队实现自动化构建、测试以及部署。本文将详细介绍如何在 CentOS 7 环境下配置 Jenkins 以实现应用程序的自动发布和回滚。

图片[1]-在 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

  1. 访问 Jenkins 界面 打开浏览器,访问 http://<your_server_ip>:8080,根据提示输入初始管理员密码,该密码可以在 /var/lib/jenkins/secrets/initialAdminPassword 文件中找到。
  2. 安装插件 根据 Jenkins 的提示安装必要的插件,例如 Git、Maven、Pipeline 等。
  3. 创建 Jenkins 用户 在 CentOS 7 上创建一个 Jenkins 用户,以便 Jenkins 能够执行 shell 命令:
   sudo useradd -m -s /bin/bash jenkins
  1. 配置权限 给 Jenkins 用户分配必要的权限,例如访问 Git 仓库、执行部署脚本等。

创建 Jenkins 任务

  1. 创建新任务 登录 Jenkins 后,点击“新建任务”,然后选择“流水线”(Pipeline)类型。
  2. 配置任务
  • 常规设置:填写任务名称和其他基本信息。
  • 源码管理:配置 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
喜欢就支持一下吧
点赞7赞赏 分享