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