同一天兩個(gè)同學(xué)問我一樣的問題,所以我決定詳細(xì)的記錄一下如何使用Travis把Git?Hub
里的文件傳至自己的服務(wù)器
server
首先要確保自己可以通過ssh
命令免密登錄自己的服務(wù)器,這就需要先生成密鑰對(duì)
ssh-keygen
輸入上面的指令以后一路回車即可,你會(huì)發(fā)現(xiàn)在用戶根目錄下多了.ssh
目錄,進(jìn)去看一下cd ~/.ssh
,里面有這3個(gè)文件
接下來把id_rsa.pub
里的內(nèi)容,手動(dòng)復(fù)制到服務(wù)器的~/.ssh/authorized_keys
(如沒有可自行創(chuàng)建)中去即可
還有一種方法是使用
ssh-copy-id root@IP
命令,Mac用戶可能需要用brew
安裝一下ssh-copy-id
,ubuntu用戶應(yīng)該是自帶的這個(gè)命令,實(shí)現(xiàn)的效果與上面手動(dòng)的一樣,更多ssh使用方法請(qǐng)參考介紹 ssh 的日常使用
登錄服務(wù)器的指令如下,如果不需要密碼便進(jìn)入則表示成功
ssh root@服務(wù)器的IP地址
# 如改變過端口則為
ssh -p 端口號(hào) root@服務(wù)器的IP地址
GitHub
在GitHub上新建個(gè)項(xiàng)目,名字自擬
進(jìn)入你所要上傳的項(xiàng)目,輸入一下指令
git init
git remote add origin https://github.com/Godi13/TravisSendToServer.git
Travis
登錄Travis,如果沒有找到新建項(xiàng)目的話,點(diǎn)擊Sync account
先點(diǎn)開開關(guān),然后點(diǎn)擊齒輪,進(jìn)入Setting
頁面
這里可以這么設(shè)置
配置文件
在本地項(xiàng)目中添加.travis.yml
文件,先只加入一下配置
language: node_js
node_js: stable
接下來使用Travis
命令行工具將id_rsa.pub
加密,同時(shí)將環(huán)境變量傳至Travis
# 安裝travis命令行工具,如無法使用gem指令須先安裝ruby
gem install travis
# --auto自動(dòng)登錄github帳號(hào)
travis login --auto
# 此處的--add參數(shù)表示自動(dòng)添加腳本到.travis.yml文件中
travis encrypt-file ~/.ssh/id_rsa --add
# 這個(gè)命令會(huì)自動(dòng)把 id_rsa 加密傳送到 .git 指定的倉庫對(duì)應(yīng)的 travis 中去
本次執(zhí)行完
travis encrypt-file ~/.ssh/id_rsa --add
報(bào)了下圖這個(gè)錯(cuò)誤,是網(wǎng)路問題,終端翻墻即可,不是每次都出現(xiàn)
執(zhí)行完以后會(huì)發(fā)現(xiàn)在Travis
網(wǎng)站項(xiàng)目里面的Setting
中的環(huán)境變量里多兩個(gè)參數(shù)
并且在.travis.yml
里的before_install
周期中自動(dòng)多了下面這2行
- openssl aes-256-cbc -K $encrypted_97d432d3ed20_key -iv $encrypted_97d432d3ed20_iv
-in id_rsa.enc -out ~\/.ssh/id_rsa -d
默認(rèn)生成的命令可能會(huì)在/
前面帶轉(zhuǎn)義符\
,我們不需要這些轉(zhuǎn)義符,手動(dòng)刪掉所有的轉(zhuǎn)義符,否則可能在后面引發(fā)莫名的錯(cuò)誤
之后為了保證命令的順利運(yùn)行,我們還需要正確地設(shè)置權(quán)限和認(rèn)證,注意第三行主機(jī)IP地址
那里寫自己服務(wù)器的IP
before_install
- openssl aes-256-cbc -K $encrypted_97d432d3ed20_key -iv $encrypted_97d432d3ed20_iv
-in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host 主機(jī)IP地址\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
最后,就是在after_success
周期中,添加上傳服務(wù)器的指令即可,在這里要注意,如果沒有stricthostkeychecking=no
參數(shù),將構(gòu)建失敗,詳細(xì)原因請(qǐng)參考通過travis部署代碼到遠(yuǎn)程服務(wù)器
# 沒有修改過端口的,可以用這個(gè),上傳目錄要加 -r 參數(shù)
- scp -o stricthostkeychecking=no -r 要上傳的文件或目錄 用戶@域名或IP:/路徑
# 由于我修改了默認(rèn)的port,所以在這里也進(jìn)行了加密處理
- scp -o stricthostkeychecking=no -P $PORT -r 要上傳的文件或目錄 用戶@域名或IP:/路徑
最最后上傳所有文件到GitHub
git add .
git commit -m "Travis Send to Server"
git push
在Travis
查看log,顯示成功上傳
在這里可以看到我的配置文件項(xiàng)目地址,歡迎大家的反饋,希望能有所幫助