之前说到的jenkins自动化构建发版是通过svn方式,今天这里介绍下通过git方式发本的操作记录。

一、不管是通过svn发版还是git发版,都要首先下载svn或git插件。
登陆jenkins,依次点击“Jenkins首页”->“系统管理”->“管理插件”->"可选插件",选在svn或git有关插件(ctrl+f搜索"svn"或"git"),直接进行安装即可
安装成功后,在“已安装”里可以看到:

这样,在构建任务的配置中,在”源码管理“里就有svn和git的选项了

二、接着说下git发版配置。git代码是在gitlab平台托管的。
        1)如果要发版的代码在gitlab上是Private私有状态或Internal状态,那么就只能通过ssh方式连接(推荐此种方式,比较安全),这两种模式下是不能通过http方式连接。
             做法如下:
             现将jenkins本机的公钥上传到gitlab上(保证gitlab机器的ssh端口已对客户机开放)

[root@redmine ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmlV29T9ViFA+ld+ziZqDXwcOwAzSU8B4oESOZLEs51m+us8MPLYED7s1gQTmnXx2yTxCT67WnHUpRExm4gZj0jQTUi5uYFMuEJnXYLi7/YgeTjRkjYFs8RdpsNUp+FA6bmBSVLa/JDvWrvdO1xhicJp/8cX/c5Y16iXIgDWnewMgoknUYHZL+cplF5+JYSSb9We3+qq2GzWnkX5VkuSq9ky+ZYbUH/JrlbTAp8rB4J5+THYz5ahvP1UteMcaEf9duoT7N+VJLANmOWcEn7Q5JnNhNVJz5hafYg5cQgFOHmixriZaPsdAJ+yaN21sv+pBbTdzbHQn1oz/gpbd47imqQ== root@redmine.wangshibo.com

然后在jenkins本机测试是否能正常下载gitlab代码(假设git的url是git.wangshibo.net)

jenkins本机测试代码下载:(下面的两行--global的全局配置要跟上,不然提交后的记录在gitlab上是追踪不到的,只有这个全局配置了,才能在gitlab上找到相应用户的提交记录)
[root@redmine ~]# mkdir git
[root@redmine ~]# cd git/
[root@redmine git]# git init .
Initialized empty Git repository in /root/git/.git/
[root@redmine git]# git config --global user.name "王士博"                         //全局设置,指定下载使用的gitlab的用户名
[root@redmine git]# git config --global user.email "root@redmine.wangshibo.com-jenkins"      //全局设置,指定下载使用的Keys名称,就是上面添加的Keys
[root@redmine git]# git clone git@git.wangshibo.net:weixin/weixin.git
Initialized empty Git repository in /root/git/weixin/.git/
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10/10), done.

然后在jenkins里相关任务配置里指定git路径:

2)如果要发版的代码在gitlab上是Public公开状态(这是必要前提条件,如下图),那么就可以直接通过http连接(http连接只能在这种模式下才能成功!要保证gitlab机器的http端口对客户机开放)

这样直接通过git clone http://git.wangshibo.net:8081/weixin/weixin.git 就能下载代码了
使用http方式直接连接gitlab显然没有ssh连接方式安全,但是也可以做些安全设置,比如在gitlab本机的iptables里做端口限制(如上是8081端口),添加白名单等。

然后在jenkins里相关任务配置里指定git路径:

三、jenkins上的发版脚本
脚本如下:

脚本内容:
#!/bin/bash

SOURCE_DIR=/srv/apache-tomcat-7.0.67/webapps/jenkins/jobs/${JOB_NAME}/workspace/
DEST_DIR=/Data/app/xqsj_wx/
REMOTE_IP=*.*.*.*

/usr/bin/rsync -e "ssh -p25791" -avpgolr --delete-before $SOURCE_DIR $REMOTE_IP:$DEST_DIR

脚本解释:
1)通过上面的git将业务代码下载到jenkins本机jobs里对应任务的workspace下。
     本机的jenins部署路径是/srv/apache-tomcat-7.0.67/webapps/jenkins
     [root@redmine workspace]# pwd                         //wx-test是jenkins界面的任务工程名,脚本中${JOB_NAME}是jenkins的内置变量
     /srv/apache-tomcat-7.0.67/webapps/jenkins/jobs/wx-test/workspace
2)再通过rsync将下载的代码分发到远程目标机器上即可。

jenkins中通过git发版操作记录的更多相关文章

  1. centos下升级git版本的操作记录

    在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned e ...

  2. 转:centos下升级git版本的操作记录

    https://www.cnblogs.com/kevingrace/p/8252517.html 在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时 ...

  3. 在Jenkins中使用Git Plugin访问Https代码库失败的问题

    最近需要在Jenkins上配置一个Job,SCM源是http://git.opendaylight.org/gerrit/p/integration.git 于是使用Jenkins的Git Plugi ...

  4. centos6下升级git版本的操作记录

    编译go_ethereum的时候出现了错误 然后发现是自己的git没有升级成功  因为编译需要高版本的git版本  所以会编译不成功  之后执行 root@uatjenkins01 ~]# git - ...

  5. Java调用Jenkins接口实现远程发版

    主要有以下几个要点: 1.在 Manage Jenkins 中设置Configure Global Security(主要是设置CSRF Protection中的prevent cross site ...

  6. jenkins+docker+docker-compose完整发版流程

    首先搭建jenkins+maven+nexus这一套自动化打包工具,并配置好相应配置,这里就不再赘述了. 其次,搭建好docker集群和私有仓库,以及安装好docker-compose工具,配置好相应 ...

  7. 关于Git的一些操作记录

    本文是我的一些记录,不按教学顺序 1.如何添加不上传的文件或文件夹,并且将已经添加到远程库的文件夹删除 操作过程如下: vim .gitignore // 按i进入编辑模式 写入 node_modul ...

  8. GlusterFS分布式存储系统中更换故障Brick的操作记录

    前面已经介绍了GlusterFS分布式存储集群环境部署记录,现在模拟下更换故障Brick的操作: 1)GlusterFS集群系统一共有4个节点,集群信息如下: 分别在各个节点上配置hosts.同步好系 ...

  9. GlusterFS分布式存储系统中更换故障Brick的操作记录1

    前面已经介绍了GlusterFS分布式存储集群环境部署记录,现在模拟下更换故障Brick的操作: 1)GlusterFS集群系统一共有4个节点,集群信息如下: 分别在各个节点上配置hosts.同步好系 ...

随机推荐

  1. Android - 模块添加与编译

    Android5.1 Ubuntu14.04 Android系统编译依靠.mk文件 添加google服务 我们自己的ROM里没有google服务 完整的google包里包含google框架和各种服务, ...

  2. UITableView详细注释

    style //普通 UITableViewStylePlain, //分组 UITableViewStyleGrouped //表格视图 UITableView * tableView = [[UI ...

  3. [Android] android .keystore文件转x509pem工具

    .keystore是android的签名文件,最近在做联通联运的时候,发现他们需要上传x509pem格式的文件来签名所以就研究了一下如何转化 方法一:使用openssl的方法 http://blog. ...

  4. Android touch事件处理流程

    前面我们看了key事件的处理流程,相信大家对此已经有了新的认识,这篇文章我打算带领大家来看看稍微复杂些的touch 事件的处理流程.说它复杂是因为key事件本身就key down,up,long pr ...

  5. 一组PHP可逆加密解密算法

    对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...

  6. 区别和详解:js中call()和apply()的用法

    1.关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2.语法和 ...

  7. Eclipse--Web项目中 .classpath、mymetadata、project文件的功用

    Web项目中 .classpath..mymetadata..project文件的作用 创建Web Project时,会自动生成这个三个文件. 一..mymetadata文件 1.部署项目用的,把项目 ...

  8. Hibernate 缓存介绍

    Hibernate中提供了两级缓存,一级缓存是Session级别的缓存,它属于事务范围的缓存,该级缓存由hibernate管理,应用程序无需干预:二级缓存是SessionFactory级别的缓存,该级 ...

  9. Java NIO 同步非阻塞

    同步非阻塞IO (NIO) NIO是基于事件驱动思想的,实现上通常采用Reactor(http://en.wikipedia.org/wiki/Reactor_pattern)模式,从程序角度而言,当 ...

  10. SQL Server:数据库角色

    除了上述固定数据库角色之外,还有一种特殊的固定数据库角色,名为public. 数据库的每个合法用户都必须属于public角色,它为数据库中的用户提供了所有默认权限. 一般情况下,public角色允许用 ...