尝试1:使用Python API触发Jenkins构建
使用Jenkins Python API,我能够触发PR的jenkins构建(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)
尝试1的问题:不希望的自动触发
但是,与此相关的问题是,每次创建新的PR或将新的提交推送到PR分支时,它都会发现PR分支并自动触发基于它们的构建。
尝试2:阻止分支发现以停止自动触发
您可以在空白行为字段中看到。
结果?没有发现分支。甚至没有公关部门。这样可以防止PR构建的自动触发。但这也可以防止PR的手动触发。基本上,PR作业无法再触发。
如果我尝试以上相同的代码,但做了一些小的调整(更改工作名称/管道),则会出现此错误jenkinsapi.custom_exceptions.UnknownJob
因此,问题是:我应如何确保在不自动触发PR的情况下发现分支?
我为什么要发现分支?这样我就可以手动触发Jenkins的构建。
我看不到任何允许启用/禁用Jenkins构建自动触发的按钮。
我在this网站中找到了解决此问题的方法。