如何使用 Travis CI 構(gòu)建 CI/CD 管道
譯文譯者 | 崔皓
審校 | 梁策 孫淑娟
開篇
如果交付是軟件開發(fā)的終極目標(biāo),那么CI/CD 管道就是為了達(dá)到這一目標(biāo)而進(jìn)行的一系列步驟。持續(xù)集成/持續(xù)交付(CI/CD)是一套軟件交付的優(yōu)秀實(shí)踐,它專注于使用 DevOps 或站點(diǎn)可靠性工程(SRE)方法對軟件交付進(jìn)行改進(jìn)。
就CI/CD而言,持續(xù)集成(CI :Continuous Integration)是開發(fā)過程中的優(yōu)秀實(shí)踐之一,它可以將代碼不斷集成到代碼庫中,而無需要等待大版本的提交。CI需要保證不會(huì)破壞現(xiàn)有代碼,同時(shí)不會(huì)對代碼存儲(chǔ)庫產(chǎn)生重大影響。為了達(dá)到這個(gè)目的,并展示CI和測試的工作方式,本文將利用最常見的CI服務(wù):Travis CI管道來說明。
Travis CI 管道將在很多方面為用戶提供幫助,包括報(bào)告自動(dòng)構(gòu)建更改、測試集成和應(yīng)用部署管理。同時(shí)它還可以幫助代碼庫提高軟件質(zhì)量、降低風(fēng)險(xiǎn)并增強(qiáng)協(xié)作能力。
本文將帶大家了解 Travis CI及其使用優(yōu)勢,并闡釋如何利用在線的 Selenium Grid 對Travis CI 管道中的自動(dòng)化測試庫進(jìn)行配置。
Travis CI 簡介
Travis CI 是一種基于云的 CI 服務(wù),可以用來構(gòu)建和測試托管在 GitHub 上的軟件項(xiàng)目。它可以用來觸發(fā)構(gòu)建過程,對其進(jìn)行驗(yàn)證,并在出現(xiàn)失敗時(shí)報(bào)告原因。它需要從一個(gè).travis.yml文件中獲取執(zhí)行命令并開始構(gòu)建過程,該文件位于項(xiàng)目的根文件夾中,并基于 YAML 的文件格式。Travis CI能通過Travis YML 文件了解構(gòu)建應(yīng)用的編程語言、分支規(guī)范、安裝依賴項(xiàng)等信息。
一般而言,代碼存儲(chǔ)庫都有對應(yīng)的持續(xù)集成工具,例如Bitbucket 就是 Atlassian 的代碼庫,Bamboo 就是與Bitbucket對應(yīng)的持續(xù)集成工具。 GitLab代碼庫和GitLab CI持續(xù)集成工具也是一對固定組合。這說明,由于代碼庫不同,持續(xù)集成工具的選擇也會(huì)隨之發(fā)生變化。
對于 Travis CI而言需要滿足下面兩個(gè)條件才能使用,以下是開始使用的一些先決條件:
- 一個(gè)GitHub帳戶
- 將 GitHub代碼庫與 Travis CI 進(jìn)行集成的授權(quán)。
為什么選擇Travis CI?
- Travis CI與 GitHub 無縫集成,且易于設(shè)置。用戶需要在 GitHub 上注冊并授權(quán)同步GitHub 項(xiàng)目,本文在配置部分會(huì)進(jìn)行詳細(xì)介紹。
- 豐富的Travis CI 文檔可供入門使用,文檔包含:安裝依賴項(xiàng)、不同編程語言的配置項(xiàng)以及加密和集成主題相關(guān)內(nèi)容。
- 支持幾乎所有編程語言和云解決方案的部署。
- 與跨瀏覽器測試解決方案無縫集成,例如用于并行測試的 LambdaTest。
- 跨平臺(tái)支持,支持Windows、Mac、Linux等多個(gè)平臺(tái)。基礎(chǔ)設(shè)施依賴項(xiàng)會(huì)因使用的環(huán)境而異,這部分在文檔中有詳細(xì)說明。
- 對于開源項(xiàng)目免費(fèi),這里的開源項(xiàng)目就是在GitHub 上公開的項(xiàng)目。對于私有代碼庫,有企業(yè)版提供。
- 一旦代碼庫用戶需求配置發(fā)生更改,自動(dòng)構(gòu)建將會(huì)觸發(fā)。用戶可選擇項(xiàng)目根目錄中的 Travis.yml 文件指定的分支名稱。
Travis CI 的小缺陷
- 由于集成受限于GitHub,GitLab、Bitbucket和Assembla,云存儲(chǔ)庫在GitHub之外使用 Travis CI 不如使用 GitHub那般用戶友好。
- 私有代碼倉庫只有Travis CI的企業(yè)版(付費(fèi))支持,不過試用版有100個(gè)免費(fèi)構(gòu)建的機(jī)會(huì)。
使用 Travis CI 構(gòu)建CI/CD 管道
任何公共代碼庫都可用于創(chuàng)建免費(fèi)管道,配置 Travis CI 管道步驟如下:
第 1 步:使用有效的用戶名和密碼登錄到 GitHub 帳戶。選擇您計(jì)劃與 Travis CI 管道集成的代碼庫,確保代碼庫是最新版本。
第 2 步:登錄Travis CI,使用上面使用的 GitHub 帳戶注冊。

第 3 步:參考下圖,根據(jù)要求提供授權(quán)。

第 4 步:完成注冊和授權(quán)過程后,您將被重定向到儀表盤,系統(tǒng)會(huì)提示您在屏幕左側(cè)輸入同步帳戶選項(xiàng)。正常的話,GitHub 項(xiàng)目將與 Travis CI 管道同步。
第 5 步:在過往服務(wù)集成( Legacy Service Integrations )下,您可以查看在 Travis CI 管道上同步的所有代碼庫。
默認(rèn)情況下,所有代碼庫的 CI 進(jìn)程都為關(guān)閉狀態(tài),可以通過切換按鈕打開特定項(xiàng)目的集成。

第 6 步:將.travis.yml文件添加到當(dāng)前自動(dòng)化測試套件的根目錄中。
Travis YML 是放置在項(xiàng)目根目錄中的配置文件,用于定義構(gòu)建應(yīng)用的配置信息。
如果 .travis.yml 文件不在代碼庫中或不是有效的 YAML文件,Travis CI 管道會(huì)將之忽略。Travis.yml文件包含編程語言、操作系統(tǒng)、目標(biāo)代碼庫的分支名稱等信息。
一旦.travis.yml文件被創(chuàng)建并推送到 GitHub 代碼庫,將會(huì)觸發(fā) Travis CI對應(yīng)用的構(gòu)建。如下圖所示,成功依照配置文件信息的完成集成操作后,Travis CI 管道將完成GitHub 代碼的編譯。其具體執(zhí)行過程分為兩步:Travis CI 首先會(huì)從代碼庫拉取代碼,然后對指定的分支代碼進(jìn)行編譯。
活動(dòng)存儲(chǔ)庫視圖:

構(gòu)建完成后的 JobView:

作業(yè)日志示例:

使用配置信息查看 Config:

第 7 步:復(fù)制(fork)GitHub代碼庫,并將GitHub代碼庫與Travis CI 管道進(jìn)行同步。
如果不想 fork 上述代碼庫,請確保選擇一個(gè)代碼庫,并確保該代碼庫在GitHub 帳戶中不為空。
第 8 步:啟用同步代碼庫。啟用之后,所同步的代碼庫會(huì)在我的代碼庫(Mymy Repositories)頁面上可見。
第 9 步:使用以下構(gòu)建配置將.travis.yml文件添加到代碼庫 以進(jìn)行編譯。
language: java
sudo: false
script: "mvn test"
確保啟用您的框架,以便通過配置文件中指定的 maven 命令 - “mvn test”觸發(fā)測試。
第 10 步:將上述配置文件提交并推送到 GitHub 的主分支后。在作業(yè)日志視圖中可以觀察到自動(dòng)觸發(fā)的測試信息。該過程會(huì)觸發(fā)第一次編譯,即通過將 GitHub 帳戶中的代碼拉入 Travis CI 管道創(chuàng)建的VM。
如果通過 RemoteWebDriver 類將測試配置為在 LambdaTest 平臺(tái),此時(shí)一旦完成新的提交,就會(huì)觸發(fā)在 LambdaTest 平臺(tái)上的測試套件。
Travis CI 管道集成 LambdaTest自動(dòng)化測試
LambdaTest 是一個(gè)基于云的跨瀏覽器測試解決方案,能夠?qū)?2000 多個(gè)瀏覽器和操作系統(tǒng)執(zhí)行自動(dòng)化測試。根據(jù)測試要求配置可自由伸縮的測試資源,避免開發(fā)者考慮資源分配和回收問題。同時(shí)可以協(xié)助估算并行測試以及跨瀏覽器測試所需的資源。
測試本地項(xiàng)目或私人托管項(xiàng)目
全球企業(yè)將私有服務(wù)器用于IT 項(xiàng)目,以實(shí)現(xiàn)更好的Web 應(yīng)用安全性。LambdaTest 將借助名為LambdaTest Tunnel的安全外殼功能與此類平臺(tái)(私有服務(wù)器項(xiàng)目)無縫集成。從而讓您能夠測試本地托管的網(wǎng)頁。下面讓我們看看如何配置 LambdaTest Tunnel。
第 1 步:登錄LambdaTest 平臺(tái)后,導(dǎo)航到如下圖所示的Automation Dashboard。

第 2 步:單擊Configure Tunnel(配置隧道)功能后,系統(tǒng)會(huì)提示您覆蓋兩個(gè)部分,即內(nèi)部服務(wù)器配置和本地托管的網(wǎng)頁測試功能。
第 3 步:復(fù)制與被測應(yīng)用程序所需功能相關(guān)的訪問令牌。以下令牌僅供參考。
LT -user lambdatest.com -key qYlLn1IzVrC2U41zM4kyjv35EvpHxR2tyMB4aEBlkNMmvpnQ5A
接下來我們會(huì)使用此令牌,以演示使用 LambdaTest 進(jìn)行并行測試。
使用 LambdaTest Selenium Grid 進(jìn)行并行測試
接下來將會(huì)看到如何使用自動(dòng)測試管道(如 Travis CI 管道)中的在線 Selenium Grid 工具執(zhí)行并行測試。這里會(huì)使用Cucumber TestNG 代碼庫作為參考。您需要克隆代碼,然后將代碼導(dǎo)入對應(yīng)的 IDE 中。
同時(shí)需要在 .yml 文件中配置 LambdaTest 用戶名和密碼,如下:
env:
global:
- LT_USERNAME=${LAMBDATEST_USERNAME}
其中 LambdaTest 用戶名的全局變量是 LT_USERNAME,LambdaTest 密碼是 LT_ACCESS_KEY??梢詮腜rofile Section中檢索到相同的內(nèi)容。
.travis.yml配置信息如下:
language: java
sudo: false
script: "mvn test"
env:
global:
- LT_USERNAME=${LAMBDATEST_USERNAME}
- LT_ACCESS_KEY=${LAMBDATEST_KEY}
可以通過觸發(fā)遠(yuǎn)程 Web 驅(qū)動(dòng)程序的方式使用配置好的信息,如下圖所示,這里為Cucumber+TestNG 代碼示例。

在 Travis CI 自動(dòng)化測試管道的幫助下,用上面的代碼替換 TestNG Runner 文件從而完成對LambdaTest 的集成,這將幫助你在 LambdaTest 平臺(tái)中獲得測試執(zhí)行的觸發(fā)器,如下圖所示:

結(jié)論
本文討論了持續(xù)集成的重要性、如何使用 Travis CI 管道,以及它的優(yōu)缺點(diǎn)。Travis CI 可以與云解決方案(自動(dòng)化測試管道的 LambdaTest)集成完成并行、跨瀏覽器測試。同時(shí),Travis CI還可以通過配置相關(guān)信息與Cucumber、TestNG合作完成在 LambdaTest 上的跨瀏覽器測試。
需要注意的是,如果需要啟動(dòng)部署,首先要進(jìn)行質(zhì)量檢查以驗(yàn)證構(gòu)建。但是,不能完全依賴手動(dòng)測試來確保每個(gè)構(gòu)建集成,依賴人工的方式不僅讓人厭煩,而且會(huì)提高失敗的可能性。為了避免這種情況的發(fā)生,需要引入自動(dòng)化測試套件,在 Travis CI 管道的幫助下,通過持續(xù)部署流程充當(dāng)持續(xù)集成中的檢查點(diǎn),讓我們輕松完成構(gòu)建、編譯、發(fā)布、自動(dòng)測試一系列操作。
原文標(biāo)題:How to Build Your First CI/CD Pipeline With Travis CI,作者:Bharadwaj Pendyala





























