当前位置: 首页 > news >正文

Jenkins通过Pipeline流水线方式编译Java项目

记录一下本人流水线配置,前提使用的jenkins:lts镜像然后自己通过dockerfile添加了JDK1.8和mvn插件,因为Jenkins镜像中的java版本过高编译我的项目会有问题所以新加一个1.8的。

docker-compose启动Jenkins

services:jenkins:image: jenkins-mvn:lts  container_name: jenkinsrestart: on-failure:3user: rootnetwork_mode: hostenvironment:TZ: Asia/ShanghaiLANG: zh_CN.UTF-8LANGUAGE: zh_CN:zhLC_ALL: zh_CN.UTF-8volumes:- /data/jenkins/jenkins-data:/var/jenkins_home   # Jenkins数据目录持久化- /usr/bin/docker:/usr/bin/docker   # 宿主机docker命令- /var/run/docker.sock:/var/run/docker.sock  # docker.sock用于执行宿主机容器命令- /etc/localtime:/etc/localtime:ro           # 时区同步- ./settings.xml:/opt/maven/conf/settings.xml  #私服配置

启动之后安装Jenkins推荐插件,然后再一下插件

Publish over SSH
Git Push
Maven Integration
Pipeline Maven Integration
Deploy to container
SSH
SSH Agent
SSH2 Easy
SSH Pipeline Steps
AnsiColor
Docker Pipeline

Jenkinsfile

pipeline {agent anyenvironment {VERSION = 'uat'MVN_SETTINGS = '/opt/maven/conf/settings.xml'JAVA_HOME = '/opt/java'PATH = "/opt/java/bin:${env.PATH}"}stages {stage('拉取代码') {steps {echo "\033[32m****** 开始拉取代码 ******\033[0m"git(url: 'http://192.168.1.10/test.git',  #项目地址credentialsId: '3d9048d1-e712-4cf1-b4cd',   #git密钥branch: "${VERSION}")echo "\033[32m****** 拉取代码完成 ******\033[0m"}}stage('构建项目') {steps {echo "\033[32m****** 开始构建项目(使用JDK1.8) ******\033[0m"sh '''export JAVA_HOME=/opt/javaexport PATH=$JAVA_HOME/bin:$PATHexport MAVEN_OPTS="-Xmx512m -Xms256m"ulimit -n 4096java -versionmvn -s /opt/maven/conf/settings.xml clean package -U -Dmaven.test.skip=true'''}}stage('部署到192.168.1.12') {steps {echo "\033[32m****** 开始部署到目标环境 ******\033[0m"sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.1.12',transfers: [// 备份旧版本sshTransfer(execCommand: '''if [ -f /data/test/test/test.jar ]; thenmkdir -p /data/test/test/backupcp /data/test/test/test.jar /data/test/test/backup/test-$(date +%Y%m%d_%H%M).jarecho "旧版本已备份"fi'''),// 上传新版本并重启sshTransfer(sourceFiles: 'target/test.jar',removePrefix: 'target',remoteDirectory: 'test',cleanRemote: false,makeEmptyDirs: true,execCommand: '''cd /data/test/test/bin/bash constart.sh''')],verbose: true)])echo "\033[32m****** 部署完成 ******\033[0m"}}}
}

http://www.lqws.cn/news/442909.html

相关文章:

  • IP 地理库的使用指南:从基础应用到深度实践​
  • Redis 持久化机制详解:RDB、AOF 原理与面试最佳实践(AOF篇)
  • IntersectionObserver API应用场景示例代码详解
  • 医疗低功耗智能AI网络搜索优化策略
  • jquery 赋值时不触发change事件解决——仙盟创梦IDE
  • Kafka性能压测报告撰写
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • 靶场(二十五)---小白心得靶场体会---Access
  • 基于Python+PySide6构建的夸克网盘批量工具,支持批量转存与分享
  • 使用NPOI库导出多个Excel并压缩zip包
  • Qt 解析复杂对象构成
  • 基于C#的Baumer相机二次开发教程
  • VACM 详解:SNMPv3 的访问控制核心
  • 基于大模型的急性结石性胆囊炎全流程预测与诊疗方案研究
  • 小白畅通Linux之旅-----Rsync+sersync实现数据实时同步
  • 九九乘法表
  • [Data Pipeline] Kafka消息 | Redis缓存 | Docker部署(Lambda架构)
  • 编辑器及脚本案例
  • 2025-05-05-80x86汇编语言环境配置
  • Java中创建线程的几种方式
  • 软考-软件设计师--校验码
  • 矩阵置零C++
  • jmeter学习
  • ABP VNext + MongoDB 数据存储:多模型支持与 NoSQL 扩展
  • HarmonyOS开发利器:ArkTS全解析
  • 深入解析connect函数:阻塞与非阻塞模式下的行为差异
  • 利用DevEco Studio对RK3588的HiHopesOS-4.1.110(OpenHarmony)进行Qt程序编写
  • Linux基本指令篇 —— mkdir指令
  • linux 非root 非sudo 如何安装软件
  • 基于Geotools的两条道路相交并根据交点形成新路线实战-以OSM数据为例