Сделайте так, чтобы Jenkins обнаружил PR-ветку без автоматического запуска сборки - PullRequest
2 голосов
/ 01 марта 2020

Попытка 1: запустить сборку Jenkins с использованием Python API

Используя API Jenkins Python, я могу запустить сборку jenkins для PR (job.invoke())

JENKINS_URL = "<url>"
JENKINS_USERNAME = "<>"
JENKINS_PASSWORD = "<>"

class DevOpsJenkins:
    def __init__(self):
        self.jenkins_server = Jenkins(JENKINS_URL, username=JENKINS_USERNAME, password=JENKINS_PASSWORD)

    def build_job(self, name, build_no=None):
        job = self.jenkins_server[name]
        job.invoke(block=False)

if __name__ == "__main__":
    NAME_OF_JOB = "<>/"
    pipelines = ['apache-centos-gpu']
    prs = [14]
    jenkins_obj = DevOpsJenkins()
    for i in range(len(prs)):
        for j in range(len(pipelines)):
            job_name = NAME_OF_JOB+pipelines[j]+"/PR-"+str(prs[i])
            jenkins_obj.build_job(job_name)

При условии, стратегия открытия ветки следующая: discover_branch

Проблема с попыткой 1: нежелательные автоматы c триггер

Однако проблема в этом заключается в том, что он обнаруживает ветви PR и автоматически запускает их построение каждый раз, когда создается новый PR или когда новая ветка помещается в ветку PR.

Попытка 2: Запретить обнаружение ветвлений, чтобы остановить автоматические c триггеры

Чтобы решить эту проблему, я изменил стратегию обнаружения, чтобы ничего не обнаруживать no_discover

Как вы можете видеть в пустом поле поведения.

Результат? Ветвь не обнаружена. Даже не пиар ветка. Это предотвращает запуск automati c PR-сборок. Но это также предотвращает ручной запуск PR. По сути, PR-задание больше не может быть запущено.

Если я попробую тот же код, приведенный выше, с небольшими изменениями (изменения имени задания / конвейера), я получу эту ошибку jenkinsapi.custom_exceptions.UnknownJob

Итак, вопрос: как мне обеспечить обнаружение веток без автоматического запуска PR?

Почему я хочу обнаруживать ветки? Так что я могу вручную запускать сборки Jenkins.

Я не вижу ни одной кнопки, позволяющей включить / отключить автоматический запуск c для сборок Jenkins.

...