jenkins是一個廣泛用於持續構建的可視化web工具,持續構建說得更直白點,就是各種項目的"自動化"編譯、打包、分發部署。jenkins可以很好的支持各種語言(比如:java, c#, PHP等)的項目構建,也完全兼容ant、maven、gradle等多種第三方構建工具,同時跟svn、git能無縫集成,也支持直接與知名源代碼托管網站,比如github、bitbucket直接集成
jenkins服務器:192.168.239.134
測試服務器: 192.168.239.136
1.配置免密鑰通信
實現自動化部署首先要解決的是免密碼傳輸,配置jenkins至測試服務器之間免密鑰ssh登錄
測試免密鑰ssh登錄

在測試服務器上編寫一個測試腳本,檢測是否可以執行成功,正式環境可以寫一個自動化部署的腳本

2.jenkins新建部署代碼項目
在構建這里選擇執行shell命令

點擊立即構建

控制台輸出日志:成功

這樣就實現了使用jenkins代碼的自動化部署
實際情況中我們通常使用版本控制系統管理代碼,svn 或者 git
二、gitlab利用webhook實現push代碼后jenkins自動構建
jenkins服務器:192.168.239.134
gitlab服務器: 192.168.239.136
PS:如果gitlab與jenkins在同一台服務器,需要更改其中一個的端口,默認都是8080
之前部署了gitlab的代碼托管平台和jenkins代碼發布平台,通常是開發后的代碼先推到Gitlab上管理,然后在Jenkins里通過腳本構建代碼發布。這種方式每次在發版的時候,需要人工去執行jenkins上的構建動作,有時顯得過於繁瑣。於是就想到了Gitlab的Webhook功能,通過Webhook的相關設置,可以實現代碼Push后,自動去觸發jenkins上的構建動作,這樣就不需要人工干預去執行發版操作了
提前將jenkins本機的key添加到gitlab賬戶上

1.jenkins安裝gitlab hook plugin插件


在auto_deploy項目工程里設置代碼的git下載路徑並關聯構建的分支

查看jenkins生成回調地址,在任務構建觸發器下獲取回調URL,下面的URL那一行只有gitlab hook plugina插件下載成功后才能顯示

設置代碼發布的推送腳本

注意:這里使用192.168.239.136的test用戶是與jenkins服務器已經配置了ssh免密鑰登錄
#!/bin/bash SOURCE_DIR=/root/.jenkins/workspace/${JOB_NAME}/ DEST_DIR=/var/www/html/ REMOTE_IP=192.168.239.136 /usr/bin/rsync -e "ssh -p 22" -avpgolr --delete-before --exclude=.git $SOURCE_DIR test@$REMOTE_IP:$DEST_DIR
通過上面的git將代碼下載到jenkins本機jobs里對應任務的workspace下,jenkins部署路徑是/root/.jenkins/workspace/,腳本中${JOB_NAME}是jenkins的內置變量
也可以指定下載目錄,加--exclude忽略哪些文件不需要進行rsync傳輸
#!/bin/bash
SOURCE_DIR=/data/git_tmpdata
再通過rsync將下載的代碼分發到遠程目標機器上
在192.168.239.136上創建/var/www/html/目錄並授權test用戶
mkdir /var/www/html/ -p && chmod -R test.test /var/www/html/
在gitlab上添加webhooks(注意這里是管理員用戶才能添加)

Add Webhook添加完成后,在下方點擊 test進行測試

如果返回Hook successfully executed.表示配置成功。
這樣,下次push代碼后,就會自動觸發jenkins上相關的構建工程進行自動發布了!無需人工干預

在gitlab上push一個文件hello.py,然后測試下是否自動發布了

在jenkins上查看輸出信息

在目標機器192.168.239.136的/var/www/html/目錄下發現hello.py文件已經發布過來了

