首页 > 技术文章 > Jenkins自动部署项目

soldier-cnblogs 2020-07-26 15:55 原文

开发前的准备

本人安装的是依赖于tomcat运行的Jenkins

1、CentOS7 安装Jenkins链接

2、为服务器的tomcat配置一个账户密码,用于Jenkins访问tomcat

vim /usr/local/apache-tomcat-9.0.20/conf/tomcat-users.xml

 在 <tomcat-users></tomcat-users> 标签内加入

<!-- 2020-07-26 soldier -->
 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <user username="tomcat_user" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

解决tomcat8.5版本之后配置用户后,访问的ip限制问题:

vim /usr/local/apache-tomcat-9.0.20/webapps/manager/META-INF/context.xml

将 127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1 修改为

127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+

 

一、Jenkins+SVN 持续集成环境搭建

本人环境配置为:Ubuntu 18.04 + IDEA 2018.3 + JDK 1.8 + Maven 3.6.1 + SVN,SVN的安装可参考:链接

1.1 本地使用idea创建一个maven webapp项目

1.2 服务器搭建Subversion

  1. 创建svn版本库
    mkdir -p /var/svn/repository
    chmod -R 777 /var/svn/
  2. 安装svn
    yum -y install subversion
  3. 创建项目仓库
    cd /var/svn/repository
    mkdir jenkins-test
    svnadmin create jenkins-test
  4. 修改配置文件,设置当前版本库权限
    vim /var/svn/repository/jenkins-test/conf/svnserve.conf

     修改为:

  5. 设置当前版本库账号
    vim /var/svn/repository/jenkins-test/conf/passwd

    修改为:

  6.  设置当前版本库的subman账号有读写权限,其它账号没有权限

    vim /var/svn/repository/jenkins-test/conf/authz

    修改为:

  7. 启动svn服务端
    svnserve -d -r /var/svn/repository

    -d 以守护进程的方式后台启动程序

    -r  指定启动使用的仓库地址 这样客户端不用输入全路径,就可以访问版本库

    可以使用 svn co svn://127.0.0.1/jenkins-test 命令测试一下

  8. 关闭svn服务端
    # 查看svn的进程id
    ps aux | grep svn
    # 杀死进程
    kill -9 进程id

1.3 将ubuntu18.04本地项目提交到Subversion服务器

  1. 查看svn资源库

  2. 弹出一个svn的窗口,在左边有加号可以添加一个svn的库

  3. 点击”+”号,添加SVN资源库,URL地址输入您创建的版本库地址,我们这里输入:svn://121.37.4.145/jenkins-test

     之后idea会弹窗让我们输入用户名(subman)和密码(123123)

  4. 找到我们创建的Maven工程,右键 ->Subversion -> Share Directory

  5. 弹出如下图,进行选中

  6. 点击 Share,弹出以下界面,默认勾中 1.8 format
  7. 点击 OK,如果成功,弹出以下界面

  8. 刷新SVN Respositories,弹出以下界面

  9. 然后返回,选中工程右键 ->Subversion -> Commit Directory…
  10. 点击Commit,提交成功,查看SVN服务器,代码已提交成功

     

1.4 Jenkins客户端创建工程并配置源码部署

  1. 点击新建任务,勾选和输入如下值:
  2. 点击确定,点击【源码管理】,输入如下值点击【保存】
  3. 点击左边的【配置】,选择【构建环境】
  4. 下拉到【构建后操作】,点击添加选择【Deploy war/ear to a container】
  5. 点击【立即构建】

    点击 #1 旁边的下三角,可以查看控制台输出,第一次构建的时间会比较长,下一次就不会了
  6. 即可访问项目:http://121.37.4.145:8080/jenkins-test/

     

1.5 编辑SVN钩子程序使用curl命令触发构建,实现整个自动化持续集成流程

  1. 构建触发器

    远程触发的基本原理是 SVN 服务器给 Jenkins 项目特定的 URL 地址发送请求, 但必须以请求参数的形式携带一个特定值,这个特定值就是这里的“身份验证令牌”。

      比如我们这个项目的地址触发地址是: http://121.37.4.145:8080/jenkins/job/jenkins-test/build

           身份验证令牌是: ATGUIGU_TOKEN

           那么最终的访问地址就是: http://121.37.4.145:8080/jenkins/job/jenkins-test/build?token=ATGUIGU_TOK EN 触发访问地址中 Jenkins 访问地址是根据实际情况改变的,项目名称根据实际 情况改变,其他都不变。

  2. Linux 的 curl 命令

    Linux 的 curl 命令用来发送 HTTP 请求
        -X 参数:指定请求方式
        -v 参数:显示响应结果
        -u 参数:携带用户名/密码
        -H 参数:携带请求消息头信息

    例子:curl -X post -v -u [Jenkins 用户名]:[Jenkins 密码] -H "请求消息头信息" http://[服务器 IP 地址]:[服务器端口 号]/jenkins/job/[Jenkins 项目名称]/build?token=[身份验证令牌]

     Jenkins 密码通过下面命令查看:

    cat /root/.jenkins/secrets/initialAdminPassword

    所以本项目的curl命令为:

    curl -X post -v -u admin:069a478a56874ded8454a411ea4f3aaa http://121.37.4.145:8080/jenkins/job/jenkins-test/build?token=ATGUIGU_TOKEN

    执行后,会发现 项目又构建了一次

  3. 编辑 SVN 版本库中的钩子程序

     

     !!这里注意不要使用任何扩展名。如果按照我们习惯的使用.sh 扩展名则钩 子程序无法正常工作。

    chmod 命令设置为钩子程序授予可执行权限

    chmod 755 post-commit

    把原有内容注释掉,加入 curl 命令

    vim post-commit

  4. 修改本地代码并提交测试

     

     浏览器查看:

  5. 补充

    1. 如果提交了代码无法执行,那可能是钩子程序没有可执行权限,注意授予权限

    2. 如果发生 Jenkins 服务器从 SVN 服务器下载代码不是最新版的情况,那么就在 SVN 服务器的 URL 地址后面加上@HEAD 强制要求下载最新版。

    至此,Jenkins+SVN 持续集成环境搭建全部完成!

二、Jenkins+Git 持续集成环境搭建

Jenkins 与 GitHub 配合实现持续集成需要注意以下几点:

  第一:Jenkins 要部署到外网上,因为内网地址 GitHub 是无法访问到的。这一 点可以通过租用阿里云等平台提供的云服务器实现。

  第二:Jenkins 所在的主机上需要安装 Git,通过 Git 程序从 GitHub 上 clone 代 码。

  第三:在 Jenkins 内需要指定 Git 程序位置,和指定 JDK、Maven 程序位置非常 类似。

  第四:在 GitHub 上使用每个 repository 的 WebHook 方式远程触发 Jenkins 构建。

  第五:在 Jenkins 内关闭“防止跨站点请求伪造”

2.1 Github及Jenkins配置

  1. 本地使用idea创建一个maven webapp项目

  2. GitHub官网创建一个代码仓库

     

  3. Github中项目配置webhook
    点击项目的【settings】->【Webhooks】

     

    主要操作如下:(部分没有勾选的值没有截屏出来)

    Hook URL获取方式:链接教程

     

    最终结果:

2.2 Jenkins实现自动化部署

进入任务【jenkins-git-test】

  1. General

     

  2. 源码管理

     

  3. 构建触发器

     

  4. 构建

     

  5. 构建后的操作

  6. 提交项目测试

     

     查看:成功!!!!!!

 

推荐阅读