首页主机资讯Jenkins于Linux如何实现自动化部署

Jenkins于Linux如何实现自动化部署

时间2025-10-29 15:01:05发布访客分类主机资讯浏览384
导读:一、前置准备:安装Jenkins与基础工具 在Linux服务器(如Ubuntu/CentOS)上实现自动化部署前,需先安装Jenkins及依赖工具: 安装Java环境:Jenkins依赖Java运行,推荐使用OpenJDK 11+(如Ub...

一、前置准备:安装Jenkins与基础工具

在Linux服务器(如Ubuntu/CentOS)上实现自动化部署前,需先安装Jenkins及依赖工具:

  1. 安装Java环境:Jenkins依赖Java运行,推荐使用OpenJDK 11+(如Ubuntu下执行sudo apt install openjdk-11-jdk -y,CentOS下执行sudo yum install java-11-openjdk-devel -y)。
  2. 安装Jenkins
    • Ubuntu/CentOS均需添加Jenkins官方仓库(Ubuntu:wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -;CentOS: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 apt update & & sudo apt install jenkins -y(Ubuntu)或sudo yum install jenkins -y(CentOS)安装Jenkins。
  3. 启动Jenkinssudo systemctl start jenkins,并设置开机自启sudo systemctl enable jenkins
  4. 访问Web界面:通过浏览器访问http://< 服务器IP> :8080,输入初始密码(位于/var/lib/jenkins/secrets/initialAdminPassword)完成初始化,安装推荐插件(如Git、Pipeline)。

二、配置Jenkins与Linux服务器关联

为了让Jenkins能在Linux服务器上执行部署命令,需将服务器添加为Jenkins的节点(Node)

  1. 开启SSH服务:在Linux服务器上执行sudo systemctl start sshd(若未安装,执行sudo apt install openssh-server -y/sudo yum install openssh-server -y)。
  2. Jenkins添加节点
    • 进入Jenkins→Manage JenkinsManage Nodes and CloudsNew Node
    • 输入节点名称(如linux-server),选择“Permanent Agent”,点击“OK”。
    • 配置节点信息:
      • Remote root directory:设置为Linux上的Jenkins工作目录(如/home/jenkins);
      • Credentials:添加SSH私钥(生成方式:ssh-keygen -t rsa,公钥添加到Linux服务器的~/.ssh/authorized_keys中);
      • Number of executors:根据服务器性能设置(如1);
      • Launch method:选择“Launch agents via SSH”。

三、创建Jenkins Pipeline任务

Pipeline是Jenkins实现自动化部署的核心,通过代码定义流程(推荐使用Jenkinsfile或Web界面编写)。以下是Web界面配置Pipeline的步骤:

  1. 新建任务:进入Jenkins主页→New Item→输入任务名称(如my-app-deploy)→选择“Pipeline”→点击“OK”。
  2. 配置Pipeline
    • Pipeline script from SCM:选择代码托管平台(如Git),输入仓库URL(如https://github.com/your-repo/my-app.git),并配置Credentials(若有私有仓库)。
    • Script Path:指定Jenkinsfile在仓库中的路径(如根目录则留空)。
    • Branches to build:设置监听的分支(如*/main)。
    • Build Triggers:选择触发方式(如“Poll SCM”设置H/5 * * * *表示每5分钟检查代码变更,或“GitHub hook trigger for GITScm polling”配合Webhook实现代码提交自动触发)。

四、编写Pipeline脚本(核心流程)

Pipeline脚本定义了代码拉取→构建→测试→部署的全流程,以下是常见场景的示例:

示例1:Java项目(Maven+Tomcat)

pipeline {

    agent any
    tools {

        jdk 'jdk11'  // 需提前在Jenkins中配置JDK环境
        maven 'maven3'  // 需提前在Jenkins中配置Maven环境
    }

    stages {

        stage('Checkout') {

            steps {

                git branch: 'main', url: 'https://github.com/your-repo/my-app.git'
            }

        }

        stage('Build') {

            steps {

                sh 'mvn clean package'  // 编译项目并打包为war
            }

        }

        stage('Test') {

            steps {

                sh 'mvn test'  // 运行单元测试
            }

            post {

                always {

                    junit 'target/surefire-reports/*.xml'  // 发布测试报告
                }

            }

        }

        stage('Deploy') {

            steps {

                script {

                    // 将war包复制到Tomcat服务器的webapps目录
                    scp target/*.war tomcat@your-tomcat-server:/opt/tomcat/webapps/
                    // 重启Tomcat服务
                    ssh tomcat@your-tomcat-server 'systemctl restart tomcat'
                }

            }

        }

    }

}

示例2:容器化项目(Docker+Docker Hub)

pipeline {

    agent any
    environment {

        DOCKER_HUB_CREDENTIALS = credentials('docker-hub-id')  // 需提前在Jenkins中配置Docker Hub账号
    }

    stages {

        stage('Checkout') {

            steps {

                git branch: 'main', url: 'https://github.com/your-repo/my-app.git'
            }

        }

        stage('Build Image') {

            steps {

                sh 'docker build -t my-app:${
BUILD_NUMBER}
 .'  // 构建镜像(需提前编写Dockerfile)
            }

        }

        stage('Push Image') {

            steps {

                script {

                    docker.withRegistry('https://registry.hub.docker.com', DOCKER_HUB_CREDENTIALS) {

                        docker.image("my-app:${
BUILD_NUMBER}
").push()  // 推送镜像到Docker Hub
                    }

                }

            }

        }

        stage('Deploy to Server') {

            steps {

                script {

                    // 在目标服务器上拉取最新镜像并重启容器
                    ssh devops@your-app-server 'docker pull my-app:${
BUILD_NUMBER}
     &
    &
     docker stop my-app || true &
    &
     docker rm my-app || true &
    &
 docker run -d --name my-app -p 8080:8080 my-app:${
BUILD_NUMBER}
'
                }

            }

        }

    }

}
    

示例3:使用Jenkinsfile(代码托管在仓库中)

若项目根目录下有Jenkinsfile,可直接在Pipeline配置中选择“Pipeline script”→勾选“Prepare an environment for the run”→指定Jenkinsfile路径(如Jenkinsfile),无需手动编写脚本。

五、触发自动化部署

  1. 代码提交触发:配置Pipeline的“Build Triggers”为“Poll SCM”(如H/5 * * * *)或“GitHub hook trigger for GITScm polling”(需在Git仓库设置Webhook,URL为http://< jenkins-server> /github-webhook/)。
  2. 手动触发:在Jenkins任务页面点击“Build Now”手动启动流程。
  3. 定时触发:通过“Poll SCM”设置定时规则(如每天凌晨2点执行:H 2 * * *)。

六、验证与优化

  1. 查看日志:在Jenkins任务页面点击“Build History”→选择对应构建→点击“Console Output”,查看每一步的执行结果。
  2. 通知机制:通过“Post-build Actions”添加邮件/Slack通知,及时告知部署结果(如失败时提醒开发人员)。
  3. 回滚策略:在部署脚本中添加版本备份(如cp /opt/tomcat/webapps/my-app.war /opt/tomcat/webapps/my-app-backup.war),失败时可快速回滚到上一版本。

通过以上步骤,即可在Linux服务器上使用Jenkins实现自动化部署,覆盖从代码拉取到服务重启的全流程,提升开发与运维效率。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Jenkins于Linux如何实现自动化部署
本文地址: https://pptw.com/jishu/737811.html
Jenkins在Linux如何保障安全运行 Linux虚拟机如何设置静态IP地址

游客 回复需填写必要信息