如何让jenkins作业等待文件上传到其工作区?

时间:2018-09-25 13:21:32

标签: jenkins rest-assured

所以这个问题是关于stackoverflow的另一个问题的跟进- How to upload file from command line as file parameter in jenkins

是否有一种方法可以让作业等待文件上传完成?在我的情况下,我在jenkins作业中有一些命令行参数,它将文件输入作为参数。现在我可以成功完成任务,但是在上传文件之前,任务将继续执行命令行参数,这将导致任务失败,因为它们需要文件可用。

我的问题再次出现-有没有办法使我可以在执行cmd参数之前让作业等待上载完成?我是通过java和RestAssured lib来做到这一点的。

编辑:

  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);

//已经尝试在查询参数中使用file0,JenkinsFileParamName

  1. 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);

现在我尝试了以下方法-

  1. 以url编码的形式提供内容类型。
  2. 将凭据作为标题传递(我的詹金斯工作不需要令牌
  3. 尝试使用“ build”而不是“ buildWithParameters”-不起作用
  4. 尝试在jenkins作业中添加等待,以查看是否是网络上传问题

根据jenkins docs上提供的官方curl参考创建第二种方法

1 个答案:

答案 0 :(得分:0)

由于您已经在卷曲文件,所以为什么不继续:)

以下代码将连续检查文件是否存在。

until $(curl --output /dev/null --silent --head --fail http://website.url/directory/fileExists.txt); do
    printf '.'
    sleep 5
done;

文件存在后,它将打破循环并继续您的jenkins构建。
希望对您有所帮助:)