Commit def7ae86 authored by shRabbit's avatar shRabbit
Browse files

CI 支持 tag 自动发布:按版本推镜像并创建 GitLab Release

- docker job 在 tag 时按 \ 打标推送

- 新增 release job:tag 时用 release-cli 创建 GitLab Release
parent 2517370c
Loading
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
# NoCost CI/CD:build → test → Docker 推送到 GitLab Container Registry
# NoCost CI/CD:build → test → Docker 推送 → tag 时自动发布 Release
stages:
  - build
  - test
  - docker
  - release

variables:
  DOTNET_VERSION: "10.0"
@@ -36,8 +37,27 @@ docker:
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
    - docker build -f src/NoCost/Dockerfile -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
    - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
    - |
      if [ -n "$CI_COMMIT_TAG" ]; then
        docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
      else
        docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
      fi
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
    - docker push "$CI_REGISTRY_IMAGE:latest"
    - |
      if [ -n "$CI_COMMIT_TAG" ]; then
        docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
      else
        docker push "$CI_REGISTRY_IMAGE:latest"
      fi
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$CI_COMMIT_TAG'

release:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  script:
    - release-cli create --name "NoCost $CI_COMMIT_TAG" --tag-name "$CI_COMMIT_TAG" --ref "$CI_COMMIT_SHA" --description "NoCost $CI_COMMIT_TAG 自动发布。Docker 镜像:$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
  rules:
    - if: '$CI_COMMIT_TAG'