前提条件:已经安装Jenkins并能正常启动

如果Jenkins安装启动遇到问题可以参考:

1.创建pipeline

  1. 点击新建项目:

  1. 输入名称,选择pipeline

  1. 进入配置页面,如果要配置GitHub Webhook要勾选:<font style="color:rgb(20, 20, 31);">GitHub hook trigger for GITScm polling</font>

  1. 进行pipeline配置:

  • Definition选择Pipeline script from SCM

作用是让Jenkins从源代码管理(SCM)系统拉去Jenkins的脚本文件

  • SCM选择Git
  • Repository URL填写GitHub仓库的url
  • 如果仓库是public的话无需填写Credentials

  • Branch Specifier填写要进行pipeline操作的仓库分支
  • Script Path默认是Jenkinsfile即可

其余选项无需配置,保持默认即可

2.配置maven

运行maven指令的时候一直出现command not found的问题,但是服务器上已经配置过了maven,于是在Jenkins中进行配置:

DashBoard——Manage Jenkins——Tools——Maven Configuration

配置settings文件的路径即可

3.编写Jenkinsfile

在项目的根目录下创建Jenkins脚本文件,文件名为Jenkinsfile

pipeline {
    agent any

    environment {
        // 定义环境变量
        SERVER_IP = your-server-ip        					// 服务器IP地址
        SERVER_USER = your-username    					// 服务器用户名
        TARGET_DIR = you-jarFileDir                  // 服务器上的目标目录
        JAR_FILE = your-jarFileName                // 打包后的文件名
    }

    stages {
        stage('Clone Source Code') {
            steps {
                // 拉取项目源码
                //注意: 这里根据自己的需求选择合适的分支以及仓库地址(ssh或https)
                git branch: 'master', url: 'your-repository-url'
            }
        }
        stage('Build Project') {
            steps {
                // 使用 Maven 构建项目
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('Verify Build Output') {
            // 验证构建结果
            steps {
                sh 'ls -l target/'
            }
        }
        stage('Test') {
            steps {
                // 运行测试
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            // 部署到远程服务器
            steps {
                script {
                    // StrictHostKeyChecking=no 表示不检查远程主机的公钥 建议配置好ssh的免密登录
                    // Step 1: 传输文件到远程服务器 scp -v 可以查看文件传输的进度
                    sh """
                        scp -v -o StrictHostKeyChecking=no target/${JAR_FILE} ${SERVER_USER}@${SERVER_IP}:${TARGET_DIR}
                    """

                    // Step 2: 杀死已存在的进程
                    def killStatus = sh(script: """
                        ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'pgrep -f ${JAR_FILE} | xargs kill -9 || true'
                    """, returnStatus: true)

                    echo "Kill process exit status: ${killStatus}"

                    // Step 3: 启动新的进程
                    sh """
                        ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'nohup java -jar ${TARGET_DIR}/${JAR_FILE} > /dev/null 2>&1 &'
                    """
                }
            }
        }
    }

    post {
        always {
            // 每次构建结束后清理工作目录
            cleanWs()
        }
        success {
            echo 'Deployment finished successfully'
        }
        failure {
            echo 'Deployment failed'
        }
    }
}

具体流程:

  1. 拉取代码(注意ssh方式和https方式的不同)
  2. 构建项目
  3. 进行测试
  4. 部署到远程服务器
    ①文件传输(jar)
    ②停止之前的进程
    ③重新启动进程

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部