在 GitLab 中,是否可以从管道自动创建问题?

sqr*_*sqr 6 pipeline gitlab gitlab-ci

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

这可以在 GitLab 管道中实现吗?

谢谢!

DV8*_*2XL 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 )
Run Code Online (Sandbox Code Playgroud)

这假设您已经创建了一个名为 的屏蔽变量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
Run Code Online (Sandbox Code Playgroud)