Jenkins代码自动部署相关文档
环境
centos 7.0+ Java JDK 1.8+ jenkins 2.220 maven 3.0+ git 1.8+
注意事项
一. linux 安装 JDK (jdk-8u201-linux-x64.tar.gz) 1.下载jdk
2.在/usr 目录下,新建 /java 目录,
3.在/java 目录下,新建/jdk目录,
4.把jdk-8u201-linux-x64.tar.gz 拷贝到/jdk目录下
5.解压 [root@]# tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/java/jdk/
6.vi /etc/profile 配置文件
配置内容如下: export PATH=/usr/java/jdk/jdk1.8.0_201/bin:/usr/java/jdk/jdk1.8.0_201/jre/bin:$PATH
7.[root@]#source /etc/profile 或者 [root@]# . /etc/profile
8.检查是否安装成功 # java -version
特别说明:执行命令 一定要注意空格,否则会提示 “-bash: tar-zxvf: command not found” 二. Linux下Git安装及配置 源码安装
安装依赖的包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 下载git源码并解压
目前最新版本下载地址:https://github.com/git/git/releases/tag/v2.22.0
解压 tar zxvf git-2.11.0.tar.gz
cd git-2.11.0 编译安装
make prefix=/usr/local/git all
make prefix=/usr/local/git install 查看git
whereis git
git –version 配置环境变量
vim /etc/profile
加入export PATH=$PATH:/usr/local/git/bin
生效配置文件 source /etc/profile 配置git
1.设置用户名和email
[root@zhuzhonghua2-fqawb util]# git config –global user.name “hiddenzzh”
[root@zhuzhonghua2-fqawb util]# git config –global user.email “youremail@domain.com”
此时$HOME目录下会新建一个.gitconfig文件 2.为github账号添加SSH keys
ssh-keygen -C “youremail@domain.com”
系统会提示key的保存位置(一般是~/.ssh目录)和指定口令,保持默认,连续三次即可 然后vim打开id_rsa.pub文件,粘贴到github账号管理的添加SSH KEY界面中
vim ~/.ssh/id_rsa.pub
然后将id_rsa.pub文件中的内容粘贴到gitub的“SSH and GPG keys”中。 三. Linux 环境下安装Maven 1、安装wget命令 如果需要通过使用wget命令,直接通过网络下载maven安装包时,需要在linux系统中安装wget命令。 yum -y install wget 2、下载maven安装包 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz 3、解压缩maven tar -zxvf apache-maven-3.5.2-bin.tar.gz 我这里将maven解压缩之后的路径为:/var/local 4、配置maven环境变量 vi /etc/profile 添加环境变量 export MAVEN_HOME=/var/local/apache-maven-3.5.2
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin 编辑之后记得使用source /etc/profile命令是改动生效。 5、验证结果 在任意路径下执行mvn -version验证命令是否有效。 正常结果如下,能够看到当前maven及jdk版本。
Jenkins思维导图
Jenkins主目录修改
Jenkins主目录修改
Jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改:
1.使用你Web容器的管理工具设置JENKINS_HOME环境参数
打开tomcat的bin目录,编辑catalina.sh文件。
在# OS specific support. $var must be set to either true or false.上面添加:export JENKINS_HOME=""
在引号中填入你的路径。
1.在启动Web容器之前设置JENKINS_HOME环境变量.
用root用户登录
编辑profile文件:vi /etc/profile
在最后加入:export JENKINS_HOME=xxxx
保存,退出后执行:source /etc/profile
让配置生效
1.(不推荐)更改Jenkins.war(或者在展开的Web容器)内的web.xml配置文件
<env-entry>
<env-entry-name>HUDSON_HOME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value></env-entry-value>
</env-entry>
<!-- 在<env-entry-value>节点中填入路径,windows系统建议使用/分隔路径 -->
Jenkins版本回滚
Jenkins版本回滚 一、新建一个自由风格项目 二、配置参数化构建过程
1.
添加选项参数
2. 3.
填入以下内容
4. 5. 6.
7.添加字符参数
三、配置SVN 四、配置构建步骤
1. maven打包配置
选择调用顶层Maven目标,Maven版本之前已经在全局工具配置中设置过,目标中填入打包命令
2. 执行shell配置
此脚本为打包备份,回滚脚本
填入以下脚本
case $Status in
Deploy)
echo "Status:$Status"
path="${WORKSPACE}/bak/${BUILD_NUMBER}" #创建每次要备份的目录
if [ -d $path ];
then
echo "The files is already exists "
else
mkdir -p $path
fi
\cp -f ${WORKSPACE}/target/*.war $path #将打包好的war包备份到相应目录,覆盖已存在的目标
echo "Completing!"
;;
Rollback)
echo "Status:$Status"
echo "Version:$Version"
cd ${WORKSPACE}/bak/$Version #进入备份目录
\cp -f *.war ${WORKSPACE}/target/ #将备份拷贝到程序打包目录中,并覆盖之前的war包
;;
*)
exit
;;
esac
这样发布后以后,就会备份如下
3. 定期删除脚本
项目备份不可能无限制备份,这样很快就会占满磁盘,所以我们必须有清除老旧备份的机制。此处配置一个脚本,每次发布都执行一次,判断备份数是否超过5个,如果超过,则删除老旧备份,只保留最新的5个。
再添加一个执行shell步骤,填入以下脚本,其中备份数量可以自行修改减小或加大
ReservedNum=5 #保留文件数
FileDir=${WORKSPACE}/bak/
date=$(date "+%Y%m%d-%H%M%S") cd $FileDir #进入备份目录
FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份 while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done
五、配置发送到远程tomcat目录 其中Source files要注意配置正确,否则发送不了war包,我的jenkins该项目的workspace如下: 六、发布
回到项目主界面,点击Build with Parameters
发布选择Deploy--->开始构建,即可开始发布。
回滚选择Rollback--->输入回滚版本---->开始构建,版本号从构建历史中选择一个输入
使用Jenkins实现Spring Cloud自动化部署
使用Jenkins实现Spring Cloud自动化部署 Jenkins简介
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。简单点来讲就是配置好Jenkins以后可以一键发布项目,包括从git master分支拉取最新的代码,然后打包,然后上传到远程Linux服务器发布等一系列步骤它都可以帮你一键完成。这无疑可以省去很多程序员重复性繁琐的操作。特别是对于现在的spring cloud微服务来说,一个项目由多个小项目组成,每个小项目都独立部署,使用jenkins是最好的部署和管理工具了。 安装Jenkins
安装JDK
安装Git (公钥要配置好,保证本地和远程库可以正常push代码)
安装Maven 安装完maven在/etc/profile中配置环境变量。
安装Jenkins https://jenkins.io/ 官网下载war包,使用命令java -jar jenkins.war运行。
指定端口 java -jar jenkins.war --ajp13Port=-1 --httpPort=8081 Jenkins默认访问8080端口(注意本地机器防火墙配置) 如果端口8080已经被占用,要修改配置文件来改变端口。 sudo vi /etc/default/jenkins 找到HTTP_PORT=8080,把8080改为8000,然后 sudo service jenkins restart 初始化配置Jenkins
1. 在Jenkins启动后访问http://localhost:8080进入Jenkins主页。登录。 2. 在以上第二步使用java –jar jenkins.war运行后,console会输出一段密钥将它粘贴到主页输入框,或者去它指定的地址去复制。 3. 进入选择插件安装界面,选择第一个(Install suggested plugins) 4. 插件安装完成之后,需要创建第一个用户 5. 创建用户之后,就可以使用jenkins了 使用Jenkins
1. 将你的maven工程使用git上传到你的Git(Git Lab或者GitHub) 2. 进入Jenkins主页 3. 安装Maven插件 4. 以同样的方式安装git plugin插件(用于从git拉取最新的代码)和publish over ssh插件(用于上传打包好的项目到远程Linux)。进入系统管理--管理插件--可选插件,在搜索框里面输入git plugin 和publish over ssh,然后点击安装即可。安装好以后可以在“已安装”选项里面看看是否安装成功。 5. 配置Maven 和 JDK 和Git 6. 选择你本地安装好的maven jdk 路径(git 直接 yum install git) 安装后whereis git查看git可执行文件路径,填入Path to Git executable 7. 安装完成后返回主页,创建一个新的jenkins任务 8 .如果你的maven插件安装没有问题,在新建任务时会有Maven Project选项,起名创建。 9. 开始配置Jenkins任务 ① General基本设置 General注意到丢弃旧的构建Disable this project,jenkins默认情况下会保存每次的构建结果,时间久了可想而知硬盘容易塞满,我在实际使用的过程中发现确实很占硬盘,使用这个功能可以删除历史构建保持jenkins工作目录的轻便。 ② Source Code Managerment源码管理工具 使用git,添加地址、用户名密码,设置使用分支,git验证也可以使用ssh key的方式,点击add添加git账号密码。 在Kind下拉菜单可以选择认证方式,一般使用用户名密码或者密钥配置。 ③ Build Triggers 构建触发器 顾名思义就是如何触发构建操作,在这可以设置自动定时执行,还可以远程触发构建,远程机器通过访问url http://jenkins服务器IP:8080/job/项目名称/build?token=TOKEN_NAME来触发构建。丢给小组同事们这一个url后他们就可以潇洒的发测试包啦。 ④Builde Environment构建环境 ⑤Pre Steps 构建环境和preSteps主要是触发构建之前的一些操作,删除workspace,执行远程命令等等。我在构建前做了两件事,清空启动日志,备份原有jar包,install依赖的包 ⑥ Build构建 这块就是打包的配置了,配置构建项目的pom所在路径,在Goals and options上设置了clean package -Dmaven.test.skip=true跳过测试步骤。注意,如果这里写相对路径,应该是相对于JENKINS_HOME/workspace/构建名/ 的路径,我的jenkins版本是2.141默认主目录路径是/var/lib/jenkins ⑦ Post Steps 打包后配置※ 1)先保存上述配置,打开jenkins首页,点击“系统管理”-->“系统设置”,下拉找到找到publish over ssh,进行以下设置(请确保)面的步骤中publish over ssh插件已经安装成功,如果没有发现,那就是还没有安装成功,请返回去安装)。 2)这里的ip设置为目标部署服务器的ip.这里Passphrase为jenkins服务器密码,或者导入jenkins私钥到key 以下是我的配置 3)进入上面的已经创建好的jenkinsWeb项目,点击配置,下拉找到Post Steps进行配置。 这块是重中之重,是紧跟在打包之后的操作,使用linux shell编写操作。Shell脚本请自行编写…. 参数说明: Transfer SetSource files:表示要上传的本地的jar包及路径,可到工作空间去看。 Remove prefix:表示要上传时要去除的文件夹,即只上传jar包。 remote driectory:即表示执行时的路径,相当于把jar包上传到这里了。 exec commad:要执行的命令脚本。 一下是我的启动脚本内容,仅做参考: ⑧ Build Settings构建设置 可配置被通知邮箱,服务器邮箱需要服务器搭建smtp服务,然后在jenkins首页->“系统管理”-->“系统设置”去配置发件邮箱 ⑨ Post-build Action构建后的设置 这个按需求自行配置 10. 以上配置完成后,可以开始构建你的项目 点击Console output查看日志输出 至此,使用Jenkins完成自动化部署配置完成。 总结部署过程遇到的各种坑:
1、所构建项目的pomx.xml路径问?配置时候提示->没有这个文件.pom.xml 创建一个jenkins构建项目时,会在jenkins主目录下的workspace路径下创建与构建名同名的文件夹,git插件会将项目拉去到该文件夹下,因此pom文件的路径应该是相对于该路径. 2、启动过程中,执行脚本保存,console输出没有文件执行权限 jenkins安装后,会在服务器中新增一个jenkins用户,jenkins的构建操作都是以该用户以及用户组去操作的,因此如果该用户没有操作文件的权限就汇报没有权限错误。修改方法:1,为该用户添加权限。2,将用户修改为root而不是用jenkins用户 这里只针对2方法说明: vim /etc/sysconfig/jenkins 修改$JENKINS_USER="root" ##Tips:同样,该配置文件可以指定jenkins主目录而不使用默认 修改Jenkins相关文件夹用户权限 chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins 重启Jenkins服务并检查运行Jenkins的用户是否已经切换为root service jenkins restart # 查看Jenkins进程所属用户 ps -ef | grep jenkins # 若显示为root用户,则表示修改完成. 3、脚本执行成功,但是远程服务并没有启动,查看服务启动日志显示: nohup: failed to run command `java': No such file or directory 这是因为远程服务执行脚本需要配置jdk环境变量, 脚本中添加环境变量 export JAVA_HOME=/home/sinorail/jdk1.8.0_121 export PATH=$JAVA_HOME/bin:$PATH 4、启动打包报错 Failure to find xxxx.jar http://repo.maven.apache.org/maven2 was cached in the local repository 如果你的项目依赖于其他工程,当然你在mvn package当前工程前,要先install所依赖的工程;然而jenkins默认会有一套自己的本地manve库在其主目录下,而不使用自己所配置的本地库. 解决方法: 先将jenkins用户改为root,然后在构建前的执行脚本中添加mvn clean install 父pom的内容。也就是说,让jinkins使用我们自己的库,并且每次构建都在父pom中install一下,然后再构建当前项目. 这样 这个问题就完美解决了。 1.General
General是构建任务的一些基本配置。名称,描述之类的。 项目名称: 是刚才创建构建任务步骤设置的,当然在这里也可以更改。
描述: 对构建任务的描述。
丢弃旧的构建: 服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。当然下方的"保持构建天数" 和 保持构建的最大个数是可以自定义的,需要根据实际情况确定一个合理的值。
其他几个选项在这里不做介绍,有兴趣的可以查看Jenkins"帮助信息", 会有一个大概的介绍。不过这些"帮助信息"都是英文的。 点击右方的这些"问号"查看"帮助信息"
2.源码管理
源码管理就是配置你代码的存放位置。 源码管理
Git: 支持主流的github 和gitlab代码仓库。因我们的研发团队使用的是gitlab,所以下面我只会对该项进行介绍。
Repository URL:仓库地址
Credentials:凭证。可以使用HTTP方式的用户名密码,也可以是RSA文件。 但要通过后面的"ADD"按钮添加凭证。
Branches to build:构建的分支。*/master表示master分支,也可以设置为其他分支。
源码浏览器:你所使用的代码仓库管理工具,如github, gitlab.
URL:填入上方的仓库地址即可。
Version: 8.7 这个是我们gitlab服务器的版本。
Subversion:就是SVN,这里不作介绍。 3.构建触发器
构建触发器,顾名思义,就是构建任务的触发器。 触发远程构建(例如,使用脚本): 该选项会提供一个接口,可以用来在代码层面触发构建。这里不做介绍,后期可能会用到。
Build after other projects are built: 该选项意思是"在其他projects构建后构建"。这里不作介绍,后期可能会用到该选项。
Build periodically: 周期性的构建。很好理解,就是每隔一段时间进行构建。日程表类似 linux crontab书写格式。如下图的设置,表示每隔30分钟进行一次构建。
Build when a change is pushed to GitLab:当有更改push到gitlab代码仓库,即触发构建。后面会有一个触发构建的地址,一般被称为webhooks。需要将这个地址配置到gitlab中,webhooks如何配置后面介绍。这个是常用的构建触发器。
Poll SCM:该选项是配合上面这个选项使用的。当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动。 十分钟检查一次 五、构建结果说明
构建状态
Successful蓝色:构建完成,并且被认为是稳定的。
Unstable黄色:构建完成,但被认为是不稳定的。
Failed红色:构建失败。
Disable灰色:构建已禁用
构建稳定性
构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。
构建历史界面
console output: 输出构建的日志信息
六、jenkins权限管理
由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Strategy Plugin。基于这个插件的权限管理设置请参考这篇文章:http://blog.csdn.net/russ44/article/details/52276222,这里不作详细介绍。
Jenkins代码自动部署相关文档的更多相关文章
- jenkins代码自动部署
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, ...
- thinkphp5自动生成文档/注释代码自动生成api文档
composer require weiwei/api-doc dev-master 安装之后,readme 有详细的使用说明代码: 部分界面: gitbub:https://github.com/z ...
- 利用 Github Actions 自动更新 docfx 文档
利用 Github Actions 自动更新 docfx 文档 Intro docfx 是微软出品一个 .NET API 文档框架,有一个理念是代码即文档,会根据项目代码自动生成 API 文档,即使没 ...
- Mybatis-Generator 自动生成Dao、Model、Mapping相关文档
最近在学习mybatis,结果在写Mapping的映射文件时insert语句一直报错,于是想看看标准的映射文件是什么样.百度到Mybatis-Generator 自动生成Dao.Model.Mappi ...
- 试试使用 eolinker 扫描 GitLab 代码注释自动生成 API 文档?
前言: 一般写完代码之后,还要将各类参数注解写入API文档,方便后续进行对接和测试,这个过程通常都很麻烦,如果有工具可以读取代码注释直接生成API文档的话,那会十分方便. 此前一直都是在使用eolin ...
- Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...
- Java代码自动部署
注:本文来源于<it小熊> [ ①Java代码自动部署-总结简介] 代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节.对于Java开发者来说,Java ...
- SpringBoot结合Swagger2自动生成api文档
首先在pom.xml中添加如下依赖,其它web,lombok等依赖自行添加 <dependency> <groupId>io.springfox</groupId> ...
- Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...
随机推荐
- Spring-Cloud-Alibaba之Seata
微服务中不可避免的会发生服务间的调用,这就一定会涉及到事务相关的问题,在单体项目中我们可以直接很方便的实现事务回滚,但是在分布式系统中就不能像以前那么做了,因为各个服务是独立的一套系统: 而要实现跨服 ...
- Eureka原理剖析
Eureka作为微服务中的注册中心,为微服务集群间各个服务进行调用提供寻址的功能,有了它集群间的服务只需要指定服务名称就可以了,无需再去关心服务具体部署的服务器IP,即可正常调用.下面来对其中我们开发 ...
- POJ3160强连通+spfa最长路(不错)
题意: 给你一个有向图,每个点上有一个权值,可正可负,然后给你一些链接关系,让你找到一个起点,从起点开始走,走过的边可以在走,但是拿过权值的点就不能再拿了,问最多能拿到多少权值? 思路: ...
- FCKeditor编辑器漏洞
目录 FCKeditor asp网页 aspx网页 php网页 jsp网页 FCKeditor FCKeditor是一个功能强大支持所见即所得功能的文本编辑器,可以为用户提供微软office软件一样的 ...
- Python 爬虫与HTTP协议简介
爬虫的实际例子: 搜索引擎(百度.谷歌.360搜索等). 伯乐在线. 惠惠购物助手. 数据分析与研究(数据冰山知乎专栏). 抢票软件等. 什么是网络爬虫: 通俗理解:爬虫是一个模拟人类请求网站行为的程 ...
- Spring JPA使用CriteriaBuilder动态构造查询
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://www.cnblogs.com/mzdljgz/p/11495723. ...
- 【微信小程序】--bindtap参数传递,配合wx.previewImage实现多张缩略图预览
本文为原创随笔,纯属个人理解.如有错误,欢迎指出. 如需转载请注明出处 在微信小程序中预览图片分为 a.预览本地相册中的图片. b.预览某个wxml中的多张图片. 分析:实质其实是一样的.都是给wx. ...
- PHP 判断当前日期是否是法定节假日或者休息日
1.代码如下 $date = date("Ymd",time()); $url = "http://api.goseek.cn/Tools/holiday?date=&q ...
- DOM 绑定事件
// 1.获取事件源 var oDiv = document.getElementById('box'); console.log(oDiv); //2.事件 (1)直接绑定匿名函数 oDiv.onc ...
- Go快速入门(二)
提示:本系列文章适合有其他语音基础并对Go有持续冲动的读者 一.package介绍 Go语言的代码是通过package来组织的,package的概念和你知道的其它语言 里的libraries或者m ...