首页主机资讯怎样自动化Ubuntu Jenkins部署过程

怎样自动化Ubuntu Jenkins部署过程

时间2025-10-29 10:16:04发布访客分类主机资讯浏览939
导读:一、环境准备 在Ubuntu上实现Jenkins自动化部署前,需完成以下基础配置: 安装Java环境:Jenkins基于Java开发,需安装JDK(推荐OpenJDK 11+)。执行以下命令安装并验证:sudo apt update &a...

一、环境准备

在Ubuntu上实现Jenkins自动化部署前,需完成以下基础配置:

  1. 安装Java环境:Jenkins基于Java开发,需安装JDK(推荐OpenJDK 11+)。执行以下命令安装并验证:
    sudo apt update &
        &
         sudo apt install -y openjdk-11-jdk
    java -version  # 验证安装(需显示Java版本信息)
    
  2. 安装Jenkins
    • 添加Jenkins官方APT仓库并导入密钥:
      wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc >
           /dev/null
      echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list >
           /dev/null
      
    • 安装Jenkins并启动服务:
      sudo apt update &
          &
           sudo apt install -y jenkins
      sudo systemctl start jenkins &
          &
           sudo systemctl enable jenkins  # 开机自启
      
    • 访问Jenkins Web界面(http://< 服务器IP> :8080),输入初始密码(位于/var/lib/jenkins/secrets/initialAdminPassword)完成解锁,安装推荐插件(如Pipeline、Git)。

二、配置Jenkins基础环境

  1. 安装必要插件
    进入“Manage Jenkins → Manage Plugins”,安装以下插件:
    • Pipeline:用于定义自动化流程;
    • Git:用于从Git仓库拉取代码;
    • Publish over SSH:用于安全地将文件传输到远程服务器;
    • Docker(可选):若使用容器化部署,需安装此插件。
  2. 配置全局工具
    进入“Manage Jenkins → Global Tool Configuration”,设置以下工具路径(若未自动检测):
    • JDK:指定JDK安装路径(如/usr/lib/jvm/java-11-openjdk-amd64);
    • Git:指定Git安装路径(如/usr/bin/git);
    • Maven(可选):若使用Maven构建,指定Maven路径(如/usr/share/maven)。
  3. 配置SSH密钥(用于远程部署):
    • 在Jenkins服务器上生成SSH密钥对(若未生成):
      ssh-keygen -t rsa -b 4096 -C "jenkins@example.com"
      
    • 将公钥(~/.ssh/id_rsa.pub)添加到目标服务器的~/.ssh/authorized_keys文件中;
    • 在Jenkins中添加SSH凭据:“Manage Jenkins → Credentials → System → Global credentials → Add Credentials”,选择“SSH Username with private key”,输入目标服务器用户名和私钥内容。

三、创建Jenkins Pipeline任务

  1. 新建Pipeline任务
    登录Jenkins,点击“New Item”,输入任务名称(如ubuntu-app-deploy),选择“Pipeline”,点击“OK”。
  2. 配置Pipeline脚本
    选择“Pipeline script from SCM”(推荐,便于版本控制),设置以下参数:
    • SCM:选择Git,输入代码仓库URL(如https://github.com/your-repo/your-project.git)和分支(如main);
    • Script Path:指定Jenkinsfile路径(如Jenkinsfile,需与代码仓库中的文件路径一致)。
  3. 示例Jenkinsfile(Java应用)
    以下是一个完整的声明式Pipeline脚本,包含代码拉取、构建、测试、部署流程:
    pipeline {
    
        agent any
        environment {
    
            // 环境变量配置
            PROJECT_NAME = "ubuntu-app"
            JAR_NAME = "${
    PROJECT_NAME}
    -${
    env.BUILD_ID}
    .jar"
            DEPLOY_DIR = "/opt/ubuntu-app"  // 远程服务器部署目录
            SSH_USER = "ubuntu"              // 远程服务器用户名
            SSH_HOST = "192.168.1.100"       // 远程服务器IP
        }
    
        stages {
    
            stage('Checkout') {
    
                steps {
    
                    // 从Git拉取代码
                    git branch: 'main', url: 'https://github.com/your-repo/your-project.git'
                }
    
            }
    
            stage('Build') {
    
                steps {
    
                    // 使用Maven构建项目(跳过测试)
                    sh 'mvn -U -Dmaven.test.skip=true clean package'
                }
    
            }
    
            stage('Test') {
    
                steps {
    
                    // 执行单元测试(可选)
                    sh 'mvn test'
                }
    
            }
    
            stage('Deploy') {
    
                steps {
    
                    script {
    
                        // 停止远程服务器上的旧进程(避免端口冲突)
                        sh "ssh ${
    SSH_USER}
    @${
    SSH_HOST}
     'pkill -f ${
    JAR_NAME}
     || true'"
                        // 删除旧JAR包
                        sh "ssh ${
    SSH_USER}
    @${
    SSH_HOST}
     'rm -f ${
    DEPLOY_DIR}
    /${
    JAR_NAME}
    '"
                        // 复制新JAR包到远程服务器
                        sh "scp target/${
    JAR_NAME}
     ${
    SSH_USER}
    @${
    SSH_HOST}
    :${
    DEPLOY_DIR}
    /"
                        // 启动应用(后台运行,输出日志到文件)
                        sh "ssh ${
    SSH_USER}
    @${
    SSH_HOST}
     'nohup java -jar ${
    DEPLOY_DIR}
    /${
    JAR_NAME}
         --server.port=8080 >
     ${
    DEPLOY_DIR}
    /${
    PROJECT_NAME}
        .log 2>
        &
        1 &
    '"
                    }
    
                }
    
            }
    
        }
    
        post {
    
            success {
    
                // 构建成功通知(如邮件、Slack)
                echo "Deployment successful for build #${
    env.BUILD_NUMBER}
    "
            }
    
            failure {
    
                // 构建失败通知
                echo "Deployment failed for build #${
    env.BUILD_NUMBER}
    "
            }
    
        }
    
    }
        
    
    注:可根据项目需求调整阶段(如添加Docker构建、推送镜像等)。

四、配置自动化触发器

  1. 代码提交触发
    在Pipeline配置页面,勾选“GitHub hook trigger for GITScm polling”,并在Git仓库中配置Webhook(指向http://< Jenkins服务器IP> :8080/github-webhook/),实现代码推送后自动触发构建。
  2. 定时触发
    在“Build Triggers”中勾选“Poll SCM”,设置定时规则(如H/5 * * * *表示每5分钟检查一次代码变更,若有变更则触发构建)。

五、测试自动化部署

  1. 提交代码:向Git仓库推送代码变更(如修改代码后执行git push origin main);
  2. 查看构建状态:Jenkins会自动触发Pipeline,进入任务页面查看各阶段执行情况(如Checkout、Build、Deploy);
  3. 验证部署结果:登录远程Ubuntu服务器,检查应用是否运行(如ps -ef | grep java查看进程,tail -f /opt/ubuntu-app/ubuntu-app.log查看日志)。

常见问题解决

  1. 权限不足:若Jenkins无法执行dockerssh命令,需将Jenkins用户加入对应组:
    sudo usermod -aG docker jenkins  # 允许Jenkins使用Docker
    sudo usermod -aG ssh jenkins     # 允许Jenkins使用SSH
    sudo systemctl restart jenkins   # 重启Jenkins服务
    
  2. 端口冲突:部署前停止远程服务器上的旧进程(如ssh ${ SSH_USER} @${ SSH_HOST} 'pkill -f ${ JAR_NAME} ')。
  3. 构建缓存问题:在Maven构建命令中添加-U参数,强制更新依赖(如mvn -U clean package)。

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


若转载请注明出处: 怎样自动化Ubuntu Jenkins部署过程
本文地址: https://pptw.com/jishu/737526.html
JS在Linux环境下如何进行性能优化 Ubuntu Jenkins部署有哪些优化技巧

游客 回复需填写必要信息