Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目

一、前提

插件:Maven Integration plugin

环境:

maven、tomcat

用的博客系统代码:

git clone https://github.com/b3log/solo.git

远端git服务器:

[git@git repos]$ mkdir -p solo
[git@git repos]$ cd solo/
[git@git solo]$ git --bare init
Initialized empty Git repository in /home/git/repos/solo/

本地web:

[root@web solo]# git remote -v
origin    git@172.16.1.3:/home/git/repos/solo (fetch)
origin    git@172.16.1.3:/home/git/repos/solo (push)
[root@web solo]# git remote rm origin
[root@web solo]# git init
Reinitialized existing Git repository in /root/solo/.git/
[root@web solo]# git remote add origin git@172.16.1.3:/home/git/repos/solo
[root@web solo]# git add .
[root@web solo]# git commit -m "java solo all"
# On branch master
nothing to commit, working directory clean
[root@web solo]# git push origin master
Counting objects: 29058, done.
Compressing objects: 100% (9854/9854), done.
Writing objects: 100% (29058/29058), 47.77 MiB | 39.28 MiB/s, done.
Total 29058 (delta 15768), reused 29058 (delta 15768)
To git@172.16.1.3:/home/git/repos/solo* [new branch]      master -> master

因为solo需要改如下配置才可以访问:(改serverhost为指定的域名)

vim /root/solo/src/main/resources/latke.properties

然后再重新提交上去

二、配置

1)新建job

2)参数化构建

3)配置git仓库(针对jenkinsfile)

三、编写Jenkinsfile

源码配置文件:

node ("slave02-172.16.1.3") {//def mvnHome = '/usr/local/maven'stage('git checkout') {checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.1.3:/home/git/repos/solo']]])}stage('maven build') {sh '''export JAVA_HOME=/usr/local/jdk1.8/usr/local/maven3.3/bin/mvn clean package -Dmaven.test.skip=true'''
   }stage('deploy') {sh '''
    JENKINS_NODE_COOKIE=dontkillmeexport JAVA_HOME=/usr/local/jdk1.8TOMCAT_NAME=tomcatTOMCAT_HOME=/application/$TOMCAT_NAMEWWWROOT=$TOMCAT_HOME/webapps/ROOTif [ -d $WWWROOT ]; thenmv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")fiunzip ${WORKSPACE}/target/*.war -d $WWWROOTPID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\')[ -n "$PID" ] && kill -9 $PID/bin/bash $TOMCAT_HOME/bin/startup.sh'''}stage('test') {//sh "curl http://solo.test.com/status.html"echo "test ok!!!!!!!"}
}

下面为带解释版,但不可以使用,部分注释会造成问题

node ("slave02-172.16.1.3") {  //绑定到该节点构建//def mvnHome = '/usr/local/maven'stage('git checkout') {    //拉代码checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.1.3:/home/git/repos/solo']]])}stage('maven build') {   //maven buildsh '''export JAVA_HOME=/usr/local/jdk1.8   //在指定java环境变量/usr/local/maven3.3/bin/mvn clean package -Dmaven.test.skip=true'''  //构建maven包 clean package表示构建之前会清理之前构建的包,-Dmaven.test.skip=true表示跳过单元测试
   }stage('deploy') {  //部署sh '''
JENKINS_NODE_COOKIE=dontkillme  #tomcat启动时会衍生出一些子进程,然后才能成功启动,但是jenkins会在构建结束杀掉tomcat的那些衍生子进程,造成tomcat启动失败,此处加上这个参数可以解决这个问题。
export JAVA_HOME=/usr/local/jdk1.8TOMCAT_NAME=tomcatTOMCAT_HOME=/usr/local/$TOMCAT_NAMEWWWROOT=$TOMCAT_HOME/webapps/ROOTif [ -d $WWWROOT ]; then  //如果目录存在,先备份mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")fiunzip ${WORKSPACE}/target/*.war -d $WWWROOT  //项目包解压到站点目录PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\')  //重启tomcat[ -n "$PID" ] && kill -9 $PID/bin/bash $TOMCAT_HOME/bin/startup.sh'''}stage('test') { //测试//sh "curl http://wp.test.com/status.html"echo "test ok!!!!!!!"}
}

四、构建

五、访问

转载于:https://www.cnblogs.com/forever521Lee/p/9593855.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle数据泵导入很慢,impdp导入效率的问题

内网从一台服务器A导入到另一台服务器B,38G的数据半个多小时才导了一个表。原来B库上是有数据的,是不是因为TABLE_EXISTS_ACTIONREPLACE 导致速度慢了?parallel8也不知道会不会设高了。SQL> show parameter cpuNAME …

BZOJ2597 WC2007剪刀石头布(费用流)

考虑使非剪刀石头布情况尽量少。设第i个人赢了xi场,那么以i作为赢家的非剪刀石头布情况就为xi(xi-1)/2种。那么使Σxi(xi-1)/2尽量小即可。 考虑网络流。将比赛建成一排点,人建成一排点,每场未确定比赛向比赛双方连边,确定比赛向赢…

数据科学还是计算机科学_数据科学101

数据科学还是计算机科学什么是数据科学? (What is data science?) Well, if you have just woken up from a 10-year coma and have no idea what is data science, don’t worry, there’s still time. Many years ago, statisticians had some pretty good ideas…

开机流程与主引导分区(MBR)

由于操作系统会提供所有的硬件并且提供内核功能,因此我们的计算机就能够认识硬盘内的文件系统,并且进一步读取硬盘内的软件文件与执行该软件来完成各项软件的执行目的 问题是你有没有发现,既然操作系统也是软件,那么我的计算机优势…

肤色检测算法 - 基于二次多项式混合模型的肤色检测。

由于CSDN博客和博客园的编辑方面有不一致的地方,导致文中部分图片错位,为不影响浏览效果,建议点击打开链接。 由于能力有限,算法层面的东西自己去创新的很少,很多都是从现有的论文中学习,然后实践的。 本文…

oracle解析儒略日,利用to_char获取当前日期准确的周数!

总的来说周数的算法有两种:算法一:iw算法,每周为星期一到星期日算一周,且每年的第一个星期一为第一周,就拿2014年来说,2014-01-01是星期三,但还是算为今年的第一周,可以简单的用sql函…

密码机

树状数组1 #include<bits/stdc.h>2 using namespace std;3 int x,y,c[200005];4 char str[20];5 int inline read(){6 int x0,f1;7 char chgetchar();8 while(ch<0||ch>9)9 chgetchar(); 10 while(ch>0&&ch<9){ 11 …

js有默认参数的函数加参数_函数参数:默认,关键字和任意

js有默认参数的函数加参数PYTHON开发人员的提示 (TIPS FOR PYTHON DEVELOPERS) Think that you are writing a function that accepts multiple parameters, and there is often a common value for some of these parameters. For instance, you would like to be able to cal…

sql management studio 附加mdf文件出错的解决办法

将mdf文件所在文件夹的权限改为everyone.&#xff0c;完全控制即可。

oracle raise_application_error,RAISE_ APPLICATION_ ERROR--之异常处理

平时用来测试的异常处理我们都是通过dbms_output.put_line来输出异常信息&#xff0c;但是在实际的应用中&#xff0c;需要把异常信息返回给调用的客户端。其实 RAISE_APPLICATION_ERROR 是将应用程序专有的错误从服务器端转达到客户端应用程序(其他机器上的SQLPLUS或者其他前台…

金融信息交换协议

随着网络的使用&#xff0c;目前所有大型的金融机构都已经实现了自动化和数字化。当中肯定少不了互联网的加入&#xff0c;那么在这当中&#xff0c;我们主要介绍一下FIX协议。它是由国际FIX协会组织提供的一个开放式协议&#xff0c;目的是推动国际贸易电子化的进程&#xff0…

2018大数据学习路线从入门到精通

最近很多人问小编现在学习大数据这么多&#xff0c;他们都是如何学习的呢。很多初学者在萌生向大数据方向发展的想法之后&#xff0c;不免产生一些疑问&#xff0c;应该怎样入门&#xff1f;应该学习哪些技术&#xff1f;学习路线又是什么&#xff1f;今天小编特意为大家整理了…

相似邻里算法_纽约市-邻里之战

相似邻里算法IBM Data Science Capstone ProjectIBM Data Science Capstone项目 分析和可视化与服装店投资者的要求有关的纽约市结构 (Analyzing and visualizing the structure of New York City in relation to the requirements of a Clothing Store Investor) 介绍 (Introd…

一、面向对象

第一节&#xff1a;面向对象编程1.面向对象三大原则&#xff1a;封装&#xff1a;就是把客观事物封装成抽象的类&#xff0c;并且类可以把自己的数据和方法只让可信的类或者对象操作&#xff0c;对不可信的进行信息隐藏。继承&#xff1a;继承&#xff0c;指可以让某个类型的对…

[poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]

题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 sini 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差分约束, 就是 即 Si 为第 i 项的前缀和, 特别的 So 为0. 转化不等式(连续子段和变为前缀和之差 > < 变为 &g…

linux质控命令,Linux下microRNA质控-cutadapt安装

如果Linux系统已安装pip或conda&#xff0c;cutadapt的安装相对简便一些&#xff0c;示例如下&#xff1a;1.pip安装pip install --user --upgrade cutadapt添加环境变量echo export PATH$PATH:/your path/cutadapt-1.10/bin >> ~/.bashrc2.conda安装conda install -c b…

采用多播传送FIX行情数据的推荐方案

理由FIX协议由一个会话层协议&#xff0c;一个应用层协议和一套域数据字典组成。后两者不依赖于FIX会话。而且&#xff0c;由于FIX会话作为Point-to-point&#xff08;点-对-点&#xff09;通信&#xff0c;并不适合于发布/订阅模式&#xff08;如为大量接收者提供市场数据&…

AJAX 异步加载技术

AJAX 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换&#xff0c;AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新。 传统的网页&#xff08;不使用 AJAX…

linux分辨率和用户有关吗,Linux系统在高分屏非正常分辨率显示

问题描述&#xff1a;win10重装为Ubuntu16.04&#xff0c;在1920x1080的显示屏上&#xff0c;linux系统分辨率只有800x600xrandr # 查看当前显示分辨率#输出&#xff1a;[Screen 0: minimum 800 x 600, current 800 x 600, maximum 800 x 600]可以看出显示屏最小为800x600&…

数据透视表和数据交叉表_数据透视表的数据提取

数据透视表和数据交叉表Consider the data of healthcare drugs as provided in the excel sheet. The concept of pivot tables in python allows you to extract the significance from a large detailed dataset. A pivot table helps in tracking only the required inform…