如何使用 .gitlab-ci.yml 文件创建发布标签

问题描述 投票:0回答:4

仅当 jobA 通过时我才需要运行 jobB。仅当我的测试阶段成功通过时,我才必须创建一个发布标签(我已经在此处添加了一个代码)。我的存储库已经有“README.md”文件。我只是在测试阶段检查它的存在。所以,我的考验阶段总会过去的。请让我知道如何编写代码来创建发布标签。标签可以是例如 v1.1

stages:
  - build
  - test
  - release

jobA:
  stage: test
  script:
    - test -e README.md && exit 0

jobB:
  stage: release
  when: on_success
  script:
 # code for creating a release tag
tags release gitlab-ci
4个回答
2
投票

除了Greg Wozanswer(其中使用了

GITLAB_API_TOKEN
PAT - 个人访问令牌))之外,您现在还可以使用专用的私有project令牌:

请参阅 GitLab 13.9(2021 年 2 月)

支持 PRIVATE-TOKEN 使用 Release-CLI 创建版本

在此里程碑中,我们添加了将

release-cli
PRIVATE-TOKEN
一起使用的功能,如 创建版本 API 文档中所定义。

这可以覆盖创建发布的用户,并通过允许连接项目级别

PRIVATE-TOKEN
或使用机器人用户帐户的
PRIVATE-TOKEN
来支持自动化。

请参阅文档问题


1
投票

它可能无法完全回答您的问题,但希望它有所帮助。也许可以尝试以下方法。我的解决方案假设您有

package.json
版本,因为它是最流行的情况 - 但如果您使用任何其他方式来定义版本,则没有任何问题:

version:
  stage: version
  only:
    - master
  script:
    - VERSION_NUMBER=$(node -p "require('./package.json').version")
    - "curl --header \"PRIVATE-TOKEN: $GITLAB_API_TOKEN\" --request POST  \"https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/repository/tags?tag_name=v${VERSION_NUMBER}&ref=$CI_COMMIT_SHA&message=Tagged%20with%20version%20v${VERSION_NUMBER}\""

然后你可以使用:

publish:
  stage: publish
  only:
    - tags
  script:
    - npm version --no-git-tag-version ${CI_COMMIT_TAG:1}
    - npm publish --access public

例如在下一步中。


0
投票

Gitlab 13.2 在 .gitlab-ci.yml 中引入了 release 关键字。不再需要创建“jobB”作业,您可以在主作业中添加关键字,只要它可以访问release-cli即可:

stages:
  - build
  - test
  - release

jobA:
  stage: test
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  script:
    - test -e README.md && exit 0
  release:
    tag_name: $TAG
    description: './path/to/CHANGELOG.md'

GitLab 文档有一些示例来动态提供 $TAG 和描述。


-1
投票

可能“依赖关系”机制是实现这一目标的正确工具。因此,您可以使用 README.MD(或测试结果文件夹)作为 jobA 中的工件,并在 jobB 中添加对 jobA 的依赖项

jobB: .... dependencies: - jobA


如果

jobA

失败,它不会为 jobB 提供依赖工件。因此,它也会失败。

(编辑)

你检查过受保护的标签gitlab设置吗? (设置 -> 存储库 -> 受保护的标签) 默认设置为:

默认情况下,受保护的标签旨在:

防止除维护者之外的所有人创建标签

防止任何人更新标签

防止任何人删除标签

© www.soinside.com 2019 - 2024. All rights reserved.