如何仅在最新的semver标记上构建gitlab ci页面?忽略后端口标记/etc

如何仅在最新的semver标记上构建gitlab ci页面?忽略后端口标记/etc,gitlab,gitlab-ci,git-tag,semantic-versioning,Gitlab,Gitlab Ci,Git Tag,Semantic Versioning,我只想在项目获得新标签时运行gitlab ci页面作业。我已经知道,您可以通过以下方式实现: only: - tags 但问题是,如果我们推送一个旧版本的标签(一个后端口错误修复或其他),那么这将覆盖页面构建。如果有帮助,我们可以使用SEMVER标记 例如,我试图避免的是对替换gitlab页面的早期版本进行错误修复 让我们假设在主分支上发布版本1.5.0,这将为该版本构建页面,这些页面将是当前的文档页面 现在让我们假设我们必须为1.3.0到1.3.1版本做一个错误修复,如果我们修复了这个错

我只想在项目获得新标签时运行gitlab ci页面作业。我已经知道,您可以通过以下方式实现:

only:
  - tags
但问题是,如果我们推送一个旧版本的标签(一个后端口错误修复或其他),那么这将覆盖页面构建。如果有帮助,我们可以使用SEMVER标记

例如,我试图避免的是对替换gitlab页面的早期版本进行错误修复

让我们假设在主分支上发布版本1.5.0,这将为该版本构建页面,这些页面将是当前的文档页面

现在让我们假设我们必须为1.3.0到1.3.1版本做一个错误修复,如果我们修复了这个错误,然后推送它,因为页面构建在标签上,它将构建1.3.1版本的文档,而这些文档将替换1.5.0版本的文档,我希望以某种方式避免。

GitLab CI仅使用
即可

在您的情况下,如果您希望管道仅在推送新标记时运行,那么您应该考虑标记的命名约定,并找到一个只与这些新标记匹配的正则表达式。这会给你一些想法:

job:
    only:
       - /^(\d+\.)?(\d+\.)?(\*|\d+)$/
    except:
      - branches
      - triggers
您需要
except
语句来指定作业只应在推送标记时运行。如果您只是将
-tags
添加到带有正则表达式的
only
语句中,则每当按下标记时,当分支或触发器与正则表达式匹配时,它就会运行。

GitLab CI with
only

在您的情况下,如果您希望管道仅在推送新标记时运行,那么您应该考虑标记的命名约定,并找到一个只与这些新标记匹配的正则表达式。这会给你一些想法:

job:
    only:
       - /^(\d+\.)?(\d+\.)?(\*|\d+)$/
    except:
      - branches
      - triggers

您需要
except
语句来指定作业只应在推送标记时运行。如果您只是将
-tags
添加到带有正则表达式的
only
语句中,每当推送标记时,以及当分支或触发器与正则表达式匹配时,它都会运行。

一个可能的解决方案是合并一个开始阶段作业,该作业比较最新的标记,并且仅在最近推送的标记是最新的时发送
成功

stages:
  - compare tags
  - build
  - test
  - deploy

job:
  stage: compare tags
  only:
    - <semver tag regex goes here>
  except:
    - branches
  script: 'script-that-will-compare-all-semver-tags-to-CI_COMMIT_TAG-and-fail-if-not-latest'

job:
  stage: build
  ...

job:
  stage: test
  ...

...
阶段:
-比较标签
-建造
-试验
-部署
工作:
阶段:比较标签
仅:
- 
除:
-分支机构
脚本:“script-that-will-compare-all-semver-tags-to-CI_COMMIT_TAG-and-fail-if-not-latest”
工作:
阶段:建造
...
工作:
阶段:测试
...
...

如果semver比较失败,整个作业应该停止

一个可能的解决方案是合并一个开始阶段作业,该作业比较最新的标记,并且仅在最近推送的标记是最新的标记时发送
成功

stages:
  - compare tags
  - build
  - test
  - deploy

job:
  stage: compare tags
  only:
    - <semver tag regex goes here>
  except:
    - branches
  script: 'script-that-will-compare-all-semver-tags-to-CI_COMMIT_TAG-and-fail-if-not-latest'

job:
  stage: build
  ...

job:
  stage: test
  ...

...
阶段:
-比较标签
-建造
-试验
-部署
工作:
阶段:比较标签
仅:
- 
除:
-分支机构
脚本:“script-that-will-compare-all-semver-tags-to-CI_COMMIT_TAG-and-fail-if-not-latest”
工作:
阶段:建造
...
工作:
阶段:测试
...
...

如果semver比较失败,整个作业应该停止

谢谢您的评论。不幸的是,我认为这不能解决我的问题。我在原来的帖子中添加了更多的解释。我希望这有帮助!谢谢你的评论。不幸的是,我认为这不能解决我的问题。我在原来的帖子中添加了更多的解释。我希望这有帮助!