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: , done.
Compressing objects: % (/), done.
Writing objects: % (/), 47.77 MiB | 39.28 MiB/s, done.
Total (delta ), reused (delta )
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./bin/mvn clean package -Dmaven.test.skip=true'''
}
stage('deploy') {
sh '''
JENKINS_NODE_COOKIE=dontkillme
export JAVA_HOME=/usr/local/jdk1.
TOMCAT_NAME=tomcat
TOMCAT_HOME=/application/$TOMCAT_NAME
WWWROOT=$TOMCAT_HOME/webapps/ROOT
if [ -d $WWWROOT ]; then
mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")
fi
unzip ${WORKSPACE}/target/*.war -d $WWWROOT
PID=$(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 build
sh '''export JAVA_HOME=/usr/local/jdk1.8 //在指定java环境变量
/usr/local/maven3./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.
TOMCAT_NAME=tomcat
TOMCAT_HOME=/usr/local/$TOMCAT_NAME
WWWROOT=$TOMCAT_HOME/webapps/ROOT
if [ -d $WWWROOT ]; then //如果目录存在,先备份
mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")
fi
unzip ${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!!!!!!!"
}
}
四、构建

五、访问

Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目的更多相关文章
- 【linux】【jenkins】自动化运维四 整合gitlab、docker发布java项目
jenkins发布java项目 过程参考发布vue项目.https://www.cnblogs.com/jxd283465/p/11543431.html 大同小异. vue建立的是Freestyle ...
- Jenkins自动化CI CD流水线之1--介绍与安装
第1章 大纲 CI/CD, DevOps介绍 Git安装与使用 Jenkins安装与使用 权限管理 参数化构建 Master-Slave 流水线(Pipeline) 邮件通知 应用案例 自动发布PHP ...
- Jenkins与Docker的自动化CI/CD实战
Jenkins与Docker的自动化CI/CD实战 互联网Java架构 2018-09-19 15:46:13 一.发布流程设计 工作流程: 开发人员提交代码到Git版本仓库:Jenkins人工/定时 ...
- Jenkins 配置CI/CD任务
本文演示如何通过Jenkins创建CI/CD任务,部署一整套微服务体系结构,并运行在之前搭建的mini云平台上. 如果是初始尝试实践,可能需要参考 快速搭建云原生架构的实践环境 和 Jhipster技 ...
- 使用 Jenkins 搭建 CI/CD All In One
使用 Jenkins 搭建 CI/CD All In One https://ci.jenkins.io/ https://www.jenkins.io/zh/ jobs pipelines refs ...
- 项目案例之Pipeline流水线发布JAVA项目(三)
项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...
- Docker: Jenkins与Docker的自动化CI/CD流水线实战
什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...
- docker | jenkins 实现自动化CI/CD,后端躺着把运维的钱挣了!(下)
前言 在上一篇文章中,我们使用docker编写Dockerfile文件,将我们自己的项目构建成镜像,然后发布到Docker Hub中,并且用自己的云服务器拉取Docker Hub上我们自己上传的项目镜 ...
- .Net在Windows上使用Jenkins做CI/CD的那些事
背景 最近入职了一家新公司,公司各个方面都让我非常的满意,我也怀着紧张与兴奋的心情入职后,在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD. 本篇的重点主要分享 ...
- 阿里CI/CD、DevOps、分层自动化技术
原文地址:http://www.infoq.com/cn/news/2017/01/alibaba-yunxiao-cicd-devops 在互联网时代,产品快速迭代的重要性不言而喻.不管是传统企业还 ...
随机推荐
- java字符编码转换研究(转)
1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...
- [hadoop入门]mapper与reducer(word_count计数demo)
1.mapper #!/usr/bin/env python import sys for line in sys.stdin: line = line.strip() words = line.sp ...
- IO流对文件的读取操作
/*1. 在当前项目的根目录下有一个名为“info.txt”的文件,里面存放的内容如下(可手动创建录入,不需要使用IO流): 2. 利用IO流的知识读取info.txt文件的内容, 在控制台上打印大写 ...
- String/StringBuilder 类 用对象数组实现登录注册功能
一.需求说明:实现用户注册.登陆功能: 程序中使用一个长度为3的对象数组,存储用户的登录名和密码: 例如如下格式: 登录名 密码 生日 爱好 zhangsan 11 ...
- 怎么把网页保存为pdf文件
不就是用chrome浏览器打印功能,然后保存为pdf就可以了吗? 对于一些结构简单的比如,RFC文档这样操作一般没什么问题,对于一些有浮动元素的网页就不好说了,必须先用chrome的审查元素把一些不必 ...
- 1.5快速上手OpenCV图像处理
在上一节中,已经完成了OPENCV的配置,在本节接触几个Opencv图像处理相关的程序,看看opencv用简洁的代码能够实现哪些有趣的图像效果. 1.第一个程序:图像显示 #include<op ...
- Entity Framework Tutorial Basics(28):Concurrency
Concurrency in Entity Framework: Entity Framework supports Optimistic Concurrency by default. In the ...
- Locust学习总结分享
简介: Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具,它非常容易使用,也非常好学.它的主要思想就是模拟一群用户将访问你的网站.每个用户的行为由你编写的py ...
- Info.plist文件配置及注意事项
1.Info.plist文件配置 常见配置 2.注意事项 Info.plist文件移动路径修改编译报错:could not read data from '/Users/lelight/Desktop ...
- day01.1-计算机体系与数据描述
一. 指令执行过程 二. 计算机体系架构 其中,ROM所存数据较为 ...