Jenkins与SVN持续集成
Jenkins与SVN持续集成一、Jenkins版本控制子系统应用发布子系统持续集成子系统部署安装插件全局工具配置构建触发器Linux 的 的 curl 命令一、Jenkins构建伟大,无所不能Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。官网地址https://jenkins.io/zh/持续集成维基百科的定义(Cont
一、Jenkins
构建伟大,无所不能
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
官网地址
持续集成
维基百科的定义(Continuous integration - Wikipedia):
在软件工程里,持续集成(Continuous Integration, CI)是指这样的一种实践:在一天里多次将所有开发人员的代码合并到一个共享的主干里,每次合并都会触发持续集成服务器进行自动构建,这个过程包括了编译、单元测试、集成测试、质量分析等步骤,结果只有两个:成功或者失败。如果得到失败的结果,说明有人提交了不合格的代码,这就能及时发现问题。
Linux规划
1.版本控制子系统
Subversion 服务器
项目对应版本库
版本库中钩子程序
2.持续集成子系统
JDK
Maven
Jenkins
主体程序
SVN 插件
Maven 插件
Deploy to Web Container 插件
3.应用发布子系统
JDK
Tomcat
1.官网下载Generic Java package (.war)
版本控制子系统
1、安装svn服务器:
yum install subversion
2、配置svn服务器:
建立svn版本库根目录及相关目录即svndata及密码权限命令svnpasswd;
mkdir -p /application/{svndata,svnpasswd}
svndata目录:作为存放svn的根目录;
svnpasswd目录:作为存放登录svn的用户和密码;
3、启动svn服务:
svnserve -d -r /application/svndata/
参数:
-d:表示后台运行守护模式;
-r:表示svn服务的根目录;<br>
4、建立版本库:
在/application/svndata/目录下,创建项目sadoc:
svnadmin create /application/svndata/sadoc
会自动创建出一系列固定的目录:
主要目录说明:
conf目录:主要是配置文件、登录用户、密码认证;
hooks目录:主要是svn的钩子脚本模板,使用时去掉.tmpl后缀即可,钩子脚本实际上就是代码提交前后,可以分别执行的脚本,脚本可用perl、shell、python等语言编写,该目录里面脚本文件名代表提交代码执行的不同时机,如提交代码前执行的脚本pre-commit,提交代码后执行的脚本post-commit,更多详情自行学习;
5、修改配置文件:
vim /application/svndata/sadoc/conf/svnserve.conf
anon-access = none
#不允许匿名访问,read为允许匿名访问;
auth-access = write
#允许可写;
password-db = passwd
#密码数据库
authz-db = authz
#控制权限数据库
注意: passwd authz文件都在config下
把用户和密码文件放到自定义的目录中:
配置passwd文件:
[users]
wpf = wpf
test = test<br>
passwd配置文件说明:
格式为:svn账号=svn密码
账号和密码可随意指定;
配置authz:
[groups]
#定义组信息,注意:用户账号在passwd里;
user_groups = wpf,test
[sadoc:/]
@user_groups = rw<br>
authz配置文件说明:
1.权限配置文件中出现的用户必须已经在用户配置文件中定义;
2.对权限配置文件的修改立即生效,不必重启svn;
3.一个用户组可包含多个用户,用户间用逗号分隔;
4.版本库目录格式:
[<版本库>://项目目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方括号内部分可有多种写法:
[/]:表示根目录及以下,根目录是svnserve启动时指定的,[/]表示对全部版本库设置权限;
[repos:/]:表示对版本库repos设置权限;
[repos:/sadoc]:表示对版本库repos中的sadoc项目设置权限;
[repos:/sadoc/oldboy]:表示对版本库repos中的sadoc项目的oldboy目录设置权限;
权限主体可以是用户、用户组或*,用户组在前面加@,*表示全部用户;
权限可以是w、r、wr和空,空表示没有任何权限;
authz中每个参数都要顶格写,开头不能有空格;
对于组,要以@开头,而用户不需要;
6、重启svn服务:
pkill svnserve
svnserve -d -r /application/svndata/
打开本地svn客户端检出
svn://192.168.1.131/sadoc
在目录中创建web项目
应用发布子系统
1.安装jdk和配置环境变量
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
2.配置Tomcat 服务器的账号密码/opt/module/apache-tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat_user" password="123" roles="manager-gui,manager-script,manager-jmx,manager-status" />
启动后打开tomcat的Manager App
输入用户名密码后可以看到后台页面
持续集成子系统部署
安装jdk和配置环境变量
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
2.下载到本地后直接通过命令运行
java -jar jenkins.war
运行后打开浏览器,会提示解锁 Jenkins,按照提示解锁即可
http://192.168.1.130:8080
Jenkenis报错:该jenkins实例似乎已离线
解决方法:
1.保留此离线页面,重新开启一个浏览器tab标签页
2.输入输入网址http://192.168.1.130:8080/pluginManager/advanced
3.进入该页面最底下,找到【升级站点】,把其中的链接改成如下其中一个
http://mirror.xmission.com/jenkins/updates/update-center.json<br>
确定保存
4.提示jenkins,在重新启动jenkins,OK,已经可以重新连网,下载插件
点击关闭,不安装任何插件,我们后面自行安装
安装插件
在插件安装故障或需要安装新插件时
Manage Jenkins>Manage Plugins
必须安装的插件如下
1.Localization: Chinese (Simplified)
2.Subversion
3.Deploy to container
勾选安装完成后重启。
更新中心 可以查看正在更新和失败更新
全局工具配置
全局工具配置
创建任务
增加构建
点击构建,可以看到控制台日志。
增加构建后的操作
控制台输出
http://192.168.1.131:8080/myweb/即可看到效果
构建触发器
http://192.168.1.130:8080/job/myweb/build?token=mypass
筏访问上面的地址即可激发构建
当然,这个地址的调用如果用svn服务器就更好了
11556792183ceb249213ab1901e5198ab7
Linux 的 的 curl 命令
Linux 的 curl 命令用来发送 HTTP 请求。
-X 参数:指定请求方式
-v 参数:显示响应结果
-u 参数:携带用户名/密码
-H 参数:携带请求消息头信息
curl -X post -v -u admin:63bbbd696fc94ee387d33e674021c41d -H "Jenkins-Crumb:11dca0ff325396ec44d7ff6804987e6fd0" http://192.168.1.130:8080/job/myweb/build?token=mypass
编辑 SVN 版本库中的钩子程序
钩子程序由 hooks/post-commit.tmpl 复制得到
cp post-commit.tmpl post-commit
这里注意不要使用任何扩展名。如果按照我们习惯的使用.sh 扩展名则钩 子程序无法正常工作。
记得使用 chmod 命令设置为可执行权限
加入 curl 命令
curl -X post -v -u admin:63bbbd696fc94ee387d33e674021c41d -H "Jenkins-Crumb:11dca0ff325396ec44d7ff6804987e6fd0" http://192.168.1.130:8080/job/myweb/build?token=mypass
更多推荐
所有评论(0)