发布字段

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

标题

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

标签名称

发布标签名称应包含发布版本。极狐GitLab 使用语义版本控制发布我们的版本,我们建议您也这样做,使用 (Major).(Minor).(Patch)

例如,对于版本 10.5.7

  • 10 代表主要版本。主要版本是 10.0.0,但通常称为 10.0
  • 5 代表小版本。次要版本是 10.5.0,但通常称为 10.5
  • 7 表示补丁编号。

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

发行说明描述

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

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

发布 assets

一个版本包含以下类型的 assets:

源代码

极狐GitLab 从给定的 Git 标签自动生成 ziptar.gztar.bz2tar 归档源代码。这些是只读 assets。

链接

链接是可以指向您喜欢的任何内容的任何 URL:文档、构建的二进制文件或其他相关材料。这些可以是来自实例的内部或外部链接。作为 assets 的每个链接都具有以下属性:

属性 描述 是否必需
name 链接的名称。 Yes
url 下载文件的 URL。 Yes
filepath 指向 url 的重定向链接。有关更多信息,请参阅此部分No
link_type 用户可以通过 url 下载的内容类型。有关更多信息,请参阅此部分No

最新发布的永久链接

引入于 14.9 版本。

最新发布页面可通过永久 URL 访问。 系统将在访问时重定向到最新的发布页面 URL。

URL 的格式为:

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

我们还支持,后缀路径继续重定向到最新发布。 例如,如果 v14.8.0-jh 是最新发布并且具有可读链接 https://host/namespace/project/-/releases/v14.8.0-jh#release,则可以将其寻址为 https://host/namespace/project/-/releases/permalink/latest#release

请参阅发布 assets 的永久链接部分,了解有关后缀路径结转使用的更多信息。

排序首选项

默认情况下,极狐GitLab 使用 released_at 时间获取版本。查询参数 ?order_by=released_at 的使用是可选的。

发布 assets 的永久链接

与发布相关的 assets 可通过永久 URL 访问。 系统始终将此 URL 重定向到实际 assets 位置,因此即使 assets 移动到不同位置,您也可以继续使用相同的 URL。这是在链接创建更新时定义的。

URL 的格式为:

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

最新发布 assets 的永久链接

引入于 14.9 版本。

发布 assets 的永久链接中的 filepath 可以与最新版本的永久链接结合使用。当我们想要链接永久 URL,从最新发布下载 assets 时,它很有用。

URL 的格式为:

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

链接类型

引入于 13.1 版本。

四种类型的链接是 “Runbook”、“Package”、“Image” 和 “Other”。 link_type 参数接受以下四个值之一:

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

此字段对 URL 没有影响,它仅用于项目的发布页面中的可视化区分。

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

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

  1. 将产物推送到通用软件包库。
  2. 将软件包链接附加到发布

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

stages:
  - build
  - upload
  - release

variables:
  # Package version can only contain numbers (0-9), and dots (.).
  # Must be in the format of X.Y.Z, i.e. should match /\A\d+\.\d+\.\d+\z/ regular expresion.
  # See 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:
  # Caution, as of 2021-02-02 these assets links require a login, see:
  # 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}\"}"
note不建议将作业产物链接直接附加到发布,因为产物是短暂的,用于在同一流水线中传递数据。这意味着它们可能会过期或有人可能会手动删除它们。