你好,歡迎進入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時間:2023-05-19
瀏覽次數(shù):0
Travis CI 提供的是持續(xù)集成服務(Continuous Integration,簡稱 CI)。它綁定 Github 上面的項目,只要有新的代碼,就會自動抓取。然后,提供一個運行環(huán)境,執(zhí)行測試,完成構(gòu)建,還能部署到服務器。
持續(xù)集成指的是只要代碼有變更,就自動運行構(gòu)建和測試,反饋運行結(jié)果。確保符合預期以后,再將新代碼"集成"到主干。
持續(xù)集成的好處在于,每次代碼的小幅變更,就能看到運行結(jié)果,從而不斷累積小的變更,而不是在開發(fā)周期結(jié)束時,一下子合并一大塊代碼。
The goal is to build healthier software by developing and testing in smaller increments. This is where Travis CI comes in.
我們的目標是通過以較小的增量開發(fā)和測試來構(gòu)建更健康的軟件。 這就是 Travis CI 的用武之地。
Travis 要求項目的根目錄下面,必須有一個.travis.yml
文件。這是配置文件,指定了 Travis 的行為。該文件必須保存在 Github 倉庫里面,一旦代碼倉庫有新的 Commit,Travis 就會去找這個文件,執(zhí)行里面的命令。
這個文件采用 YAML 格式。下面是一個最簡單的 Python 項目的.travis.yml
文件。
language: python script: true
上面代碼中,設置了兩個字段。language
字段指定了默認運行環(huán)境,這里設定使用 Python 環(huán)境。script
字段指定要運行的腳本,script: true
表示不執(zhí)行任何腳本,狀態(tài)直接設為成功。
Travis 默認提供的運行環(huán)境,請參考官方文檔 。目前一共支持31種語言,以后還會不斷增加。
下面是一個稍微復雜一點的.travis.yml。
language: pythonsudo: requiredbefore_install: sudo pip install fooscript: py.test
上面代碼中,設置了四個字段:運行環(huán)境是 Python,需要sudo權(quán)限,在安裝依賴之前需要安裝foo模塊,然后執(zhí)行腳本py.test。
Travis 的運行流程很簡單,任何項目都會經(jīng)過兩個階段。
install 階段:安裝依賴
script 階段:運行腳本
install字段用來指定安裝腳本。
install: ./install-dependencies.sh
如果有多個腳本,可以寫成下面的形式。
install: - command1 - command2
上面代碼中,如果command1失敗了,整個構(gòu)建就會停下來,不再往下進行。
如果不需要安裝,即跳過安裝階段,就直接設為true。
install: true
script字段用來指定構(gòu)建或測試腳本。
script: bundle exec thor build
如果有多個腳本,可以寫成下面的形式。
script: - command1 - command2
注意,script與install不一樣,如果command1失敗,command2會繼續(xù)執(zhí)行。但是,整個構(gòu)建階段的狀態(tài)是失敗。
如果command2只有在command1成功后才能執(zhí)行,就要寫成下面這樣。
script: command1 && command2
Node 項目的環(huán)境需要寫成下面這樣。
language: node_js node_js: - "8"
上面代碼中,node_js
字段用來指定 Node 版本。
Node 項目的install
和script
階段都有默認腳本,可以省略。
install
默認值:npm install
script
默認值:npm test
更多設置請看官方文檔。
script
階段結(jié)束以后,還可以設置通知步驟(notification)和部署步驟(deployment),它們不是必須的。
部署的腳本可以在script
階段執(zhí)行,也可以使用 Travis 為幾十種常見服務提供的快捷部署功能。比如,要部署到 Github Pages,可以寫成下面這樣。
deploy: provider: pages skip_cleanup: true github_token: $GITHUB_TOKEN # Set in travis-ci.org dashboard on: branch: master
其他部署方式,請看官方文檔。
完整的生命周期,從開始到結(jié)束是下面的流程。
before_install install 階段之前執(zhí)行 install before_script script aftersuccess or afterfailure[OPTIONAL] before_deploy[OPTIONAL] deploy[OPTIONAL] after_deploy after_script script 階段之后執(zhí)行
最后,Travis 每次運行,可能會返回四種狀態(tài)。
passed:運行成功,所有步驟的退出碼都是0 canceled:用戶取消執(zhí)行 errored:before_install、install、before_script有非零退出碼,運行會立即停止 failed :script有非零狀態(tài)碼 ,會繼續(xù)運行
.travis.yml
的env
字段可以定義環(huán)境變量。
env: - DB=postgres - SH=bash - PACKAGE_VERSION="1.0.*"
然后,腳本內(nèi)部就使用這些變量了。
有些環(huán)境變量(比如用戶名和密碼)不能公開,這時可以通過 Travis 網(wǎng)站,寫在每個倉庫的設置頁里面,Travis 會自動把它們加入環(huán)境變量。這樣一來,腳本內(nèi)部依然可以使用這些環(huán)境變量,但是只有管理員才能看到變量的值。具體操作請看官方文檔。
image
如果不放心保密信息明文存在 Travis 的網(wǎng)站,可以使用 Travis 提供的加密功能。
首先,安裝 Ruby 的包travis
。
$ gem install travis
然后,就可以用travis encrypt
命令加密信息。
在項目的根目錄下,執(zhí)行下面的命令。
$ travis encrypt SOMEVAR=secretvalue
上面命令中,SOMEVAR
是要加密的變量名,secretvalue
是要加密的變量值。執(zhí)行以后,屏幕上會輸出如下信息。
secure: ".... encrypted data ...."
現(xiàn)在,就可以把這一行加入.travis.yml
。
env: global: - secure: ".... encrypted data ...."
然后,腳本里面就可以使用環(huán)境變量$SOMEVAR
了,Travis 會在運行時自動對它解密。
travis encrypt
命令的--add
參數(shù)會把輸出自動寫入.travis.yml
,省掉了修改env
字段的步驟。
$ travis encrypt SOMEVAR=secretvalue --add
作者:acc8226
鏈接:https://www.jianshu.com/p/1efb8cc932bb
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務提供商
13262879759
微信二維碼