首页 > 解决方案 > gitlab-ci 中的“发布”阶段有什么用?

问题描述

有人可以简单地向我解释发布阶段实际上做了什么,为什么它有用吗?至于我对官方文档的理解,它所做的只是创建某种标签?!

编辑:(响应 wedm)我指的是https://docs.gitlab.com/ee/ci/yaml/#release上的官方 gitlab 文档中描述的阶段 此页面描述了所有细节,但我没有了解大局:我们为什么要这样做,我们要在这里完成什么?

我已经接管了一个在部署阶段之后具有“发布”阶段的项目:

release:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  needs:
    - build-release-env
  rules:
    - if: "$CI_COMMIT_TAG =~ /^v/"
  variables:
    ASSET_URL_BUILD: "${CI_PROJECT_URL}/-/jobs/artifacts/${CI_COMMIT_SHA}/download?job=build-www"
    ASSET_URL_BUNDLE: "${CI_PROJECT_URL}/-/jobs/artifacts/${CI_COMMIT_SHA}/download?job=docker-image"
  script:
    - echo "Creating release for ${CI_COMMIT_TAG} (${CI_COMMIT_SHA})"
    - cat ./CHANGELOG.latest.md
    - |
      release-cli create --name "Release ${CI_COMMIT_TAG}" --tag-name ${CI_COMMIT_TAG} \
        --description ./CHANGELOG.latest.md \
        --assets-link "{\"name\":\"Complete Build\",\"url\":\"${ASSET_URL_BUILD}\"}" \
        --assets-link "{\"name\":\"Docker image\",\"url\":\"${ASSET_URL_BUNDLE}\"}" \
        --ref ${CI_COMMIT_SHA}

标签: gitlabgitlab-ci

解决方案


关于您给定的示例:从脚本部分看起来它正在为其运行的项目创建一个gitlab 版本。以编程方式这样做会带来一些优势,因为并非所有选项(例如定时发布)都可以通过 gitlab 的 web ui 获得。


推荐阅读