赞
踩
如果要参考gitlab配置请参考Gitlab+Webhook自动推送并更新Springboot项目 Gitlab的配置部分
Manage Jenkins --> Plugins --> Available plugins
搜索Publish Over SSH并安装
Manage Jenkins --> Tools
配置本地JDK
Git自动安装即可
配置Maven
记得最后要保存
Manage Jenkins --> System
全局属性
因为不能使用jenkins容器内的java11,所以我们要给容器内的JAVA_HOME环境变量设置成挂载jdk1.8的路径
Publish over SSH
这个工具需要前面安装好Publish Over SSH插件
同样记得最后要保存
Manage Jenkins --> Credentials
新建任务 New Item,任务类型为pipline
这里使用Generic Webhook Trigger方式
流水线的任务是通过脚本配置的,就长下面这样
pipeline {
}
这里面脚本要实现的步骤就三个:
maven打包不需要模板,直接写命令就行,其中sh代表执行命令,然后mvn命令要写文件的全路径
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true
还有一个需要使用到Publish over SSH,这个也可以使用模板生成脚本
注意命令会在上传完成之后执行,如果想要在上传完成之前执行命令,需要配两个Transfer Sets
pipeline { agent any stages { stage('Get Code') { steps { // 获取git源码 git credentialsId: 'd76b95e1-74d3-4ae9-920a-1a8d5027abef', url: 'https://gitee.com/zrzrno/demo.git' } } stage('Maven Build') { steps { // Maven打包 sh "/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true" } } stage('Deploy') { steps { // 上传jar包到到213试服务器 sshPublisher(publishers: [sshPublisherDesc(configName: '213', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /usr/local/demo/ && sh demo.sh restart', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/demo', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/demo-1.0.0.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)]) } } } }
这里边还有一个问题,就是通过Publish over SSH执行远程命令,有的远程服务器的环境变量是识别不到的,比如我这里上传完jar包之后需要进入到特定目录并运行另一个脚本文件,那个脚本文件大致就是重启了java服务,问题就在这个java命令居然没有识别到,报错了,所以我把java命令写成了全路径就可以了
nohup /usr/local/jdk1.8.0_271/bin/java -jar ${APP_NAME} >logs.out 2>&1 &
找到项目–>管理–>webHooks
配置没问题的话就可以在gitee中看到webhook请求历史
jenkins中也能看到pipline的执行视图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。