Как заставить Дженкинса подождать, пока файл не загрузится в его рабочую область? - PullRequest
0 голосов
/ 25 сентября 2018

Таким образом, этот вопрос является продолжением другого вопроса, заданного в stackoverflow - Как загрузить файл из командной строки в качестве параметра файла в 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 в параметрах запроса

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. , предоставляя тип контента в кодированном виде.
  2. Передача учетных данных в качестве заголовков (моему заданию jenkins не требуется токен
  3. , попытался использовать "build" вместо "buildWithParameters" - не работает
  4. попытался добавить ожидание в задание jenkins, чтобы проверить,была проблема с загрузкой по сети

Создайте второй подход из официальной ссылки на curl, предоставленной в jenkins docs

1 Ответ

0 голосов
/ 26 сентября 2018

Так как вы уже делаете скручивание, чтобы протолкнуть файл, почему бы не продолжить с этим:)

Приведенный ниже код будет постоянно проверять, существует ли файл.

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

Как только файл существует, он прерывает цикл и продолжает сборку jenkins.
Надеюсь, это поможет:)

...