Deployment 配置gitlab ci,使其仅在未进行其他代码更改的情况下部署配置文件?
目前,我们的部署是在通过gitlab ci向主分支提交时自动完成的。我们为每个repo部署两个东西,一个war和一个配置文件,配置文件与构建war的代码位于同一个repo中 我想改变这个逻辑,这样如果我做了一个只改变配置文件的提交,那么只有配置文件才会被部署,也就是说,如果war的代码没有被修改,就不要重新部署war 是否有一种干净的方法来更新我们的gliab ci,以便它可以根据更改的文件决定部署war、配置文件或两者?干净但手动的方法 请开发人员在提交消息中添加一个特殊标志,例如Deployment 配置gitlab ci,使其仅在未进行其他代码更改的情况下部署配置文件?,deployment,gitlab,gitlab-ci,Deployment,Gitlab,Gitlab Ci,目前,我们的部署是在通过gitlab ci向主分支提交时自动完成的。我们为每个repo部署两个东西,一个war和一个配置文件,配置文件与构建war的代码位于同一个repo中 我想改变这个逻辑,这样如果我做了一个只改变配置文件的提交,那么只有配置文件才会被部署,也就是说,如果war的代码没有被修改,就不要重新部署war 是否有一种干净的方法来更新我们的gliab ci,以便它可以根据更改的文件决定部署war、配置文件或两者?干净但手动的方法 请开发人员在提交消息中添加一个特殊标志,例如[DEPLY
[DEPLY\u CFG]
。然后在.gitlab ci.yml
中,使特定作业仅具有此属性:
only:
variables:
- $CI_COMMIT_MESSAGE =~ /\[DEPLY_CFG\]/
自动但不是那么干净的方式
添加以下命令以检查特定文件是否在提交的文件列表中:
CFG_MOD=$(git diff-tree --no-commit-id --name-only -r ${CI_COMMIT_SHA} | grep path/to/the/config/file)
然后,只需使用if[[-n“${CFG_MOD}”]
来决定是否部署配置文件
注意:手动方式的“clean”是指根据作业的名称从管道屏幕上可以看到部署决策,而使用不太干净的自动方式,您无法从管道屏幕上确定哪个部署决策,因为条件子句嵌入到单个作业中