【问题标题】:Remotely build jenkins job with file parameters using restassured使用 reassured 远程构建带有文件参数的 jenkins 作业
【发布时间】:2023-04-07 03:04:01
【问题描述】:

我能够触发作业,但由于某种原因文件没有上传到 jenkins 工作区。如果我从詹金斯工作中手动尝试运行正常。 我在下面尝试过-

1)

RestAssured.given()
.auth().basic("USERNAME", "PASSWORD")
//.contentType(ContentType.URLENC)
.when()
.post("https://JENKINS_HOST/hudson/job/RISTSA/job/JOB_NAME/buildWithParameters" + "?file=C:/PATH_TO_FILE/SOMETHING.json&JenkinsStringParamName=test")
.then()
.statusCode(201);

2)

RestAssured.given().log().all()
.contentType(ContentType.URLENC)
.auth().basic("USERNAME", "PASSWORD")
//.headers(httpHeaders("USERNAME", "PASSWORD"))
.formParam("file0", "C:/PATH_TO_FILE/SOMETHING.json")
.formParam("json", "{\"parameter\":[{\"name\":\"JenkinsFileParamName\",\"file\":\"file0\"},{\"name\":\JenkinsStringParamName\",\"value\":\"test\"}]}")
.when()
.post("https://JENKINS_HOST/hudson/job/RISTSA/job/JOB_NAME/buildWithParameters")
.then()
.statusCode(201);

我已尝试从官方 url 编写此代码,该网址在 jenkins docs 上有一个 curl 参考

感谢任何帮助。

【问题讨论】:

    标签: java jenkins rest-assured jenkins-api


    【解决方案1】:

    如果您要上传文件,那么您应该使用多部分

    RestAssured.given().
    multiPart("file2", new File("C:/PATH_TO_FILE/SOMETHING.json")).
    formParam("name", "value").
    when().
    post("https://JENKINS_HOST/hudson/job/RISTSA/job/JOB_NAME/buildWithParameters").
    then().
    statusCode(201);
    

    【讨论】:

    • 你试过这个代码吗?我知道理想情况下它应该如何工作。但这取决于如何指定 api。我正在寻找一个可行的解决方案。虽然我也尝试过这种方法 - 它不起作用。
    • 非常令人惊讶,因为这是一个工作代码,不是使用 Jenkins,而是使用不同的服务器
    • 这是来自官方文档 - curl -X POST JENKINS_URL/job/JOB_NAME/build \ --user USER:PASSWORD \ --form file0=@PATH_TO_FILE \ --form json='{"parameter ": [{"name":"FILE_LOCATION_AS_SET_IN_JENKINS", "file":"file0"}]}' 我只需要一个放心的转换。我已经尝试过这个 curl 并且它有效。
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2015-04-03
    • 2012-08-05
    相关资源
    最近更新 更多