• jenkins部署github项目持续集成


    一、先介绍正向代理和反向代理

    正向代理

     

    反向代理

    二、安装反响代理得到固定域名

    http://www.xiaomiqiu.cn/

    三、Jenkins与Github集成

    配置前要求:

    1.Jenkins已经安装Github插件

    2.Jenkins服务器已经拥有一个公网IP地址(如果没有公网IP则需要安装反向代理进行获取域名)

     第一步:github授权,关联项目

    登录github---->setting---->Developer settings--->Personal access tokens

     
     

    Generate new token(选repo,admin:repo_hook)
     
     

    拉到下面确定生成token
     
     

    第二步:配置Jenkins全局

    尽管Jenkins已经配置与Github代码库进行通信,但我们需从Jenkins手动启动构建,如需启动自动构建,Jenkins需要在Hook URL中监听Github的Post请求,才会进行自动构建

    要获取Jenkins的Hook URL,打开Jenkins首页控制台--》系统管理

    在Github插件的配置中,点击“高级”按钮

    启用Hook URL,并将Hook URL复制出来,并保存刚才的设置

    第二步:配置Github项目仓库

    还需要配置Github项目仓库,因为Github经常有代码处理动作,需要配置Github项目仓库在处理这些动作的同时会发送信号至Jenkins,才使用Jenkins自动构建

    在"Webhooks"选项卡中,点击"Add webhook"

    将在Jenkins生成的Hook URL填入至Payload URL中,另外,选择自主事件

    以Push为例,并保存,即当Github收到了客户端有Push动作时,会触发一个Hook

    保存WebHook之后

    第三步:配置Jenkins项目

    最后需要配置Jenkins项目触发的条件,到此刻,Github遇到Push事件时,Jenkins会收到通知,但Jenkins应该做什么呢?此步骤就是做最后的构建的动作。

    登录jenkins,系统管理,系统设置,找到Github服务器

     
     

     
     

     
     

    保存
    jenkins创建任务

     
     

    任务配置
     
     
     
     
     
     

     
     
    这里根据具体情况而定,我是使用了ssh,
     

     
     

    先save保存,目前为止jenkins已成功与github项目关联了,如果push代码到github上,jenkins就可以得到通知了,关于得到通知后下一步怎么更新服务器上的代码并重启项目,看这里jenkins+docker+github实现项目自动部署(下)

    紧接上文,本文实现push代码到github,服务器自动更新代码并重启

    想要更新服务器的代码有很多方式,比如如果你项目是java web项目,你可以打包成war包,再发送到服务器的tomcat文件夹下。
    我这里采取的方式是在项目里写一个启动脚本,启动脚本里git pull拉取最新代码,这样来更新代码,然后脚本里重启项目,以springboot项目为例,脚本代码如下:

    #!/usr/bin/env bash
    
    git pull  #更新代码
    
    #后面这些不重要,就是一些启动项目的指令,别复制了,会有问题的,
    #反正就是把项目的启动指令放这了,比如java -jar 或者打war包,然后mv xxx.war 到tomcat里
    proj_home=$PWD
    img_output="demo" 
    
    #更新依赖
    mvn clean package -U
    
    docker build -t $img_output .
    
    docker rm -f demo
    
    docker run -d --restart=on-failure:5 --privileged=true 
           -p 8080:8080 
           --name demo  demo 
           java 
           -Duser.timezone=Asia/Shanghai 
           -jar /home/demo.jar
    

    好了,现在启动脚本有了,那么怎么让jenkins在知道有代码push时怎么执行这个脚本呢?
    回到jenkins,我们需要装个ssh插件来远程登录服务器,运行脚本

    系统管理----》插件管理

     
     
     
     

    刷新一下,重启中,等待片刻

     
     

    系统管理----》系统配置,如果插件安装成功的话,会多一个这个配置

     
     

    保存
    继续完成上一篇尚未完成的任务配置
     
     

     
     

     
     
     
     

    保存,至此所有配置都已完成,可以点这里测试一下,是否能重启项目

     
     

     
     

     
     

    如果这样能成功启动的话,可以试一下push代码看看是否能自动触发

  • 相关阅读:
    Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)
    股市投资策略总结(转)
    php学习笔记--高级教程--读取文件、创建文件、写入文件
    史上最简单的Hibernate入门简单介绍
    Java中StringBuilder的清空方法比較
    DHCP Option 60 的理解
    ICMP报文分析
    软件測试自学指南---从入门到精通
    Qt多线程学习:创建多线程
    Bulk Insert命令具体
  • 原文地址:https://www.cnblogs.com/aliceyang/p/11947761.html
Copyright © 2020-2023  润新知