一、Jenkins

  构建伟大,无所不能

  Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

  官网地址

  https://jenkins.io/zh/

  持续集成

维基百科的定义(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
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐