Continuous integration 如果缓存为空,如何触发gitlab作业? 背景

Continuous integration 如果缓存为空,如何触发gitlab作业? 背景,continuous-integration,gitlab,devops,Continuous Integration,Gitlab,Devops,考虑一个带有预构建和构建阶段的虚拟gitlab作业 stages: - prebuild - build 预构建阶段的唯一任务是为以后的阶段创建和缓存依赖项。只有在pythonrequirements.txt文件发生更改时才会触发prebuild阶段。build阶段有一个pull的cache:policy,这意味着它对缓存遵从prebuild。例如,假设缓存由单个文件的共享文件组成sharedfile: prebuild_job: cache: policy: pull

考虑一个带有
预构建
构建
阶段的虚拟gitlab作业

stages:
  - prebuild
  - build
预构建
阶段的唯一任务是为以后的阶段创建和缓存依赖项。只有在python
requirements.txt
文件发生更改时才会触发
prebuild
阶段。
build
阶段有一个
pull
cache:policy
,这意味着它对缓存遵从
prebuild
。例如,假设缓存由单个文件的共享文件组成
sharedfile

prebuild_job:
   cache:
     policy: pull-push
     rules:
       - changes:
         - requirements.txt
     paths:
       - sharedfile
     script:
       - echo "FOOBAR" > sharedfile

build_job:
   cache:
     policy: pull
   paths:
     - sharedfile
   script:
     - cat sharedfile
这就是我想要的-
prebuild
只有在
requirements.txt
更改并且
build
使用其输出时才会触发(在本例中是
sharedfile
但实际上是一个完整的python虚拟环境)。 这非常有效,直到在gitlab上通过Clear Runner Caches按钮手动清除缓存,然后我们必须手动重新运行预构建步骤,否则构建将继续失败,因为在清除缓存后,预构建从未重新触发

问题: 我们如何设置缓存或解决方法,以便
预构建\u作业
在缓存除现有更改规则外为空时知道如何激发?。差不多

prebuild_job:
   cache:
     policy: pull-push
     rules:
       - changes:
         - requirements.txt
       - if: "$CACHE == {}"     #<-- something like this
     paths:
       - sharedfile
     script:
       - echo "FOOBAR" > sharedfile
prebuild_job:
   cache:
     policy: pull-push
     rules:
       - changes:
         - requirements.txt
       - if: '"True"'
         when: manual
         allow_failure: true     
       ...