Вы не сможете запускать этот скрипт локально только с Groovy, потому что он не работает из-за отсутствия метода sh
в вашем скрипте.Этот sh
метод является шагом, предоставляемым библиотекой Jenkins Pipeline DSL - https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
Я бы посоветовал вам запустить локальный Jenkins - самый простой способ сделать это - использовать существующий образ Docker.Я использую, например, следующий docker-compose.yml
файл:
jenkins:
image: jenkins:2.60.3-alpine
container_name: jenkins
ports:
- 8080:8080
volumes:
- ./home:/var/jenkins_home
и всякий раз, когда я хочу запустить свой локальный Jenkins, я просто захожу в каталог, где хранится этот файл, например,
cd ~/workspace/jenkins
и я просто вызываю
docker-compose up -d
, который загружает Jenkins, к которым я могу получить доступ через http://localhost:8080 В этом локальном экземпляре я могу тестировать сценарии конвейера внутри Groovy Sandbox или путем настройки сценария конвейера.
Альтернатива: библиотека тестирования JenkinsPipelineUnit
Если вы хотите выполнить модульное тестирование сценариев конвейера, вы можете использовать библиотеку JenkinsPipelineUnit , которая позволяет проводить модульное тестирование потока конвейера.Однако в этом случае вам придется зарегистрировать свой собственный метод sh
, потому что класс BasePipelineTest
высмеивает его с помощью NOOP:
helper.registerAllowedMethod("sh", [Map.class], null)
Это означает, что каждое взаимодействие с шагом sh
засчитывается, но ононе запускает сценарий, определенный с помощью свойства script: ''
.
Я бы сказал, что создание собственной локальной изолированной программной среды Jenkins, в которой вы можете поиграться со сценариями Jenkinsfile, - самый простой способ начать работу.