国产精品高清一区二区三区不卡-国产精品一区二区三区免费视频-日韩免费高清一级毛片-亚洲欧美一区二区三区国产精品-日韩欧美一区二区三区不卡视频-亚欧免费视频一区二区三区-亚洲欧美日韩一区成人-欧美日韩视频综合一区无弹窗-精品日韩在线视频一区二区三区-国内精品视频一区二区三区

你好,歡迎進入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!

誠信、勤奮、創(chuàng)新、卓越

友好定價、專業(yè)客服支持、正版軟件一站式服務提供

13262879759

工作日:9:00-22:00

Travis CI

發(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: ./install-dependencies.sh

如果有多個腳本,可以寫成下面的形式。

install:
  - command1
  - command2

上面代碼中,如果command1失敗了,整個構(gòu)建就會停下來,不再往下進行。

如果不需要安裝,即跳過安裝階段,就直接設為true。

install: true

script 字段

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 項目

Node 項目的環(huán)境需要寫成下面這樣。

language: node_js
node_js:
  - "8"

上面代碼中,node_js字段用來指定 Node 版本。

Node 項目的installscript階段都有默認腳本,可以省略。

  • 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í)行

運行狀態(tài)

最后,Travis 每次運行,可能會返回四種狀態(tài)。

passed:運行成功,所有步驟的退出碼都是0
canceled:用戶取消執(zhí)行
errored:before_install、install、before_script有非零退出碼,運行會立即停止
failed :script有非零狀態(tài)碼 ,會繼續(xù)運行

使用技巧

環(huán)境變量

.travis.ymlenv字段可以定義環(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

5.2 加密信息

如果不放心保密信息明文存在 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)載請注明出處。


13262879759

微信二維碼