如何在 GitLab 中创建发布?

Posted

技术标签:

【中文标题】如何在 GitLab 中创建发布?【英文标题】:How to create releases in GitLab? 【发布时间】:2015-06-13 18:43:43 【问题描述】:

我创建了一个私有存储库,然后将其更改为公共存储库。但是,我找不到任何释放的方法。是否可以在 GitLab 中创建版本?如果有,他们是怎么做的?

【问题讨论】:

How to store releases/binaries in GitLab?的可能重复 注意:使用 GitLab 13.10(2021 年 3 月),您可以从现有标签创建发布!见my updated answer below。 【参考方案1】:

如果你说的是GitHub-like release,你是associate one or several binaries to a tag,那么不,GitLab 还没有包含这个功能

您有一个suggestion in progress,接受了拉取请求。

2015 年 11 月更新:正如我在“How to store releases/binaries in GitLab?”中提到的,GitLab 8.2 supports releases

现在,您可以将 Markdown 格式的消息添加到任何 Git 标签并附加任意数量的文件。

注意:its release API 尚不支持文件附件。

Keelan 提到 in the comments issue 31221 正在跟踪该请求。


GitLab 11.7(2019 年 1 月)增加了在 GitLab 中创建发布并在摘要页面上查看它们的功能。

发布是与您的代码的发布版本相关联的源、链接和其他元数据或工件的时间快照,并允许您的项目用户轻松发现您的代码的最新发布版本。


GitLab 12.6(2019 年 12 月)添加了“自动发布证据收集以支持审计”

GitLab 版本现在有一个新的证据收集条目,您可以在其中找到 JSON 格式的版本元数据的快照。此快照可用作监管链,以支持审核和合规流程,例如审计。

参见issue 26019 和documentation。


GitLab 12.10(2020 年 4 月)允许:

Compare Release Evidence over time

(仅适用于 Premium+ 版)


GitLab 13.2 (July 2020) 补充:

.gitlab-ci.yml 创建版本

在 12.10 中,我们为您引入了一种从 .gitlab-ci.yml 文件自动创建发布标签的方法。 现在,我们通过将 release 关键字公开为 GitLab Runner 可以解析的步骤,使其使用起来更容易、更自然。您不再需要添加脚本来调用发布 API 来创建发布。 相反,您可以简单地将正确的参数添加到您的 CI/CD 文件中。

参见documentation 和issue。


GitLab 13.5(2020 年 10 月)现在有:

将二进制资产附加到版本

如果由于无法将二进制文件附加到版本中,您目前没有使用 GitLab 进行发布,那么您的工作流程就会变得简单得多。

您现在可以将二进制文件附加到来自gitlab.ci-yml 的发布标记。这扩展了对发布资产的支持以包括二进制文件,而不仅仅是资产链接或源代码。这使您的开发团队更容易采用 GitLab 并使用它来自动化您的发布过程。

请参阅 Documentation 和 Issue。


GitLab 13.7(2020 年 12 月):

在外部文件中定义您的发布说明

如果您create releases in your pipelines via your project’s .gitlab-ci.yml file,您可能会发现很难维护每个版本的描述。

在 GitLab 13.7 中,您现在可以在源代码控制或自动生成的文件中定义发布描述,并从 .gitlab-ci.yml 调用它。 这样做会将文件的内容作为 Markdown 加载到您的发布说明中。

这使您可以更轻松地创建、维护和使用版本控制,如果您想自动生成更改日志,这尤其有用。 非常感谢 Nejc Habjan 和 Siemens 为社区做出的巨大贡献!

参见Documentation 和Issue。


见GitLab 13.10(2021 年 3 月)

从现有标签创建发布

以前,仅新标签支持创建版本。在 GitLab 13.10 中,您现在可以通过选择现有标签来创建发布,这将在计划发布时为您提供更大的灵活性。

参见Documentation 和Issue。


GitLab 13.12(2021 年 5 月)

发布:关键字支持资产链接

从 GitLab 13.2 开始,您可以使用 release: 关键字和 release-cli 来创建版本。

release: 关键字现已扩展为包括对资产链接的支持,以便您可以在单个 .gitlab-ci.yml 发布作业中创建发布并将文件附加到它们。

参见Documentation 和Issue。

【讨论】:

GitLab 13.2(2020 年 7 月)更新它是最简单的解决方案【参考方案2】:

要在 GitLab 网站上创建版本:

    转到您的存储库 在菜单中选择存储库>标签 为您的应用版本添加标签。例如,v1.3.1。 添加有关该版本的消息(标题)。例如,Release 1.3.1。 添加说明版本详细信息的注释。 (不是可选的。为标签添加注释是它发布的原因。) 点击创建标签

该版本现在将显示在 Project > Releases 下。在GitLab documentation 上阅读更多信息。 GitLab 建议您现在使用Release API,但他们的文档很难遵循。不过,这将是使用 CI/CD 自动化一切的首选方法。

【讨论】:

似乎要让标签显示在 Releases 下,标签 必须 有一些发行说明。如果该字段为空,则不会显示为发布。让我挠头很久了。 就这样??我们没有任何其他障碍!创建标签后,存储库实现对吗? @ParthPitroda,是的,标签 + 消息 + 发行说明 = 发行【参考方案3】:

“现代”GitLab 中的发布不仅仅是 Git 标签。我已经就这个主题写了thorough description。

简而言之,发布的创建包括以下步骤:


1) 为您的提交创建标签

git tag -a MY_TAG_NAME 30728cab


2) 将标签推送到您的远程存储库

git push REMOTE_REPO_NAME REMOTE_BRANCH_NAME MY_TAG_NAME


3) 上传文件

curl --request POST --header "Private-Token: YOUR_PRIVATE_TOKEN" --form "file=@/PATH/TO/THE/FILE/file.txt" "https://MY_GITLAB_HOSTING.COM/api/v4/projects/MY_PROJECT_ID/uploads"


警告:没有官方方法可以从 GitLab 存储库中删除上传的二进制文件 - 我建议将其保存到其他主机并保存链接!


4) 创建版本

curl --request POST --header 'Content-Type: application/json' --header "Private-Token: YOUR_PRIVATE_TOKEN" --data '"name": "MY_RELEASE_NAME", "tag_name": "MY_TAG_NAME", "description": "Release with the binary LINK_TO_YOUR_BINARY"' "https://MY_GITLAB_HOSTING.COM/api/v4/projects/MY_PROJECT_ID/releases"


最后,我强烈建议主要看一下我较旧的链接答案,因为那里解释了许多内容,并且还附上了有用的 Bash 脚本!

【讨论】:

我喜欢。您还可以在 Gitlab 中存储一个秘密令牌并使用 gilab-ci 来处理这些命令【参考方案4】:

使用 gitlab 标签。

创建一个带有标签名称和提交注释的标签 git tag -a v1.05 -m "1st stabe release

推送更改 git push origin --tag

我还没有弄清楚如何在 gitlab 上使用 markdown 发行说明,它允许您添加链接。您可能必须手动完成或使用他们的 rest api。

直接来源:https://docs.gitlab.com/ee/university/training/topics/tags.html

【讨论】:

【参考方案5】:

2015 年 11 月更新:GitLab 8.2 现在支持发布。

使用它的 API,您现在可以create and update a relase associated to a tag。 目前,它只是将发布说明(降价文本和附件)添加到 git 标签(又名发布)的能力。

【讨论】:

以上是关于如何在 GitLab 中创建发布?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用标签 API 在 Gitlab CI 中创建标签?

在公司机器的GitLab中创建分支

在 GitLab 中创建 requirements.txt

在 GitLab 中创建标签时查找源分支(使用 gitlab-ci.yml)

在 GitLab 中创建 pyqt 构建

在 GitLab 中创建合并请求失败