Help us learn about your current experience with the documentation. Take the survey.

发布字段

创建或编辑发布时,可以使用以下字段。

标题

创建或编辑发布时,可以使用 发布标题 字段来自定义发布标题。如果没有提供标题,则使用发布的标签名称。

标签名称

发布标签名称应包含发布版本。GitLab 使用 语义化版本 来管理我们的发布,我们也建议您这样做。使用 (主版本).(次版本).(修订版本),详情请参见 GitLab 版本控制策略

例如,对于 GitLab 版本 16.1.1

  • 16 代表主版本。主版本发布是 16.0.0,但通常简称为 16.0
  • 1 代表次版本。次版本发布是 16.1.0,但通常简称为 16.1
  • 1 代表修订版本号。

版本号的任何部分都可以是多位数字,例如 16.10.11

发布说明描述

每个发布都有描述。您可以添加任何您喜欢的文本,但我们建议包含变更日志来描述您发布的内容。这有助于用户快速浏览您发布的每个版本之间的差异。

通过选择 在发布说明中包含标签消息,可以将 Git 中的标签消息 包含在发布说明描述中。

描述支持 Markdown 格式。

发布资源

发布包含以下类型的资源:

源代码

GitLab 会根据给定的 Git 标签自动生成 ziptar.gztar.bz2tar 格式的归档源代码。这些资源是只读的,可以下载

链接

链接可以是任何指向您喜欢的内容的 URL:文档、构建的二进制文件或其他相关材料。这些可以是您 GitLab 实例的内部或外部链接。

每个作为资源的链接具有以下属性:

属性 描述 必需
name 链接的名称。
url 下载文件的 URL。
filepath 指向 url 的重定向链接。必须以斜杠 (/) 开头。更多信息请参见 本节
link_type 用户可以通过 url 下载的内容类型。更多信息请参见 本节

发布资源的永久链接

与发布关联的资源可以通过永久 URL 访问。GitLab 总是将此 URL 重定向到实际的资源位置,因此即使资源移动到其他位置,您也可以继续使用相同的 URL。这是在 创建链接更新 时使用 filepath API 属性定义的。

URL 格式为:

https://host/namespace/project/-/releases/:release/downloads:filepath

例如,如果您在 gitlab.com 上的 gitlab-org 命名空间和 gitlab-runner 项目中有一个 v16.9.0-rc2 发布的资源:

{
  "name": "linux amd64",
  "filepath": "/binaries/gitlab-runner-linux-amd64",
  "url": "https://gitlab-runner-downloads.s3.amazonaws.com/v16.9.0-rc2/binaries/gitlab-runner-linux-amd64",
  "link_type": "other"
}

该资源的直接链接为:

https://gitlab.com/gitlab-org/gitlab-runner/-/releases/v16.9.0-rc2/downloads/binaries/gitlab-runner-linux-amd64

资源的物理位置可以随时更改,但直接链接保持不变。

如果发布是私有的,您需要在请求时使用 private_token 查询参数或 HTTP_PRIVATE_TOKEN 头部提供具有 apiread_api 范围的个人访问令牌。例如:

curl --location --output filename "https://gitlab.example.com/my-group/my-project/-/releases/myrelease/downloads</path-to-file>?private_token=<your_access_token>"
curl --location --output filename --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/my-group/my-project/-/releases/myrelease/downloads</path-to-file>"

最新发布资源的永久链接

您可以将 发布资源的永久链接 中的 filepath最新发布的永久链接 结合使用。filepath 必须以斜杠 (/) 开头。

URL 格式为:

https://host/namespace/project/-/releases/permalink/latest/downloads:filepath

您可以使用此格式为最新发布中的资源提供永久链接。

例如,如果您在 gitlab.com 上的 gitlab-org 命名空间和 gitlab-runner 项目中有一个 v16.9.0-rc2 最新发布的资源,其中包含 filepath

{
  "name": "linux amd64",
  "filepath": "/binaries/gitlab-runner-linux-amd64",
  "url": "https://gitlab-runner-downloads.s3.amazonaws.com/v16.9.0-rc2/binaries/gitlab-runner-linux-amd64",
  "link_type": "other"
}

该资源的直接链接为:

https://gitlab.com/gitlab-org/gitlab-runner/-/releases/permalink/latest/downloads/binaries/gitlab-runner-linux-amd64

链接类型

四种链接类型分别是 “运行手册”、“包”、“镜像” 和 “其他”。link_type 参数接受以下四个值之一:

  • runbook
  • package
  • image
  • other (默认)

此字段对 URL 没有影响,仅用于您项目发布页面的视觉展示。

使用通用包附加二进制文件

您可以使用 通用包 来存储来自发布或标签流水线的任何工件,也可以用于将二进制文件附加到单个发布条目。

您基本上需要:

  1. 将工件推送到通用包注册表
  2. 将包链接附加到发布

以下示例生成发布资源,将它们发布为通用包,然后创建发布:

stages:
  - build
  - upload
  - release

variables:
  # 包版本只能包含数字 (0-9) 和点 (.)。
  # 必须为 X.Y.Z 格式,并且应匹配 /\A\d+\.\d+\.\d+\z/ 正则表达式。
  # 参见 https://docs.gitlab.com/ee/user/packages/generic_packages/#publish-a-package-file
  PACKAGE_VERSION: "1.2.3"
  DARWIN_AMD64_BINARY: "myawesomerelease-darwin-amd64-${PACKAGE_VERSION}"
  LINUX_AMD64_BINARY: "myawesomerelease-linux-amd64-${PACKAGE_VERSION}"
  PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/myawesomerelease/${PACKAGE_VERSION}"

build:
  stage: build
  image: alpine:latest
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - mkdir bin
    - echo "Mock binary for ${DARWIN_AMD64_BINARY}" > bin/${DARWIN_AMD64_BINARY}
    - echo "Mock binary for ${LINUX_AMD64_BINARY}" > bin/${LINUX_AMD64_BINARY}
  artifacts:
    paths:
      - bin/

upload:
  stage: upload
  image: curlimages/curl:latest
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - |
      curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/${DARWIN_AMD64_BINARY} "${PACKAGE_REGISTRY_URL}/${DARWIN_AMD64_BINARY}"
    - |
      curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/${LINUX_AMD64_BINARY} "${PACKAGE_REGISTRY_URL}/${LINUX_AMD64_BINARY}"

release:
  # 注意,截至 2021-02-02,这些资源链接需要登录,参见:
  # https://gitlab.com/gitlab-org/gitlab/-/issues/299384
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - |
      release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
        --assets-link "{\"name\":\"${DARWIN_AMD64_BINARY}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${DARWIN_AMD64_BINARY}\"}" \
        --assets-link "{\"name\":\"${LINUX_AMD64_BINARY}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${LINUX_AMD64_BINARY}\"}"

对于 PowerShell 用户,可能需要在使用 --assets-linkConvertTo-Json 时,使用 ` (反引号) 来转义 JSON 字符串中的双引号 ",然后再传递给 release-cli。例如:

release:
  script:
    - $env:asset = "{`"name`":`"MyFooAsset`",`"url`":`"https://gitlab.com/upack/artifacts/download/$env:UPACK_GROUP/$env:UPACK_NAME/$($env:GitVersion_SemVer)?contentOnly=zip`"}"
    - $env:assetjson = $env:asset | ConvertTo-Json
    - release-cli create --name $CI_COMMIT_TAG --description "Release $CI_COMMIT_TAG" --ref $CI_COMMIT_TAG --tag-name $CI_COMMIT_TAG --assets-link=$env:assetjson

不建议直接将 任务工件 链接附加到发布,因为工件是临时的,用于在同一流水线中传递数据。这意味着它们可能会过期,或者有人可能会手动删除它们。

新功能和总功能数量

  • 版本:Free, Premium, Ultimate
  • 提供:GitLab.com

GitLab.com 上,您可以查看项目中的新功能和总功能数量。

功能计数

总数显示在 徽章 上,并由 www-gitlab-com 仓库中的 Rake 任务 为每个发布生成。

项目 公式
新功能 项目中单个发布在所有版本中的发布帖子总数。
总功能 项目中所有发布按反向顺序的发布帖子总数。

按许可证版本也显示计数。

项目 公式
新功能 项目中单个发布在单个版本中的发布帖子总数。
总功能 项目中所有发布按反向顺序在单个版本中的发布帖子总数。