Как вы используете Jenkins libraryResource для чтения файла из ресурсов? - PullRequest
0 голосов
/ 27 ноября 2018

Я не могу использовать libraryResource для загрузки ресурса с помощью Jenkins.Я нашел множество примеров людей, использующих libraryResource для загрузки ресурсов, но ни у кого нет конкретных ошибок, которые я получаю, поэтому я предполагаю, что я что-то упускаю, но я не знаю, что это может быть.

Я пытаюсь загрузить скрипт на python, который будет использоваться почти во всех заданиях.Я поместил простой тестовый скрипт в resouces/org/foo/test.py, который, насколько я понимаю, я мог бы читать, используя:

libraryResource('org/foo/test.py')

Но я получаю ошибку:

hudson.AbortException: такой библиотечный ресурс org / foo / test.py не найден.

Я использую конвейерный скрипт, который загружается из SCM, который настроен в конфигурации проектов в jenkins.Это структура репозитория git, из которого загружается конвейерный скрипт.

-src
  -org
    -shared
      +Utilities.groovy
-jobs
  -nighly
    +nightly.groovy
-resources
  -org
   -foo
    +test.py

Загрузка Utitilies.groovy с использованием разделяемой библиотеки в корне nightly.groovy

@Library('shared-utilities')
import org.shared.Utilities

ЧтоЯ пробовал:

  • Запуск libraryResource вне этапов, поэтапно и на узлах
  • Проверка scm перед запуском libraryResource
  • Разноеpaths foo/test.py, resources/org/foo/test.py

На основе выходных данных извлечения scm извлекается последняя фиксация, содержащая resources/org/foo/test.py, и она находится в корневом каталоге задания на агенте.

У меня нет идей, и я ценю любую помощь / предложение, которое у вас есть.Я действительно хотел бы избежать фиксации этого скрипта во всех проектах, которые его используют, поскольку он используется только Дженкинсом.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вам не хватает контекста / сценария, при котором применение API libraryResource становится применимо.

libraryResource: загрузка файла ресурсаиз общей библиотеки Считывает ресурс из общей библиотеки и возвращает его содержимое в виде простой строки.

Так что, если вы предоставили общую библиотеку, вы можете использовать libraryResource внутри вашей общей библиотеки для чтения ресурса, расположенной в каталоге resource той же общей библиотеки.

Надеюсь, что все прояснится лучше.

0 голосов
/ 04 декабря 2018

Я до сих пор не смог заставить библиотеку Resource работать, я предполагаю, что мне чего-то не хватает в том, как настроены Дженкинс, рабочие места, общие ресурсы, но я не могу его найти.

В то же время я использую это, чтобы я мог двигаться вперед.

public static String loadJenkinsResource(String pathToResource) {
    return getResourceFromJenkinsCSM(pathToResource)
}

private static String getResourceFromJenkinsCSM(String pathToResource) {
    mainScript.checkout mainScript.scm
    return "resources/${pathToResource}"
}

private static String getResourceFromLibrary(String pathToResource) {
    def resourceContent = mainScript.libraryResource(pathToResource)
    def outputFile = getFileNameFromPath(pathToResource)
    mainScript.writeFile file: outputFile, text: resourceContent
    mainScript.sh "chmod +x ${outputFile}"
    return outputFile
}

getResourcesFromLibrary не проверено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...