前言
Jenkins 是一個(gè)開源的残揉、功能強(qiáng)大的應(yīng)用程序胧后,可持續(xù)集成并且持續(xù)交付項(xiàng)目。Jenkins自動(dòng)構(gòu)建項(xiàng)目的流程原理如下圖所示:
用戶通過將源碼push到svn或者git等倉庫上抱环,然后Jenkins會(huì)定期pull檢查倉庫中的源碼是否有變化壳快。如發(fā)生變化則會(huì)重新構(gòu)建測(cè)試項(xiàng)目并打包生成相應(yīng)的文件存放在指定的目錄,這過程中的完成情況可設(shè)置以郵件的形式反饋給管理員镇草,并且管理員可登陸到Jenkins上查看相應(yīng)項(xiàng)目的構(gòu)建情況眶痰。接著項(xiàng)目構(gòu)建成功后,Jenkins會(huì)把相應(yīng)的項(xiàng)目包推送到指定的服務(wù)器上的指定目錄下陶夜, 然后執(zhí)行相應(yīng)的命令進(jìn)行項(xiàng)目的部署凛驮。
接著我們就來看看如何使用Jenkins完成tomcat項(xiàng)目的自動(dòng)構(gòu)建部署裆站。
Jenkins的安裝可參考:http://www.reibang.com/p/f2da45e2bac7
1条辟、添加遠(yuǎn)程主機(jī)的登錄密鑰(需要安裝Publish Over SSH插件)
在Jenkinsweb界面中的系統(tǒng)管理->系統(tǒng)配置 添加相應(yīng)的SSH Servers:
如上圖所示,添加相應(yīng)的SSH Server的Ip宏胯、用戶密碼等信息羽嫡,并設(shè)置遠(yuǎn)程主目錄為根目錄,也可以配置SSH key 實(shí)現(xiàn)免密認(rèn)證訪問肩袍。
2杭棵、Jenkins連接到github(需要安裝git、github等插件)
因?yàn)楸敬螌?shí)驗(yàn)中我需要構(gòu)建https://github.com/charliewch/game-of-life 此項(xiàng)目氛赐,因此在構(gòu)建之前需要保證Jenkins能夠連接上GitHub魂爪。此實(shí)驗(yàn)中,我的Jenkins運(yùn)行在tomcat應(yīng)用上艰管,因此其運(yùn)行用戶為tomcat滓侍,所以需要使用tomcat用戶生成相應(yīng)的ssh key 然后設(shè)置到github 的 setting中。
[root@node4 ~]# su - tomcat
[tomcat@node4 ~]$ ssh-keygen -t rsa -C "xxxxxxxxxxx@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tomcat/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tomcat/.ssh/id_rsa.
Your public key has been saved in /home/tomcat/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:g54fQr0zQhmH2s94cjoLUG+JJ4bsHkiFzN+lnaYqinQ xxxxxxxxx@qq.com
The key's randomart image is:
+---[RSA 2048]----+
| |
|o . . |
| + .. o.. |
| .oo.=+B. |
| .+.=o@+S |
|.o o Bo= o |
|..oE..B X |
|oo.....O + |
|+ o. oo. |
+----[SHA256]-----+
[tomcat@node4 ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJsFEJlHLYBqV0aZzp+rpycv9tCDTIBf3slCtjw8127G6uPsm3Cdwm5zsh410kTsZ8AVxonp1XZ2cir4Dh/Pt+D0V9dvZVrFvQqGgYniLU02W+S0JOutxN6fVLSNsHAKpZ6gvvtgvKX5i5shWDH22egb8ImWLZNP3Pf6haxEOi1nj/HOXQeADBf9mW49tqFjllWVhDG/KLF6GNY+sM70l7vDOY2ULuw29QpNmu3QgWDOJ/3vNcU7LwISS16j50a7L85tzlRF63TZ/vxH8vXOONDefd+gg7jyhTI/SQjYifdt1ejtFxByNrNqvWas3rA9puK7GoVuwcgmK7zf1J3JNN xxxxxxxxxxx@qq.com
把上述的id_rsa.pub內(nèi)容復(fù)制粘貼到github的setting中的SSH and GPG keys上:
配置完成后牲芋,能夠出現(xiàn)下述信息撩笆,說明tomcat 用戶連接到github已經(jīng)成功。
[tomcat@node4 ~]$ ssh -T git@github.com
Hi charliewch! You've successfully authenticated, but GitHub does not provide shell access.
3缸浦、配置SMTP服務(wù)器
在系統(tǒng)管理->系統(tǒng)設(shè)置中找到下圖的設(shè)置夕冲,并配置相關(guān)的郵件服務(wù)器信息
4、配置Jenkins任務(wù)
點(diǎn)擊新建任務(wù)裂逐,輸入項(xiàng)目名后選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目并確定保存歹鱼。
在源碼管理中添加git作為源碼倉庫。
設(shè)置輪詢SCM為每15分鐘輪詢一次卜高,此處的編寫規(guī)則遵循crontab 任務(wù)的周期編寫規(guī)則弥姻。
在構(gòu)建增加調(diào)用頂層Maven模板的步驟秩霍,添加目標(biāo)為clean package,用于將相應(yīng)的java項(xiàng)目打包成war包蚁阳,存放在target目錄下铃绒。
在構(gòu)建后的步驟中,新增Editable Email Notification螺捐,并在高級(jí)中配置觸發(fā)郵件報(bào)警的條件:
此處設(shè)置的recipient List 為上一步設(shè)置的收件人列表
繼續(xù)在構(gòu)建后操作添加步驟:Send build artifacts over SSH
配置完成后點(diǎn)擊保存即可
5颠悬、查看構(gòu)建結(jié)果
在Gameoflife任務(wù)的工作空間中,點(diǎn)擊立即構(gòu)建按鈕觸發(fā)新的構(gòu)建定血,點(diǎn)擊Build history可查看相應(yīng)的構(gòu)建情況:
另外在相應(yīng)的構(gòu)建任務(wù)中點(diǎn)擊查看控制臺(tái)輸出赔癌,能夠查看構(gòu)建的結(jié)果及相應(yīng)信息輸出,有助于排查錯(cuò)誤澜沟。
從下圖看到灾票,報(bào)警郵件也觸發(fā)成功了。
最后茫虽,此時(shí)如果用戶對(duì)修改相應(yīng)的git倉庫的中源碼刊苍,在下一次git輪詢Jenkins會(huì)自動(dòng)觸發(fā)相應(yīng)的項(xiàng)目構(gòu)建并進(jìn)行推送部署,用戶可查看相應(yīng)的git輪詢?nèi)罩緛聿榭摧喸兊那闆r濒析。