jenkins+git+maven搭建项目自动化持续集成
2019独角兽企业重金招聘Python工程师标准>>>
1.概要说明
为了开发人员和测试人员的解耦,让开发和测试流程更加便捷,所以采用jenkins+git+maven这套可持续性集成方案。
下图(图1)是设计图:
图1
2.准备工作
- centos6+
- jdk-8u191-linux-x64.tar.gz
- apache-maven-3.5.0-bin.tar.gz
- apache-tomcat-8.5.35.tar.gz
- jenkins.war2.150.1
服务器a.b.c的系统均是centos6.5、jdk用的1.8、服务器B的maven版本是3.5(用于jenkins构建项目时打包)、服务器B部署的jenkins是最新版本的jenkins2.150.X(X表示小版本号)。
3.具体实施
第一步:在服务器上安装jdk8,需要在profile加入全局环境变量(vim /etc/profile),当然也可以加针对用户的环境变量(vim ~/profile)两者配置一项,我采用的是全局环境变量
在服务器B上需要安装maven同样需要配置环境变量同时需要修改maven的setting.xml配置仓库地址和镜像地址(不懂可以自行百度)。在服务器C上安装tomcat,适当的修改tomcat的service.xml的配置文件(不懂可以自行百度),可以修改服务默认端口等,同时查看服务器的防火墙中是否开放了对应的端口,以免服务无法访问(vim /etc/sysconfig/iptables按照22的格式添加端口然后重启iptables即可,防火墙不会配置可以自行学习,简单的。)。在服务器B上同样步骤配置tomcat,配置好后,执行startup.sh文件测试,若能够正常启动,将tomcat目录下的webapp文件夹下的内容清空,将jenkins.war放入改目录下,启动jenkins,然后访问http://ip:port/jenkins/ 若显示界面则启动成功,进入界面先要安装一些插件,插件不会安装可自行百度,教程很多,顺便说一句,jenkins最主要的就是灵活运用各种插件。
#java export JAVA_HOME=/usr/java/jdk1.8.0_191 export JRE_HOME=/usr/java/jdk1.8.0_191/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH # maven export MAVEN_HOME=/usr/maven/apache-maven-3.5.0 export MAVEN_HOME export PATH=$PATH:$MAVEN_HOME/bin |
第二步:配置服务器之间的ssh通讯协议,首先服务器B需要从服务器A获取代码,那么需要在服务器B上生成ssh密钥对(可以参考下面的博客https://blog.csdn.net/yueludanfeng/article/details/79330276),我默认你已经会使用github了,若不会先学习一下在官网上简单的注册个账号即可开通github,在个人的settings选项下配置ssh key将服务器B上的ssh密钥的公钥配置上去即可。服务器B需要通过ssh协议登陆服务器C从而传输构建好的war包到指定的tomcat目录下并且执行一段启动脚本。所以服务器B需要能够免密登陆到服务器C,那么服务器C需要将服务器B产生的公钥追加到authorized_keys文件中,authorized_keys文件在~/.ssh目录下没有需要自己新建一个。具体流程不会的可以参考博客(https://blog.csdn.net/chichuduxing/article/details/68491134),到目前为止,准备工作已经做完,jenkins可以正常启动了,三台服务器之间可以正常通讯了,剩下的就是具体怎么配置jenkins了。
第三步:配置jenkins,jenkins需要安装一些有关maven与ssh的插件,Maven Integration plugin、Publish Over SSH第一个插件是用来创建maven项目的,第二个插件是用来配置ssh协议的。
图2
如图2需要在系统管理里的全局工具中配置maven、git、jdk三个东西。
配置完后保存,返回系统管理页面打开系统配置,需要在里面配置一下ssh。
第一栏可以不配置,Path to Key配置服务器B私钥的地址,key配置服务器B私钥的内容,然后创建一个ssh server 填写服务器C的信息hostName配置ip, username配置登陆名,路径写tomcat的webapp路径。配置完成后可以开始创建maven项目了。
第四步:创建一个maven风格的项目,名字什么的自己定义即可,创建完成后配置该项目需要配置的点有:general、Source Code Management、Build Triggers、Build、Post Steps
如上图:general配置个名字即可自定、Source Code Management需要配置git,这里注意的是需要新建一个git的钥匙串,Build Triggers照着勾选即可,Build需要配置maven命令clean package -Dmaven.test.skip=true,Post Steps这个比较重要需要配置项目发布的一些信息,和发布后执行的一个脚本,用来远程控制服务器C启动tomcat,脚本内容如下:
#!/bin/sh TOMCAT_PATH=/Users/XXX/software/tomcat8.5.24-jenkins/bin echo "TOMCAT_PATH is $TOMCAT_PATH" PID=`(ps -ef | grep tomcat | grep -v "grep") | awk '{print $2}'` if [ "$PID" = "" ] then echo "tomcat is not run!" $TOMCAT_PATH/startup.sh else echo "stop tomcat!" kill -9 $PID PID1=`(ps -ef | grep tomcat | grep -v "grep") | awk '{print $2}'` if [ "$PID1" = "" ] then echo "restart tomcat!" $TOMCAT_PATH/startup.sh else echo "restart fail!" fi fi |
以上亲自部署可以实施,有不足之处请大家包含以及指正,谢谢。
转载于:https://my.oschina.net/Spider001/blog/2992892
jenkins+git+maven搭建项目自动化持续集成相关推荐
- 【DevOps】Jenkins+Git+Gitlab+Sonar+Nexus实现持续集成
文章目录 什么是持续集成?CI/CD指的是什么? 如何实现持续集成 一.筹备工作,CentOS 7.6系统 1.安装JDK,配置环境变量 2.Maven下载 3.Git安装 4.GitLab安装 5. ...
- jenkins maven testng selenium自动化持续集成
准备环境 首先我们新建一个maven的工程,并且在pom.xml中配置好我们依赖的一些jar包 <dependencies><dependency><groupId> ...
- 基于Jenkins+git+gradle+pgyer的android持续集成
前段时间搞了下CI持续集成工具,这里总结一下:供需要的朋友参考,错误之处还请指出,与君共勉. 主要步骤如下: 1. jenkins 安装配置 2.打包环境配置 3.系统配置及插件管理 4.新建项目.b ...
- GitHub之GitHub Actions的项目自动化持续集成和部署
一.基本概念 GitHub Actions 是一个由事件驱动的自动化平台,通过设置触发条件,在某些事件发生时自动运行指定的操作.换言之,GitHub Actions 不仅允许开发人员在平台上托管代码, ...
- Jenkins实现SVN+Maven+Java项目的持续集成
Jenkins 2.46.1 Centos 7.3 JDK 7 安装jdk/maven/svn 在Jenkins所在的Linux机器安装jdk和maven,步骤就不说了,下面是环境变量: export ...
- Jenkins+Jmeter+Gitlab+Ant接口自动化持续集成构建(环境搭建配置)
第一步:环境搭建: 准备工作: Java及jdk配置.jmeter安装配置.Jenkins搭建完成.安装Ant 一.JDK配置 JDK配置请百度自行配置 二.Jmeter安装配置 1.把 apache ...
- jenkins git maven tomat 项目拉取编译自动部署(操作详细)
文章目录 1.项目说明 2.tomcat 配置 (1)tomcat-users.xml 配置用户 (2)context.xml 去掉访问限制 (3)解决 war包过大无法上传 (4)访问host-ma ...
- git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/j ...
- CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台
构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台 CI/CD是什么? 持续集成(CI)/持续交付(CD)的优势 自动化部署流程图 Git Github Gi ...
最新文章
- iOS15.4 来袭:新增“男妈妈”表情及口罩面容解锁、AirTags 反跟踪等新功能
- android 关于多任务下载问题
- 【深度学习】最新「深度学习社区发现」综述论文,174篇文献概述六大类方法(含Github资源)...
- java开发和测试的不同_一些基础的面试的java知识,普及下。开发和测试都用得到。...
- 增长是一切企业问题解决的入口
- SQL实战之获取所有部门当前manager当前的薪水
- linux快速mysql5.7_Linux下安装MySQL 5.7
- 常用sql语句及案例(oracle)
- 发短信属于长连接还是短连接_通过链接发送短信
- 史上最全:Mac搭建Airtest IDE +IOS 测试环境
- 云集网上各种解决win10锁屏壁纸不能播放幻灯片的方法
- C++中圆周率Π的几种表示方法arccos(-1), 2arcsin(1), 4arctan(1)的用法
- CSS的class常用命名规则
- 拼接模型坐标系的理解(五)
- VUE 自定义子组件v-bind及v-on指令的大小写问题
- 标准化、归一化、规范化区别
- openEuler@树莓派
- 论文汇网站第三期改版完成
- 【商业分析 01】商业分析网站汇总
- Eclipse中查找文件快捷键
热门文章
- python怎么写测试脚本语言_手把手带你,用Python写一个Monkey自动化测试脚本!!!...
- java 报500该怎么解决_关于servlet500错误 应该怎么解决
- golang 关闭gc 并手动gc_Golang 大杀器之跟踪剖析 trace
- mysql命令窗口出现问号_mysql在控制台里出现中文问号问题
- 教你如何用python表白_情人节来了,教你个用 Python 表白的技巧
- rest 接口怎么传list_如何设计一个优雅的RESTFUL的接口
- python十进制小数转二进制_python十进制和二进制的转换方法(含浮点数)
- python实现STM32单片机通信
- 【caffe解读】 caffe从数学公式到代码实现3-shape相关类
- 全球及中国小型风电产业未来前景展望及发展形势分析报告2021-2027年