使用 Gitlab api 在 Gitlab 存储库中创建标签

Anj*_*jan 1 git api gitlab devops gitlab-api

我在 GitLab 中有 4 个存储库,名为 Repo1、Repo2、Repo3 和 Repo4

现在我如何使用 GitLab api 为所有 Repo 的 master 分支创建标签 v1.0 ?

Von*_*onC 6

使用POST /projects/:id/repository/tags创建新标签 API,调用将是:

curl -X POST "https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/repository/tags?tag_name=v1.0&ref=master&release_description='a short description'&private_token=${GITLAB_TOKEN}"
Run Code Online (Sandbox Code Playgroud)

替换CI_PROJECT_ID为您的 GitLab 项目 id。

gitlab-org/gitlab如问题 119136所示,仅适用于简短的单行标签描述。

这将创建一个轻量级标签。
带注释的标签需要一个&message='...'参数。

您可以在此处查看替代调用。

经过讨论,OP 确认:

curl -X POST "http://198.x.y.z/api/v4/projects/2345/repository/tags?tag_name=v1.0&ref=master&release_description='first%20tag'&private_token=**************"
Run Code Online (Sandbox Code Playgroud)

(用%20发布说明中的任何空格替换)有效。

它有效,但显示{"tag_name":"v1.5","description":"'first tag'"},"protected":false}
我可以将其保护为真吗?

这将需要另一个API 调用。
例子:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/protected_tags?name=*-stable&create_access_level=30"
Run Code Online (Sandbox Code Playgroud)

和:

create_access_level:允许创建的访问级别(默认值:40,维护者访问级别)