摘要:自動部署到遠(yuǎn)程服務(wù)器現(xiàn)在已經(jīng)可以自動構(gòu)建了,那么接下來的一步就是部署到遠(yuǎn)程服務(wù)器。最后,貼出我自己的,里面有關(guān)涉及個人隱私的部分我會注釋并說明請?zhí)鎿Q成自己的登錄和登錄用戶請?zhí)鎿Q成自己的服務(wù)器本文參考鏈接使用進(jìn)行持續(xù)集成自動化部署博客
Travis CI 是在軟件開發(fā)領(lǐng)域中的一個在線的,分布式的持續(xù)集成服務(wù),用來構(gòu)建及測試在GitHub托管的代碼。
對于 GitHub 的集成 Travis 做得很好,與 Jenkis 不同,Travis 不需要自己在服務(wù)器部署服務(wù),并且是高度集成 GitHub 的,所以對于開源項(xiàng)目還是非常友好的。
注冊配置 Travis注冊成功,登錄,然后添加自己的 GitHub 上的 repo
選擇其中一個或多個你需要集成的項(xiàng)目,開啟 build,也就是點(diǎn)擊叉叉變成勾勾的過程。
假設(shè)現(xiàn)在已經(jīng)對某個項(xiàng)目開啟了 Travis,那么先去看看 Settings 里默認(rèn)開啟的那幾項(xiàng),根據(jù)自己實(shí)際需求進(jìn)行設(shè)置,沒什么特殊需求默認(rèn)的設(shè)置就可以了。
接下來的步驟很清楚,官方也有配圖說明:
添加 .travis.yml說白了接下來的事情都是如何去寫這個配置文件,因?yàn)?Travis 全是根據(jù)這個配置文件去執(zhí)行相應(yīng)動作的。
根據(jù)你的語言不同,配置也會有較大差異,因?yàn)槲业牟┛褪褂?PHP 的流行框架 Laravel 寫的,所以這里也拿它作為例子,官方給出的最精簡的 PHP 配置文件是:
language: php php: - 7.1.9 - nightly觸發(fā)構(gòu)建
接下來如上面所說的第三步,將這個 .travis.yml 文件提交到 GitHub,那么 Travis 就會自動觸發(fā)構(gòu)建任務(wù)。
我就知道第一次不會這么簡單的,失敗了。。。
報錯原因是執(zhí)行 phpunit 時提示:
PHP Warning: require(/home/travis/build/stephencode/super-admin/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /home/travis/build/stephencode/super-admin/bootstrap/autoload.php on line 17
一看是自己項(xiàng)目的 composer 依賴包的 autoload.php 文件沒找到,那應(yīng)該是沒有執(zhí)行 composer up 之類的操作,結(jié)合網(wǎng)上找的資料,比較好的解決方式是在 install 層添加一行:
install: - composer install --prefer-dist --optimize-autoloader --quiet
這樣就不會報上面這個錯了,然后會報接下來的一個錯。。。
1) TestsFeatureRouteTest::testBasicTest RuntimeException: No application encryption key has been specified.
其實(shí)這個是我在 Laravel 里面的 phpunit.xml 沒有配置好的緣故。將
在經(jīng)過五六次 build failed 之后,總算天不負(fù)我了。
自動部署到遠(yuǎn)程服務(wù)器現(xiàn)在已經(jīng)可以自動構(gòu)建了,那么接下來的一步就是部署到遠(yuǎn)程服務(wù)器。Travis 提供 after_success 來實(shí)現(xiàn)這步驟。
等等,我們要部署到遠(yuǎn)程服務(wù)器,那么勢必需要讓 Travis 登錄到遠(yuǎn)程服務(wù),那么登錄密碼怎么處理才能保證安全?這是首先要解決的問題,明文肯定是不行的。
加密登錄密碼那看來先得解決這個問題,Travis Docs 里也幫我考慮到了這個避不開的問題的解決方案(Encrypting Files)
我們一起來實(shí)踐一下:
首先通過 Ruby 的 gem 安裝 travis
gem install travis
哎,重試了幾次發(fā)現(xiàn)敲完這段 shell 如同石沉大海一般,屁都不放一個。。。就算開了代理還是紋絲不動,沒辦法只能換鏡像了。
$ gem sources -l *** CURRENT SOURCES *** https://rubygems.org/
查看一下當(dāng)前的鏡像,這貨(rubygems)國內(nèi)出奇的難以訪問,網(wǎng)上一搜國內(nèi)的鏡像源,Ruby China 的應(yīng)該很顯眼吧~
$ gem update --system $ gem sources --add https://gems.ruby-china.org/
然后再查看一下 gem 鏡像,確保只有 Ruby China 的 gem 源。
好了,現(xiàn)在可以愉快的安裝 travis 了
$ sudo gem install travis
接下來讓我們先在命令行中登錄 Travis
$ travis login We need your GitHub login to identify you. This information will not be sent to Travis CI, only to api.github.com. The password will not be displayed. Try running with --github-token or --auto if you don"t want to enter your password anyway. Username: [email protected] Password for [email protected]: *** Successfully logged in as demo!
會要求你輸入 GitHub 的賬號密碼,這個是走 GitHub 的服務(wù),所以不用擔(dān)心密碼泄露。
將目錄切換到項(xiàng)目根目錄下,也就是 .travis.yml 目錄下。因?yàn)槲覀冃枰?travis 遠(yuǎn)程登錄自己的服務(wù)器,所以需要將本地保存著的 SSH 私鑰進(jìn)行加密處理(默認(rèn)你也是通過 SSH 免密登錄的模式哦,不清楚可以參考我這一篇 《SSH 免密登錄》)。
$ travis encrypt-file ~/.ssh/id_rsa --add Detected repository as xxx/xxx, is this correct? |yes| yes encrypting ~/.ssh/id_rsa for xxx/xxx storing result as id_rsa.enc storing secure env variables for decryption Make sure to add id_rsa.enc to the git repository. Make sure not to add ~/.ssh/id_rsa to the git repository. Commit all changes to your .travis.yml.
這個時候去看一下當(dāng)前目錄下的 .travis.yml,會多出幾行
before_install: - openssl aes-256-cbc -K $encrypted_d89376f3278d_key -iv $encrypted_d89376f3278d_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d
為保證權(quán)限正常,多加一行設(shè)置權(quán)限的 shell
before_install: - openssl aes-256-cbc -K $encrypted_d89376f3278d_key -iv $encrypted_d89376f3278d_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d - chmod 600 ~/.ssh/id_rsa
還有一點(diǎn)可能會用上,因?yàn)?travis 第一次登錄遠(yuǎn)程服務(wù)器會出現(xiàn) SSH 主機(jī)驗(yàn)證,這邊會有一個主機(jī)信任問題。官方給出的方案是添加 addons 配置:
addons: ssh_known_hosts: your-ip
到這里,travis 就能夠免密登錄自己的遠(yuǎn)程服務(wù)器啦~
自動部署既然已經(jīng)可以免密登錄服務(wù)器了,那么寫一個部署腳本,在登錄時執(zhí)行該腳本就可以了,一切就是這么順其自然就好~
寫部署腳本我寫 Shell 腳本的水平很有限,這邊也就給出一個最精簡的 Demo 可以參考一下:
#!/bin/bash cd /path/to/your-project git pull origin master echo "travis build done!"執(zhí)行部署腳本
在 .travis.yml 配置文件中寫下這么兩行:
after_success: - ssh your-user@your-ip "./your-shell-script"
記得將其中的 your-user、your-ip、your-shell-script 都替換成自己的哦!
高大上標(biāo)志辛苦奮斗了一天,總是希望別人看到自己的勞動成果的,除了寫這篇文章意外還能做點(diǎn)什么呢?那自然是給自己的這個項(xiàng)目在 GitHub 上的 README.md 中顯示一個高大上的 build:passing 標(biāo)志,就像這樣:
總結(jié)這次過程中基本都是從不會到會的一個學(xué)習(xí)過程,從中了解到不少新東西,也發(fā)現(xiàn)一些自己的短板,比如寫 shell 腳本。。。
最后,貼出我自己的 .travis.yml,里面有關(guān)涉及個人隱私的部分我會注釋并說明:
language: php php: - 7.1.9 - nightly env: - APP_DEBUG=false before_install: - openssl aes-256-cbc -K $encrypted_d89376f3278d_key -iv $encrypted_d89376f3278d_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d - chmod 600 ~/.ssh/id_rsa install: - composer install --prefer-dist --optimize-autoloader --quiet notifications: email: recipients: - [email protected] on_success: always on_failure: always script: - phpunit -c phpunit.xml --coverage-text after_success: - ssh [email protected] "./travis_build" # 請?zhí)鎿Q成自己的登錄IP和登錄用戶 addons: ssh_known_hosts: xxxx.xxxx.xxxx.xxxx # 請?zhí)鎿Q成自己的服務(wù)器IP
本文參考鏈接:
使用Travis進(jìn)行持續(xù)集成
Jekyll + Travis CI 自動化部署博客
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25857.html
摘要:使用可以解決自動構(gòu)建和自動部署的問題這樣能讓我們更加專注書寫。當(dāng)倉庫激活服務(wù),當(dāng)你的博客有新的修改提交到的時候,會通知。在里為對應(yīng)的倉庫添加,用于后續(xù)使用這樣可以將通過生成的靜態(tài)博客源文件推送到分支。 showImg(https://segmentfault.com/img/bVMhse?w=800&h=300); 簡介 紙小墨(InkPaper)是一個GO語言編寫的開源靜態(tài)博客構(gòu)建工...
摘要:是目前新興的開源持續(xù)集成構(gòu)建項(xiàng)目,采用格式,簡潔清新獨(dú)樹一幟。目前大多數(shù)的項(xiàng)目都已經(jīng)移入到的構(gòu)建隊(duì)列中。測試提交代碼到中查看部署情況至此,整個部署完成,趕快自己嘗試一下吧 Travis CI是目前新興的開源持續(xù)集成構(gòu)建項(xiàng)目,采用yaml格式,簡潔清新獨(dú)樹一幟。目前大多數(shù)的github項(xiàng)目都已經(jīng)移入到Travis CI的構(gòu)建隊(duì)列中。Travis-CI會同步你在GitHub上托管的項(xiàng)目,...
摘要:配置觸發(fā)方式一般會得到這么個語雀配置配置一個倉庫的可以選擇所有更新觸發(fā)或者主動觸發(fā),主動觸發(fā)的意思即發(fā)布需要勾選一個選項(xiàng)才會觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動持續(xù)集成個人博客,云端寫作,自動部署,完美體驗(yàn)~ 一、Hexo+Github 的痛點(diǎn) 1.為啥要用hexo+github? 作為一個程序猿,...
摘要:配置觸發(fā)方式一般會得到這么個語雀配置配置一個倉庫的可以選擇所有更新觸發(fā)或者主動觸發(fā),主動觸發(fā)的意思即發(fā)布需要勾選一個選項(xiàng)才會觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動持續(xù)集成個人博客,云端寫作,自動部署,完美體驗(yàn)~ 一、Hexo+Github 的痛點(diǎn) 1.為啥要用hexo+github? 作為一個程序猿,...
摘要:一切看似妥當(dāng),但是頻繁的調(diào)整以及部署自然成了頭疼的問題。叫作部署的大問題由于我比較菜,所以沒有寫測試模塊。為什么因?yàn)榻^大多數(shù)都是黨用來部署的啊。。。經(jīng)過思考,原來在這里我們需要將部署工序做一個調(diào)整,同時增加步。。。 前言 在自己的vps上做博客系統(tǒng)已經(jīng)有一段時間了,期間也是磕磕碰碰遇到不少問題,如今也算是有個基礎(chǔ)版本能用。可是vps上只放一個博客有點(diǎn)浪費(fèi)了,而且博客系統(tǒng)也不光是用來寫文...
閱讀 1080·2021-09-22 15:26
閱讀 2666·2021-09-09 11:52
閱讀 1964·2021-09-02 09:52
閱讀 2274·2021-08-12 13:28
閱讀 1216·2019-08-30 15:53
閱讀 540·2019-08-29 13:47
閱讀 3421·2019-08-29 11:00
閱讀 3126·2019-08-29 10:58