小编mat*_*bot的帖子

Gitlab:通过 API 触发手动操作

我有一个 GitLab-CI 管道阶段,如下所示:

test:
  stage: test
  script:
    - echo test
  when: manual
Run Code Online (Sandbox Code Playgroud)

我需要通过 GitLab API 请求触发此操作。我已经尝试过这些解决方案,但它们似乎不起作用。

curl --request POST \
  --form token=<trigger-token> \
  --form ref=<branch-name> \
https://gitlab.example.com/api/v4/projects/1/trigger/pipeline

curl --request POST \
  --header PRIVATE-TOKEN <private-token> \
https://gitlab.example.com/api/v4/projects/1/jobs/1/play
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误消息。但是,如果我将curl-request输出通过管道传输到jq,我会得到以下输出:

[...]
      "started_at": null,
      "finished_at": null,
      "committed_at": null,
      "duration": null,
      "coverage": null,
      "detailed_status": {
        "icon": "status_manual",
        "text": "blocked",
        "label": "waiting for manual action",
        "group": "manual",
        "tooltip": "manual action"
[...]
Run Code Online (Sandbox Code Playgroud)

这些是管理日志,但即使管道获得授权,也不会触发作业。

{"severity":"INFO","time":"2020-11-05T15:57:51.989Z","correlation_id":"z7ATZBEHCB2","message":"Pipeline authorized","project_id":148,"user_id":12}
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-api

7
推荐指数
1
解决办法
4409
查看次数

标签 统计

gitlab ×1

gitlab-api ×1

gitlab-ci ×1