jenkins中經過git發版操做記錄

 

以前說到的jenkins自動化構建發版是經過svn方式,今天這裏介紹下經過git方式發本的操做記錄。git

1、無論是經過svn發版仍是git發版,都要首先下載svn或git插件。
登錄jenkins,依次點擊「Jenkins首頁」->「系統管理」->「管理插件」->"可選插件",選在svn或git有關插件(ctrl+f搜索"svn"或"git"),直接進行安裝便可
安裝成功後,在「已安裝」裏能夠看到:web

 

這樣,在構建任務的配置中,在」源碼管理「裏就有svn和git的選項了apache

 

 

2、接着說下git發版配置。git代碼是在gitlab平臺託管的。
        1)若是要發版的代碼在gitlab上是Private私有狀態或Internal狀態,那麼就只能經過ssh方式鏈接(推薦此種方式,比較安全),這兩種模式下是不能經過http方式鏈接。
             作法以下:
             現將jenkins本機的公鑰上傳到gitlab上(保證gitlab機器的ssh端口已對客戶機開放)tomcat

[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)bash

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.app

 

而後在jenkins裏相關任務配置裏指定git路徑:ssh

 

     2)若是要發版的代碼在gitlab上是Public公開狀態(這是必要前提條件,以下圖),那麼就能夠直接經過http鏈接(http鏈接只能在這種模式下才能成功!要保證gitlab機器的http端口對客戶機開放)webapp

 

 

這樣直接經過git clone http://git.wangshibo.net:8081/weixin/weixin.git 就能下載代碼了
使用http方式直接鏈接gitlab顯然沒有ssh鏈接方式安全,可是也能夠作些安全設置,好比在gitlab本機的iptables裏作端口限制(如上是8081端口),添加白名單等。svn

而後在jenkins裏相關任務配置裏指定git路徑:

 

3、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將下載的代碼分發到遠程目標機器上便可。

相關文章
相關標籤/搜索