jenkins中通過git發版操作記錄


 

之前說到的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將下載的代碼分發到遠程目標機器上即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM