Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 配置gitlab ci,使其仅在未进行其他代码更改的情况下部署配置文件?_Deployment_Gitlab_Gitlab Ci - Fatal编程技术网

Deployment 配置gitlab ci,使其仅在未进行其他代码更改的情况下部署配置文件?

Deployment 配置gitlab ci,使其仅在未进行其他代码更改的情况下部署配置文件?,deployment,gitlab,gitlab-ci,Deployment,Gitlab,Gitlab Ci,目前,我们的部署是在通过gitlab ci向主分支提交时自动完成的。我们为每个repo部署两个东西,一个war和一个配置文件,配置文件与构建war的代码位于同一个repo中 我想改变这个逻辑,这样如果我做了一个只改变配置文件的提交,那么只有配置文件才会被部署,也就是说,如果war的代码没有被修改,就不要重新部署war 是否有一种干净的方法来更新我们的gliab ci,以便它可以根据更改的文件决定部署war、配置文件或两者?干净但手动的方法 请开发人员在提交消息中添加一个特殊标志,例如[DEPLY

目前,我们的部署是在通过gitlab ci向主分支提交时自动完成的。我们为每个repo部署两个东西,一个war和一个配置文件,配置文件与构建war的代码位于同一个repo中

我想改变这个逻辑,这样如果我做了一个只改变配置文件的提交,那么只有配置文件才会被部署,也就是说,如果war的代码没有被修改,就不要重新部署war

是否有一种干净的方法来更新我们的gliab ci,以便它可以根据更改的文件决定部署war、配置文件或两者?

干净但手动的方法 请开发人员在提交消息中添加一个特殊标志,例如
[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”是指根据作业的名称从管道屏幕上可以看到部署决策,而使用不太干净的自动方式,您无法从管道屏幕上确定哪个部署决策,因为条件子句嵌入到单个作业中