Gitlab CICD - 与之前的提交进行比较

问题描述 投票:0回答:1

在 GItlab-CI 中,仅当

$APP
等于“my-app” 并且文件
file.txt
与上次提交相比已更改时,我才尝试开始工作。

目前我的 .gitlab-ci.yml 文件如下所示:

stages: - install_dependencies - build variables: APP_NAME: "my-app" install_dependencies: stage: install_dependencies image: doesnt matter script: - echo "Installing dependencies..." rules: - if: '$APP == "my-app"' changes: path: - file.txt compare_to: '$CI_COMMIT_BEFORE_SHA' build: stage: build image: doesnt matter script: - echo "Building my app..." dependencies: - install_dependencies
我尝试将 

compare_to

 更改为每个选项(例如:
HEAD~
HEAD^
refs/heads/$CI_COMMIT_BEFORE_SHA
refs/heads/$CI_COMMIT_BRANCH
 等),但对我来说没有任何效果。

我认为

compare_to

有问题。

有人知道我怎样才能实现这个目标吗?

gitlab continuous-integration gitlab-ci cicd rules
1个回答
0
投票
我从未使用过

compare_to

 功能,但似乎不支持变量扩展 - 请参阅 
#369916

但是,根据我的理解,您的用例应该在没有

compare_to

 的情况下工作,但不适用于合并请求管道。在分支/标签上的管道(与合并请求无关的管道)中,仅应评估最新的提交:

没有显式关联的分支或标签上的管道 对于合并请求,使用先前的 SHA 来计算差异。这 计算相当于 git diff HEAD~ 会导致意外 行为,包括:

    当推送新分支或 GitLab 的新标签。
  • 当推送新的提交时,更改的文件是 使用之前的提交作为基础 SHA 进行计算。
为了避免在推送新分支时更改始终评估为 true,您可以将

CI_COMMIT_BEFORE_SHA

0000000000000000000000000000000000000000
 进行比较,请参阅 
CI_COMMIT_BEFORE_SHA

对于合并请求管道,我想您需要在

script

 中手动进行检查,如果更改不包括您的文件,则以 0 退出。像 
git --no-pager diff --name-only HEAD HEAD~1
 这样的东西可能有助于在最新提交中更改文件。

© www.soinside.com 2019 - 2024. All rights reserved.