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

正向代理

反向代理

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

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代码看看是否能自动触发

jenkins部署github项目持续集成的更多相关文章

  1. Jenkins构建Android项目持续集成之findbugs的使用

    Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...

  2. Jenkins构建Android项目持续集成之单元测试及代码覆盖率

    单元测试 在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和视 ...

  3. Jenkins + testNg + maven 项目持续集成

    搞了一整天,梳理下关键点: 1.项目的pom.xml要配置插件,同时指定testng.xml文件的位置.就被这个卡了好久 <properties> <maven-surefire-p ...

  4. 构建基于Jenkins + Github的持续集成环境

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  5. 利用Travis CI+GitHub实现持续集成和自动部署

    前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标 ...

  6. [Jenkins][GitHub]2 持续集成环境初探

    预计阅读时间:30分钟 部署环境:Jenkins ver. 2.61 + Centos7 + Java 1.8 参考链接: http://www.jianshu.com/p/22b7860b4e81 ...

  7. Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建

    详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...

  8. Framework项目持续集成(jenkins)及集合SonarQube

    目录 Framework项目持续集成及集合SonarQube - 前言 CI/CD是什么 -- jenkins 什么是sonarqube?什么是CodeReview? 什么是sonarqube? 什么 ...

  9. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

随机推荐

  1. django搭建一个小型的服务器运维网站-用户登陆与session

    目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...

  2. CF E2 - Daleks' Invasion (medium) (LCA求两点树上路径上的最大边权)

    http://codeforces.com/contest/1184/problem/E2 题意:给出一副图,首先求出这幅图的最小生成树 , 然后修改这幅图上不属于最小生成树的边权,使得修改后的图在求 ...

  3. maven将依赖第三方包打包(package)到jar中

    前提:项目是一个纯maven的java工程,通过idea中file-->new-->project-->maven来创建的,不是spring boot工程(不是通过file--> ...

  4. java 集合框架 List相关接口

    AbstractCollection 此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作. 还有两个抽象方法,具体的迭代器,具体的Collection 的大小 pu ...

  5. Altium Designer chapter2总结

    原理图开发环境这节中需要注意的如下: (1)电路图首先项设定中需注意的地方: 1.General:中经常用到的自动生成交叉节点.放置元件时自动增加选项.复合封装元件的字母数字后缀选项.默认电源对象名称 ...

  6. python匿名函数应用--动态计算器

    匿名函数: 一般用于函数体较为简单的运算,和一些不需要函数名的传递.  lambda 参数1:运算举例:  func = lambda x,y:x+y :可以给匿名函数添加变量名. 匿名函数的应用: ...

  7. jdk (Java Development Kit)

    JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具. JD ...

  8. 让 Visio 2003/2007 同时开多个独立窗口

    1. 打开 Visio 2003/2007 2. 点击菜单[工具] -> [选项]: 3. 在弹出的“选项” 对话框中选择“高级”选项页: 4. 去掉“在同一窗口中打开每一 ShapeSheet ...

  9. Sublime Text3安装配置

    Sublime Text3的所有package都可在如下网站检索 https://packagecontrol.io/browse 以下是我的插件列表 CoolFormat 一款C\C++\C#\CS ...

  10. kvm扩容home目录

    KVM虚拟磁盘扩容 1.磁盘扩容分为raw和qcow2两种扩容方式,命令相同,区别是后缀名 [root@daixuan ~]# qemu-img info /data/daixuan1.qcow2 / ...