我正在为[c0]文件夹中具有c ++库依赖项的python项目设置ci / cd。构建阶段运行foo/bar/c_code_src
并编译c ++库二进制文件并将其输出到python setup.py install
然后我运行一个python unittest,如果foo/bar/bin/
不存在,它将失败。
下面的脚本是我第一次尝试使用foo/bar/bin
:
.gitlab-ci.yml
这能够正常工作,因为编译stages:
- build
- test
build:
stage: build
script:
- python setup.py install
artifacts:
paths:
- foo/bar/c_code_src
test:
stage: test
dependencies:
- build
script:
- python -m unittest foo/bar/test_bar.py
需要花费较长的时间,并且生成的bin相当大,并且c_code_src
中的代码变化不大,所以我希望能够缓存c_code_src
文件夹用于将来的管道,并且仅在bin
中的代码更改时才运行构建阶段。阅读c_code_src
之后,似乎我想使用documentation代替cache
(或与之并列)。
这是我尝试修改artifacts
:
.gitlab-ci.yml
我不确定如何设置仅在stages:
- build
- test
build:
stage: build
script:
- python setup.py install
cache:
- key: bar_cache
paths:
- foo/bar/bin
test_bar:
stage: test
dependencies:
- build
cache:
key: bar_cache
paths:
- foo/bar/bin
policy: pull
script:
- python -m unittest foo/bar/test_bar.py
更改时才运行构建的条件。
总之我想要:
c_code_src
不存在或bin
有更改的情况下才运行构建>c_code_src
,即使构建阶段未运行,测试阶段也始终具有最新的bin
背景我正在为foo / bar / c_code_src文件夹中具有c ++库依赖项的python项目设置ci / cd。构建阶段运行python setup.py install并编译c ++ ...
[不确定您是否会遇到bin
不存在的情况,因为通常情况下,作业条件将查看在提交中所做的更改,而无需遍历整个存储库代码。