如何使用 Travis CI 構建 CI/CD 管道
譯文譯者 | 崔皓
審校 | 梁策 孫淑娟
開篇
如果交付是軟件開發(fā)的終極目標,那么CI/CD 管道就是為了達到這一目標而進行的一系列步驟。持續(xù)集成/持續(xù)交付(CI/CD)是一套軟件交付的優(yōu)秀實踐,它專注于使用 DevOps 或站點可靠性工程(SRE)方法對軟件交付進行改進。
就CI/CD而言,持續(xù)集成(CI :Continuous Integration)是開發(fā)過程中的優(yōu)秀實踐之一,它可以將代碼不斷集成到代碼庫中,而無需要等待大版本的提交。CI需要保證不會破壞現有代碼,同時不會對代碼存儲庫產生重大影響。為了達到這個目的,并展示CI和測試的工作方式,本文將利用最常見的CI服務:Travis CI管道來說明。
Travis CI 管道將在很多方面為用戶提供幫助,包括報告自動構建更改、測試集成和應用部署管理。同時它還可以幫助代碼庫提高軟件質量、降低風險并增強協作能力。
本文將帶大家了解 Travis CI及其使用優(yōu)勢,并闡釋如何利用在線的 Selenium Grid 對Travis CI 管道中的自動化測試庫進行配置。
Travis CI 簡介
Travis CI 是一種基于云的 CI 服務,可以用來構建和測試托管在 GitHub 上的軟件項目。它可以用來觸發(fā)構建過程,對其進行驗證,并在出現失敗時報告原因。它需要從一個.travis.yml文件中獲取執(zhí)行命令并開始構建過程,該文件位于項目的根文件夾中,并基于 YAML 的文件格式。Travis CI能通過Travis YML 文件了解構建應用的編程語言、分支規(guī)范、安裝依賴項等信息。
一般而言,代碼存儲庫都有對應的持續(xù)集成工具,例如Bitbucket 就是 Atlassian 的代碼庫,Bamboo 就是與Bitbucket對應的持續(xù)集成工具。 GitLab代碼庫和GitLab CI持續(xù)集成工具也是一對固定組合。這說明,由于代碼庫不同,持續(xù)集成工具的選擇也會隨之發(fā)生變化。
對于 Travis CI而言需要滿足下面兩個條件才能使用,以下是開始使用的一些先決條件:
- 一個GitHub帳戶
- 將 GitHub代碼庫與 Travis CI 進行集成的授權。
為什么選擇Travis CI?
- Travis CI與 GitHub 無縫集成,且易于設置。用戶需要在 GitHub 上注冊并授權同步GitHub 項目,本文在配置部分會進行詳細介紹。
- 豐富的Travis CI 文檔可供入門使用,文檔包含:安裝依賴項、不同編程語言的配置項以及加密和集成主題相關內容。
- 支持幾乎所有編程語言和云解決方案的部署。
- 與跨瀏覽器測試解決方案無縫集成,例如用于并行測試的 LambdaTest。
- 跨平臺支持,支持Windows、Mac、Linux等多個平臺?;A設施依賴項會因使用的環(huán)境而異,這部分在文檔中有詳細說明。
- 對于開源項目免費,這里的開源項目就是在GitHub 上公開的項目。對于私有代碼庫,有企業(yè)版提供。
- 一旦代碼庫用戶需求配置發(fā)生更改,自動構建將會觸發(fā)。用戶可選擇項目根目錄中的 Travis.yml 文件指定的分支名稱。
Travis CI 的小缺陷
- 由于集成受限于GitHub,GitLab、Bitbucket和Assembla,云存儲庫在GitHub之外使用 Travis CI 不如使用 GitHub那般用戶友好。
- 私有代碼倉庫只有Travis CI的企業(yè)版(付費)支持,不過試用版有100個免費構建的機會。
使用 Travis CI 構建CI/CD 管道
任何公共代碼庫都可用于創(chuàng)建免費管道,配置 Travis CI 管道步驟如下:
第 1 步:使用有效的用戶名和密碼登錄到 GitHub 帳戶。選擇您計劃與 Travis CI 管道集成的代碼庫,確保代碼庫是最新版本。
第 2 步:登錄Travis CI,使用上面使用的 GitHub 帳戶注冊。
第 3 步:參考下圖,根據要求提供授權。
第 4 步:完成注冊和授權過程后,您將被重定向到儀表盤,系統(tǒng)會提示您在屏幕左側輸入同步帳戶選項。正常的話,GitHub 項目將與 Travis CI 管道同步。
第 5 步:在過往服務集成( Legacy Service Integrations )下,您可以查看在 Travis CI 管道上同步的所有代碼庫。
默認情況下,所有代碼庫的 CI 進程都為關閉狀態(tài),可以通過切換按鈕打開特定項目的集成。
第 6 步:將.travis.yml文件添加到當前自動化測試套件的根目錄中。
Travis YML 是放置在項目根目錄中的配置文件,用于定義構建應用的配置信息。
如果 .travis.yml 文件不在代碼庫中或不是有效的 YAML文件,Travis CI 管道會將之忽略。Travis.yml文件包含編程語言、操作系統(tǒng)、目標代碼庫的分支名稱等信息。
一旦.travis.yml文件被創(chuàng)建并推送到 GitHub 代碼庫,將會觸發(fā) Travis CI對應用的構建。如下圖所示,成功依照配置文件信息的完成集成操作后,Travis CI 管道將完成GitHub 代碼的編譯。其具體執(zhí)行過程分為兩步:Travis CI 首先會從代碼庫拉取代碼,然后對指定的分支代碼進行編譯。
活動存儲庫視圖:
構建完成后的 JobView:
作業(yè)日志示例:
使用配置信息查看 Config:
第 7 步:復制(fork)GitHub代碼庫,并將GitHub代碼庫與Travis CI 管道進行同步。
如果不想 fork 上述代碼庫,請確保選擇一個代碼庫,并確保該代碼庫在GitHub 帳戶中不為空。
第 8 步:啟用同步代碼庫。啟用之后,所同步的代碼庫會在我的代碼庫(Mymy Repositories)頁面上可見。
第 9 步:使用以下構建配置將.travis.yml文件添加到代碼庫 以進行編譯。
language: java
sudo: false
script: "mvn test"
確保啟用您的框架,以便通過配置文件中指定的 maven 命令 - “mvn test”觸發(fā)測試。
第 10 步:將上述配置文件提交并推送到 GitHub 的主分支后。在作業(yè)日志視圖中可以觀察到自動觸發(fā)的測試信息。該過程會觸發(fā)第一次編譯,即通過將 GitHub 帳戶中的代碼拉入 Travis CI 管道創(chuàng)建的VM。
如果通過 RemoteWebDriver 類將測試配置為在 LambdaTest 平臺,此時一旦完成新的提交,就會觸發(fā)在 LambdaTest 平臺上的測試套件。
Travis CI 管道集成 LambdaTest自動化測試
LambdaTest 是一個基于云的跨瀏覽器測試解決方案,能夠對 2000 多個瀏覽器和操作系統(tǒng)執(zhí)行自動化測試。根據測試要求配置可自由伸縮的測試資源,避免開發(fā)者考慮資源分配和回收問題。同時可以協助估算并行測試以及跨瀏覽器測試所需的資源。
測試本地項目或私人托管項目
全球企業(yè)將私有服務器用于IT 項目,以實現更好的Web 應用安全性。LambdaTest 將借助名為LambdaTest Tunnel的安全外殼功能與此類平臺(私有服務器項目)無縫集成。從而讓您能夠測試本地托管的網頁。下面讓我們看看如何配置 LambdaTest Tunnel。
第 1 步:登錄LambdaTest 平臺后,導航到如下圖所示的Automation Dashboard。
第 2 步:單擊Configure Tunnel(配置隧道)功能后,系統(tǒng)會提示您覆蓋兩個部分,即內部服務器配置和本地托管的網頁測試功能。
第 3 步:復制與被測應用程序所需功能相關的訪問令牌。以下令牌僅供參考。
LT -user lambdatest .com -key qYlLn1IzVrC2U41zM4kyjv35EvpHxR2tyMB4aEBlkNMmvpnQ5A
接下來我們會使用此令牌,以演示使用 LambdaTest 進行并行測試。
使用 LambdaTest Selenium Grid 進行并行測試
接下來將會看到如何使用自動測試管道(如 Travis CI 管道)中的在線 Selenium Grid 工具執(zhí)行并行測試。這里會使用Cucumber TestNG 代碼庫作為參考。您需要克隆代碼,然后將代碼導入對應的 IDE 中。
同時需要在 .yml 文件中配置 LambdaTest 用戶名和密碼,如下:
env:
global:
- LT_USERNAME=${LAMBDATEST_USERNAME}
其中 LambdaTest 用戶名的全局變量是 LT_USERNAME,LambdaTest 密碼是 LT_ACCESS_KEY??梢詮腜rofile Section中檢索到相同的內容。
.travis.yml配置信息如下:
language: java
sudo: false
script: "mvn test"
env:
global:
- LT_USERNAME=${LAMBDATEST_USERNAME}
- LT_ACCESS_KEY=${LAMBDATEST_KEY}
可以通過觸發(fā)遠程 Web 驅動程序的方式使用配置好的信息,如下圖所示,這里為Cucumber+TestNG 代碼示例。
在 Travis CI 自動化測試管道的幫助下,用上面的代碼替換 TestNG Runner 文件從而完成對LambdaTest 的集成,這將幫助你在 LambdaTest 平臺中獲得測試執(zhí)行的觸發(fā)器,如下圖所示:
結論
本文討論了持續(xù)集成的重要性、如何使用 Travis CI 管道,以及它的優(yōu)缺點。Travis CI 可以與云解決方案(自動化測試管道的 LambdaTest)集成完成并行、跨瀏覽器測試。同時,Travis CI還可以通過配置相關信息與Cucumber、TestNG合作完成在 LambdaTest 上的跨瀏覽器測試。
需要注意的是,如果需要啟動部署,首先要進行質量檢查以驗證構建。但是,不能完全依賴手動測試來確保每個構建集成,依賴人工的方式不僅讓人厭煩,而且會提高失敗的可能性。為了避免這種情況的發(fā)生,需要引入自動化測試套件,在 Travis CI 管道的幫助下,通過持續(xù)部署流程充當持續(xù)集成中的檢查點,讓我們輕松完成構建、編譯、發(fā)布、自動測試一系列操作。
原文標題:How to Build Your First CI/CD Pipeline With Travis CI,作者:Bharadwaj Pendyala