首页 > 其他分享 >jenkins pipeline 发布 jar并运行

jenkins pipeline 发布 jar并运行

时间:2024-07-31 22:41:56浏览次数:6  
标签:trim pipeline false java list jar module jenkins

废话不多说,上教程

 

一,配置publish ssh

 

二,配置 ssh server

记住Name

 

三 设置发布选项

1 设置模块多选(请安装多选插件:Active Choices Plug-in)

 

 

四 编写pipeline

说明:

1 modules.split(',')中的modules就是上面多选框的Name

2 详细解说:

execCommand: 'cd /java ; ps -ef | grep '+module_list[i].trim()+' | grep -v grep | awk \'{print $2}\' | xargs --no-run-if-empty kill -9 ; source /etc/profile ; nohup java -jar '+module_list[i].trim()+'.jar > '+module_list[i].trim()+'.log 2>&1 & '

// 转到目录

cd /java

//通过进程名查找PID

ps -ef | grep '+module_list[i].trim()+' | grep -v grep | awk \'{print $2}\'

//删除此进程(如果为空则不运行kill)

xargs --no-run-if-empty kill -9

//此命令配合nohup,不然Jenkins中无法通过nohup运行Jar

source /etc/profile ;

//后台运行nohup

nohup java -jar '+module_list[i].trim()+'.jar > '+module_list[i].trim()+'.log 2>&1 &

完整代码:

pipeline {
    agent any
        // 设置工具
    tools {
        maven "Maven3"
        jdk "JDK17"
    }
    
    //动态参数
    environment{
         source_dir="${WORKSPACE}"
    }
    
    options {
        timestamps() // 设置在项目打印日志时带上时间戳
        disableConcurrentBuilds() // 不允许同时执行流水线,被用来防止同时访问公共资源等
        timeout(time: 40, unit: 'MINUTES') // 设置流水线运行超时时间,Jenkins自动终止流水线
        buildDiscarder(logRotator(numToKeepStr: '10')) // 保留n次构建历史
    }
    
    // 存放所有任务的合集
    stages {
        stage('clone') {
            steps {
                // 拉取代码
                git credentialsId: 'xxxx-xxxx-xxxx-xxx-xxxxxxxx', 
                url: 'http://localhost:xxxx/xxxxx/kintech-cloud',
                branch: 'dev'
            }
            
        }
        // 打包
        stage('install') {
            steps {
              script {
                //服务名称数组
                module_list = modules.split(',')
                
                for (int i = 0; i < module_list.size(); i++) {
                        echo "=================package ${module_list[i]} "
                        // 打对应的项目以及依赖包
                        bat 'mvn -Dmaven.test.failure.ignore=true -pl kintech-modules/' + module_list[i].trim() + ' -am clean package '
                    }
                echo 'Install success'
               }
            }
    }
        
        // 部署
        stage('deploy') {
            steps {
                script {
                    for (int i = 0; i < module_list.size(); i++) {
                        echo "=================sshPublisher ${module_list[i]} "
                        // scp 免密传输
                        sshPublisher(publishers: [sshPublisherDesc(configName: 'kintech-cloud测试服务', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'ls', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'kintech-modules/'+module_list[i].trim()+'/target/', sourceFiles:  'kintech-modules/'+module_list[i].trim()+ '/target/' +module_list[i].trim()+'.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])    
            
                    }
                    echo 'Deploy success'
                }
            }
        }
 
        // 启动
        stage('start') {
            steps {
                script {
                    for (int i = 0; i < module_list.size(); i++) {
                        //启动 (cd到java目录,杀掉进程,启动jar)
                        sshPublisher(publishers: [sshPublisherDesc(configName: 'kintech-cloud测试服务', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /java ; ps -ef | grep '+module_list[i].trim()+' | grep -v grep | awk \'{print $2}\' | xargs --no-run-if-empty kill -9 ; source /etc/profile ; nohup java -jar '+module_list[i].trim()+'.jar > '+module_list[i].trim()+'.log 2>&1 & ', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '/java', sourceFiles: '/java')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
 
                    }
                    echo 'Start success'
                }
            }
        }
    }
}

 

五 效果

 

标签:trim,pipeline,false,java,list,jar,module,jenkins
From: https://www.cnblogs.com/hanjun0612/p/18335642

相关文章

  • 节点添加jenkins用户
    节点添加jenkins用户在Jenkins服务器上:切换到Jenkins用户的Home目录并查看Jenkins用户的SSH密钥:su-jenkinscat~/.ssh/id_rsa.pub复制Jenkins用户的SSH公钥(id_rsa.pub​文件内容)。在节点服务器上:新建jenkins用户adduserjenkins将jenkins用户添......
  • 使用Shell登录Jenkins
    使用Shell登录Jenkins在root用户下使用sujenkins​命令切换到jenkins​用户时失败.可以先检查jenkins​用户有没有shell权限:grepjenkins/etc/passwd如果jenkins​用户的登录shell设置为/bin/false​,它会阻止用户登录系统。手动编辑/etc/passwd​文件来更改......
  • python实现jenkins凭据录入
    #新增配置importjenkins.model.*importjenkins.plugins.publish_over_ssh.BapSshHostConfigurationdefinst=Jenkins.getInstance()defpublish_ssh=inst.getDescriptor("jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin")defconfiguration=new......
  • Linux服务器设置jar包开机自启
    一、准备工作将jar包上传到服务器(本文将jar包上传到/home/project/jar/)新建脚本文件(本文将脚本文件放在/home/project/sh/文件下)注:sentinel-dashboard是我的程序名,可根据实际情况替换二、新建、编辑jar包的启动和停止脚本#启动脚本文件vim/home/project/sh/sentine......
  • maven jar包 导入 添加 本地仓库 指定仓库 (mvn install:install-file)
    有时候会遇到将jar包导入本地仓库的需求。因为有些驱动包比较冷门,在公司的私服(远程仓库)里没有,为了在本地先跑起来,先添加到本地仓库。一、指定仓库执行命令: mvninstall:install-file-Dfile=D:\java\mavenData\xxxJdbcDriver2.jar-DgroupId=com.ali-DartifactId=xxx-jdbc......
  • Ubuntu升级Jenkins导致无法启动,报错Failed to start Jenkins Continuous Integration
    背景:从23年底部署jenkins后就没升过级,安装插件顺手更新后导致无法启动,服务端运行状态显示jenkinssystemd[1]:FailedtostartJenkinsContinuousIntegrationServer.无法重新启动的状态信息root@jenkins:~#sudosystemctlstatusjenkins●jenkins.service-Jenkins......
  • Jenkins环境变量与构建工具 (pipeline)
     Jenkins内置变量pipeline{agentanystages{stage('mcwtest'){steps{echo"Running${env.BUILD_NUMBER}on${env.JENKINS_URL}"//方法一echo"Running$env.BUILD_NUMBERo......
  • jenkins
    jenkins简介Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、Docker或者通过一个独立的Java程序。maven下载地址:https://maven.apache.org/download.cgijdk安装jdk下载地址:https://download.or......
  • linux+jenkins+github+.net core CI/CD 快速部署
    目标:代码提交后,在jenkins点击build,编译通过后能让linux更新.netcore文件和重新运行 步骤:1.腾讯云搞一台免费linux服务器:https://cloud.tencent.com/2.服务上安装jenkinshttps://www.jenkins.io/doc/book/installing/linux/#red-hat-centos3.腾讯云防火墙开放8080端口,另一......
  • Linux安装Jenkins
    Linux安装Jenkins一、简介​Jenkins​是一个开源的持续集成(CI)工具,用于自动化构建、测试和部署软件项目。它提供了一个易于使用和可扩展的平台,帮助团队更高效地开发和交付软件。官网:https://www.jenkins.io中文文档:https://www.jenkins.io/zh/二、准备​Jenkins​对机器的......