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 文档的痛点: 文档需 ...
随机推荐
- 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
Given an array of integers nums and an integer limit, return the size of the longest continuous suba ...
- 针对缓冲区保护技术(ASLR)的一次初探
0x01 前言 ASLR 是一种针对缓冲区溢出的安全保护技术,通过对堆.栈.共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一 ...
- LA3135简单多路归并(优先队列)
题意: 有N个任务,每个任务都有自己的时间间隔(就是每t秒请求执行一次)和任务id,这n个任务公用一个cpu,每次我们都执行时间靠前的,如果相同时间内有多个任务,就执行任务id小的,要求模 ...
- C++ Log日志系统
闲得无聊,瞎写的一个东西. 好多地方能够优化甚至可能重写,也没写,就记下了个思路在这里. 主要熟练一下C++17的内容. version = 0.1 lc_log .h 1 #pragma once ...
- 【Matlab】BASK的调试与解调仿真
索引 一.BASK的调制 1.1 曼彻斯特码 1.2 增益控制 1.3 常量求和 1.4 与载波相乘 1.5 波形预览 1.6 参数设置(参考) 二.BASK的解调 2.1 滤波 2.2 信号比较 2 ...
- PlantUML --- 使用代码快速绘制时序图、思维导图
本篇思维导图 @startmindmap <style> mindmapDiagram { .green { BackgroundColor lightgreen } .rose { Ba ...
- margin (子元素远离父元素边框)
如果父盒子没有设置border框着,那么他的子元素无法利用margin-top 来远离父元素的上边框 如果使用了margin-top会使子元素和父元素一起往下移 (子想离,父不设置border边框 则 ...
- queryset惰性与缓存
https://blog.csdn.net/zhu6201976/article/details/83550461
- ssh-的搭建和使用
ssh的作用 : 可实现远程客户端登录服务器并对服务器的文件进行操作 ssh服务器的安装 farsight@ubuntu:~$ sudo apt-get install openssh-server ...
- istio流量管理:非侵入式流量治理
在服务治理中,流量管理是一个广泛的话题,一般情况下,常用的包括: 动态修改服务访问的负载均衡策略,比如根据某个请求特征做会话保持: 同一个服务有多版本管理,将一部分流量切到某个版本上: 对服务进行保护 ...