当前位置: 首页 > 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.lryc.cn/news/572420.html

相关文章:

  • Docker+Jenkins+git实现Golang项目自动部署
  • springboot 打的可执行jar包单独更新某个jar包
  • JMeter 高阶玩法:分布式压测的技术核心技术要点
  • 【K8S】详解NodePort 和 ClusterIP
  • 大数据复习HDFS
  • 11.0592MHz晶振:电脑主板的“心脏”
  • 通过Docker挂载nginx并修改页面
  • ros中相机话题在web页面上的显示,尝试js解析sensor_msgs/Image数据
  • 嵌入式开发之freeRTOS移植
  • Kafka性能调优全攻略:从JVM参数到系统优化
  • Java的SpringAI+Deepseek大模型实战
  • 基于keepalived、vip实现高可用nginx (centos)
  • mongodb单节点改副本集模式
  • Python 开发环境全栈隔离架构:从 Anaconda 到 PyCharm 的四级防护体系
  • NetworkManager介绍与用法
  • 【单片机】51单片机练习代码
  • GRBL_UNO R3编译下载
  • Spring Boot 虚拟线程 vs WebFlux:谁更胜一筹?
  • Spring-创建第一个SpringBoot项目
  • apisix-使用hmac-auth插件进行接口签名身份验证\apisix consumer
  • SpringBoot项目启动时自动加载数据到Redis的完整实现方案,用于存储字典,定时任务,登录用户等
  • Spring @Autowired 依赖注入全解析
  • 语音情感识别:CNN-LSTM 和注意力增强 CNN-LSTM 模型的比较分析
  • Hive优化详细讲解
  • Redis 的优势有哪些,它是CP 还是 AP?CAP 理论又是什么?
  • C#的泛型和匿名类型
  • Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器
  • Java八股文——计算机网络「传输层篇」
  • CppCon 2017 学习:Everything You Ever Wanted to Know about DLLs
  • CppCon 2017 学习:dynamic_cast from scratch