如何仅在最新的semver标记上构建gitlab ci页面?忽略后端口标记/etc
我只想在项目获得新标签时运行gitlab ci页面作业。我已经知道,您可以通过以下方式实现:如何仅在最新的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版本做一个错误修复,如果我们修复了这个错
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 withonly
在您的情况下,如果您希望管道仅在推送新标记时运行,那么您应该考虑标记的命名约定,并找到一个只与这些新标记匹配的正则表达式。这会给你一些想法:
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比较失败,整个作业应该停止谢谢您的评论。不幸的是,我认为这不能解决我的问题。我在原来的帖子中添加了更多的解释。我希望这有帮助!谢谢你的评论。不幸的是,我认为这不能解决我的问题。我在原来的帖子中添加了更多的解释。我希望这有帮助!