引言
??這是筆者第一次使用Spring Boot創(chuàng)建Java Web后臺(tái)服務(wù)轧苫,所以會(huì)將我從頭到尾完成這個(gè)項(xiàng)目的過程記在
這里疮鲫。期間肯定會(huì)遇到很多的坑片挂,我都會(huì)把問題描述和我如何解決的也記在這里肆汹。如果讀者發(fā)現(xiàn)我做的有哪
些不合理的地方,希望在下面給我留言烛愧,給一些建議~謝謝大家!
注意另伍,下文中筆者踩到的坑會(huì)用引用的方式包起來敲街。
項(xiàng)目搭建基本流程
Github創(chuàng)建項(xiàng)目
使用Intellij創(chuàng)建Spring boot項(xiàng)目
TDD開發(fā)团搞。。多艇。
1. 持續(xù)集成環(huán)境搭建(CI)
??在項(xiàng)目開發(fā)過程中逻恐,相信大家都需要不停的測(cè)試和部署代碼到生產(chǎn)環(huán)境中。對(duì)于自動(dòng)化測(cè)試峻黍,各個(gè)編程語言都有了各自的自動(dòng)化測(cè)試框架复隆,所以大家都在編碼工作完成后手動(dòng)運(yùn)行本地測(cè)試。測(cè)試通過后再將整個(gè)工程部署到云服務(wù)器上姆涩。
??上述碼農(nóng)的工作日常是每個(gè)碼農(nóng)都要面對(duì)的挽拂,可以看到有很多重復(fù)性的工作,比如:運(yùn)行相同的測(cè)試命令骨饿、使用相同的命令部署到云端亏栈。碼農(nóng)追求的應(yīng)該是消除重復(fù)!所以持續(xù)集成和部署就應(yīng)運(yùn)而生宏赘。
??筆者是先登錄到這個(gè)網(wǎng)站后進(jìn)行自由探索绒北,再一點(diǎn)一點(diǎn)的看文檔學(xué)習(xí)如何使用它的,下面是筆者使用travis搭建CI環(huán)境的過程:
使用Github賬戶登錄到Travis網(wǎng)站中察署,點(diǎn)擊右上角的Sign in with Github登錄:
登陸后可以看到網(wǎng)站給了很貼心的三步走指示:
1. 打開你在Github倉庫中的某個(gè)倉庫的開關(guān)闷游。
2. 添加 .travis.yml 配置文件到你的倉庫中。
3. 通過git push來觸發(fā)一個(gè)構(gòu)建。
關(guān)于如何編寫.travis.yml文件脐往,一定要仔細(xì)看travis官網(wǎng)中的文檔休吠,不同的編程語言對(duì)應(yīng)的配置文件書寫是不同的,一定注意钙勃。
下面是我的Java Spring工程的.travis.yml配置文件:
language: java
sudo: true
jdk:
- openjdk8
before_install:
- chmod +x ./mvnw
script:
-"./mvnw test -B"
需要額外注意的是蛛碌,上述配置文件中的
chmod +x ./mvnw
那一行,如果沒有這行的話辖源,你應(yīng)該會(huì)在travis構(gòu)建時(shí)報(bào)出Permission denied
錯(cuò)誤蔚携,而且這句話一定要放在before_install
下面,不是before_script
2. 部署環(huán)境搭建
travis支持很多種部署環(huán)境克饶,可以在文檔中Deployments and Uploads
的地方看到:
筆者使用的是pivotal提供的服務(wù)酝蜒,對(duì)應(yīng)的是上述列表中的CloudFoundry。
我也不知道為什么叫CloudFoundry矾湃。亡脑。。
可以看到這個(gè)指南是有兩種方式在.travis.yml
中創(chuàng)建了部署的配置:
- 通過命令行
travis setup cloudfoundry
邀跃,運(yùn)行完這個(gè)命令后會(huì)提示你輸入一些配置信息霉咨,然后替你寫入到.travis.yml
中。 - 直接將配置手動(dòng)寫入到
.travis.yml
文件中拍屑。注意途戒,你的密碼應(yīng)該通過travis encrypt --add deploy.password
命令來生成。
travis
命令行工具需要根據(jù)鏈接指引去Github中獲取僵驰。這是一個(gè)ruby寫的程序喷斋,所以需要安裝ruby運(yùn)行環(huán)境,安裝完ruby后具體安裝travis的步驟在README.md中有蒜茴。
注意星爪!
ruby
的版本不能用最新的2.5。安裝travis時(shí)會(huì)報(bào)錯(cuò)粉私。使用2.4
版本即可顽腾。
下面可以在你的本地環(huán)境中進(jìn)行git push
來觸發(fā)自動(dòng)構(gòu)建和部署了~