我有一个.gitlab-ci.yml
文件,我想用它来运行用于合并请求验证的脚本。在 CI 中应该使用相同的脚本,但只有在那里结果才应该发布到 gitlab 页面。此外,仅对于 CI,结果应该被缓存。
这是当前的简化版本.gitlab-ci.yml
:
pages:
stage: deploy
script:
- mkdir public/
- touch public/file.txt
artifacts:
paths:
- public
only:
- master
cache:
paths:
- fdroid
(实际代码在fdroid-firefox gitlab 存储库中。)
触发管道的方式有两种。根据这一点,我愿意或不希望发布到页面:
- 通过合并请求验证。在这种情况下,我想执行该
script
部分,但我不想发布或缓存结果(否则,任何有权创建合并请求的人都可能覆盖 gitlab 页面内容)。 - 由 CI(在签入
master
分支后并按照计划触发)。在这种情况下,我希望缓存结果并更新 gitlab 页面。
我已经尝试过拆分阶段:
stages:
- build
- deploy
build_repo:
stage: build
script:
- mkdir public/
- touch public/file.txt
pages:
stage: deploy
script: echo "publish to Gitlab pages"
artifacts:
paths:
- public
only:
- master
cache:
paths:
- fdroid
(原始.gitlab-ci.yml
文件)但是通过这样做,pages:deploy
阶段失败了,因为它无法访问build
阶段的结果。pages:deploy
舞台显示错误符号,并在工具提示上显示missing pages artifacts
。(真实世界日志)。日志说:
Uploading artifacts for successful job
00:01
Uploading artifacts...
WARNING: public: no matching files
ERROR: No files to upload
我做错了什么,我无法访问构建阶段的结果?
如何script
在这两种情况下运行该部分,但仍仅从master
分支部署到页面?