在GitLab中,是否可以从流水线自动创建问题?

6

我计划在CI流水线中对拉取请求进行一些验证,根据验证结果,我希望自动创建问题并将其分配给开发人员。

这个功能在GitLab流水线中是可以实现的吗?

谢谢!

2个回答

4

你应该能够通过curl调用新问题API(如此处所示)。

curl --request POST --header "PRIVATE-TOKEN: PlainTextToken" "https://gitlab.com/api/v4/projects/:id/issues?title=a title"

你需要将一个私有令牌添加为掩码变量


2
如果只需要创建一个问题,使用cURL命令即可。但是,如果您需要更复杂的逻辑,则python-gitlab库可能是您工具库中有用的工具。
要创建项目问题:
import gitlab
import os

gl = gitlab.Gitlab(os.environ['CI_SERVER_URL'], private_token=os.environ['PRIVATE_TOKEN'])
project = gl.projects.get(os.environ['CI_PROJECT_ID'])

issue_details = {
'title': f'Validation failed in {os.environ["CI_PROJECT_NAME"]}',
'description': f'Pipeline: {os.environ["CI_PIPELINE_URL"]}',
'assignee_ids': [111, 222]
}
issue = project.issues.create(issue_details )

这里假设您已经创建了一个名为PRIVATE_TOKEN掩码变量。其他变量是预定义变量
您可以将上述代码和其他逻辑添加到Python脚本中,并在gitlab-ci.yml中像这样调用它:
# Use whatever image you need, but make sure it has Python installed
image: python:3.7
...
handle-failure:
  when: on_failure
  before_script:
    - pip install -r ./cicd/gitlab/requirements.txt
  script:
    - python -m ./cicd/gitlab/create_issue.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接