最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

軟件測(cè)試 | 跨平臺(tái)API對(duì)接

2023-06-11 16:38 作者:愛(ài)測(cè)軟件測(cè)試  | 我要投稿

基于 Jenkins 實(shí)現(xiàn)跨平臺(tái) API 對(duì)接簡(jiǎn)介

Jenkins 提供了遠(yuǎn)程訪問(wèn)應(yīng)用編程接口(Remote Access API),能夠通過(guò) Http 協(xié)議遠(yuǎn)程調(diào)用相關(guān)命令操

作 Jenkins 進(jìn)行 Jenkins 視圖、任務(wù)、插件、構(gòu)建信息、任務(wù)日志信息、統(tǒng)計(jì)信息等,非常容易與其配

合更好的完成 CI/CD 工作。

Jenkins API 總共有三種格式,分別為:

  • XML API

可以使用 xml 方式進(jìn)行 API 的使用,這種方式的優(yōu)勢(shì)在于可以使用強(qiáng)大的 xpath 特性進(jìn)行相關(guān)的訪問(wèn)

控制。如我們下文將要介紹的 Jenkins 客戶端底層就是基于 XML API 實(shí)現(xiàn)的。

  • JSON API

使用 JSON 方式進(jìn)行操作,因?yàn)?json 基本上已經(jīng)是應(yīng)用之間數(shù)據(jù)交換的準(zhǔn)標(biāo)準(zhǔn)格式之一,這種方式比

較方便 Javascript 或者和其他應(yīng)用的集成。

  • Python API 可以通過(guò) python-jenkins 庫(kù)對(duì) Jenkins 進(jìn)行控制操作。此庫(kù)對(duì) Jenkins 的 API 進(jìn)行了進(jìn)

一步的包裝,使用起來(lái)更加方便,但是一般需要安裝 python-jenkins,并通過(guò) python 腳本的執(zhí)行

來(lái)達(dá)到集成的方式。

為什么基于 Jenkins API 對(duì)接

  • 頻繁創(chuàng)建 Job 時(shí),降低手工錯(cuò)誤的概率

在工作中,如果需要?jiǎng)?chuàng)建的 Jenkins 的 Job 非常多,而大多又呈現(xiàn)有規(guī)律的方式時(shí),Job 的創(chuàng)建成為了

一個(gè)繁瑣而又需要頻繁操作的任務(wù)。在這種場(chǎng)景下,使用 API 結(jié)合腳本進(jìn)行自動(dòng)化可以提高效率,降低

手工錯(cuò)誤的幾率。

  • 滿足特定條件時(shí)自動(dòng)觸發(fā) Jenkins

如果需要?jiǎng)討B(tài)的創(chuàng)建 Jenkins Job ,如根據(jù)中間結(jié)果在某個(gè)觸發(fā)點(diǎn)自動(dòng)生成,再如生成的 Job 需要使用

的參數(shù)也是動(dòng)態(tài)運(yùn)行階段才能取到值的場(chǎng)景下。

  • 基于 Jenkins 自研產(chǎn)品或工具

如果產(chǎn)品或工具相關(guān)的功能,需要基于 Jenkins 進(jìn)行研發(fā),而且不希望用戶直接使用 Jenkins,僅將

Jenkins 作為背后的執(zhí)行引擎的場(chǎng)景,這種情況下也需要使用 Jenkins API 才能完成。

快速開始

下面我們通過(guò)實(shí)戰(zhàn)學(xué)習(xí)下如何將spring Boot和Jenkins進(jìn)行集成,實(shí)現(xiàn)跨平臺(tái)API對(duì)接

MAVEN

<dependency> <groupId>com.offbytwo.jenkins</groupId> <artifactId>jenkins-client</artifactId> <version>0.3.8</version> <dependency>

我們先引入 Jenkins-client 用于和 Jenkins 進(jìn)行交互。而 Jenkins-client 的底層實(shí)現(xiàn)其實(shí)就是調(diào)用

Jenkins XML API 來(lái)完成操作 Jenkins 的,如下表部分示例所示。

常用類和方法

  • JenkinsHttpClient:封裝了調(diào)用 JenkinsAPI 的底層方法 JenkinsHttpClient(URI uri, String

username, String password)

操作API方法示例

  • JenkinsServer:封裝了調(diào)用 JenkinsAPI 的語(yǔ)義級(jí)別的方法,其本質(zhì)調(diào)用的是 JenkinsHttpClient 類

中的方法,只是根據(jù)操作 Jenkins 的功能進(jìn)行了語(yǔ)義級(jí)別的封裝

JenkinsServer(JenkinsHttpConnection client)

操作API方法示例


  • Job:Jenkins 中 job 對(duì)應(yīng)的實(shí)體類,有很多實(shí)用的語(yǔ)義級(jí)別的方法,如構(gòu)建等。

Job(String name, String url)

如何獲取創(chuàng)建(更新) JENKINS JOB 的請(qǐng)求參數(shù)數(shù)據(jù)

  • 創(chuàng)建新 Job

  • 進(jìn)入job

  • 將 Job/Job 名稱/ Configure 改為 Job/Job 名稱/ Config.xml 并回車

SPRING BOOT集成JENKINSJOB請(qǐng)求參數(shù)數(shù)據(jù)

  • 在 resources 目錄下,jenkinsDir ,并添加 hogwarts_test_mini_start_test.xml 文件,此時(shí)我們?yōu)榱藴y(cè)

試命令可以正常被執(zhí)行,需要在測(cè)試命令前加 eval 關(guān)鍵字,并將${testCommand}放在英文雙引號(hào)

括內(nèi)部,如圖中紅框部分。

  • JenkinsUtil 示例代碼

import com.offbytwo.jenkins.JenkinsServer; import com.offbytwo.jenkins.client.JenkinsHttpClient; import com.offbytwo.jenkins.model.Job; import org.springframework.core.io.ClassPathResource; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; /** * @Author tlibn * @Date 2020/8/11 15:21 **/ public class JenkinsUtil { //調(diào)試使用 public static void main(String[] args) throws IOException, URISyntaxException { build("hogwarts_test_mini_start_test_100","12","token","pwd"); } public static void build(String jobName, String userId, String remark,String testCommand) throws IOException, URISyntaxException { System.out.println("========== 執(zhí)行開始 ==========="); // 1. 通過(guò) ClassPathResource 獲取 Jenkins 的 JenkinsJob 請(qǐng)求參數(shù)數(shù)據(jù) ClassPathResource classPathResource = new ClassPathResource("JenkinsConfigDir/hogwarts_jenkins_test_start.xml"); InputStream inputStream = classPathResource.getInputStream(); String jobConfigXml = FileUtil.getText(inputStream); // 2. 獲取 Jenkins 信息 String baseUrl = JenkinsInfo.baseUrl; String userName = JenkinsInfo.userName; String password = JenkinsInfo.password; // 3. 根據(jù) Jenkins 信息創(chuàng)建 JenkinsHttpClient 對(duì)象 JenkinsHttpClient jenkinsHttpClient = new JenkinsHttpClient(new URI(baseUrl),userName,password); // 4. 根據(jù) Jenkins 客戶端創(chuàng)建 JenkinsServer 對(duì)象 JenkinsServer jenkinsServer = new JenkinsServer(jenkinsHttpClient); // 5. 創(chuàng)建 Job,如果Job已經(jīng)存在,可以改為更新 Job 方法 jenkinsServer.createJob(jobName,jobConfigXml,true); // 6. 獲取 Jenkins 服務(wù)器中所有的 Job 信息 Map<String, Job> jobMap = jenkinsServer.getJobs(); // 7. 獲取 Jenkins 服務(wù)器中我們創(chuàng)建的單個(gè) Job 信息 Job job = jobMap.get(jobName); // 8. 組裝 Jenkins 服務(wù)器的構(gòu)建參數(shù) Map<String,String> map = new HashMap<>(); map.put("userId",userId); map.put("remark",remark); map.put("testCommand",testCommand); // 9. 構(gòu)建 Jenkins Job job.build(map,true); System.out.println("========== 執(zhí)行完畢 ==========="); } }

  • 創(chuàng)建新job并構(gòu)建成功

  • 構(gòu)建參數(shù)頁(yè)面查看參數(shù)數(shù)據(jù)

構(gòu)建日志頁(yè)面查看pwd命令執(zhí)行情況

思考

1.嘗試更新Jenkins Job配置信息,并在構(gòu)建參數(shù)中新增用戶名稱字段

2.將JenkinsAPI調(diào)用和Spring Boot結(jié)合在一起,通過(guò)postman發(fā)送以下數(shù)據(jù)進(jìn)行Jenkins Job的創(chuàng)建和更新操作

{ "jobName": "hogwarts_test_mini_start_test_100", "testCommand": "pwd", "remark": "token", "userId": "12" }


軟件測(cè)試 | 跨平臺(tái)API對(duì)接的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
邵武市| 蒲江县| 石城县| 香格里拉县| 永仁县| 马公市| 兴义市| 安图县| 上蔡县| 通河县| 黄石市| 乌鲁木齐市| 永丰县| 吉安市| 区。| 鄢陵县| 咸阳市| 南澳县| 临沧市| 崇义县| 镶黄旗| 高碑店市| 临沭县| 宣汉县| 武汉市| 建德市| 瑞金市| 乌兰浩特市| 界首市| 长汀县| 綦江县| 牙克石市| 高碑店市| 通江县| 社会| 凤庆县| 黑河市| 伊吾县| 遵义市| 四川省| 和林格尔县|