首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gitlab CI:为CI和合并请求构建,但只将CI发布到页面

Gitlab CI:为CI和合并请求构建,但只将CI发布到页面
EN

Stack Overflow用户
提问于 2020-12-21 11:33:21
回答 1查看 434关注 0票数 1

我有一个.gitlab-ci.yml文件,我想使用它来运行合并请求验证脚本。在CI中应该使用相同的脚本,但只有在那里才应该将结果发布到gitlab页面。另外,只有对于CI,结果应该被缓存。

这是当前.gitlab-ci.yml的简化版本。

代码语言:javascript
复制
pages:
  stage: deploy
  script:
  - mkdir public/
  - touch public/file.txt
  artifacts:
    paths:
    - public
  only:
  - master
  cache:
    paths:
    - fdroid

(真实世界的代码在fdroid-firefox gitlab中。)

管道的触发方式有两种。根据这一点,我会或不想发布到页面:

  1. 通过合并请求验证。在本例中,我希望执行script部分,但我不希望发布或缓存结果(否则,任何拥有创建合并请求权限的人都可以覆盖gitlab页面内容)。
  2. 由CI (在签入到master分支并按照计划执行后触发)。在本例中,我希望缓存结果并更新gitlab页面。

我已经试过把舞台分开了:

代码语言:javascript
复制
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。(真实世界日志)。日志上写着:

代码语言:javascript
复制
Uploading artifacts for successful job
00:01
Uploading artifacts...
WARNING: public: no matching files                 
ERROR: No files to upload  

如果我不能访问构建阶段的结果,我做错了什么?

如何在这两种情况下运行script部分,但仍然只能从master分支部署到页面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-21 19:49:21

您不会将public路径工件保存在建造作业中。这就是为什么他们错过了下一个deploy阶段的pages工作。

你有这个:

代码语言:javascript
复制
build_repo:
  stage: build
  script:
    - your script

尝试在构建作业中保存工件,如下所示:

代码语言:javascript
复制
build_repo:
  stage: build
  script:
    - your script
  artifacts:
    when: always
    paths:
      - public

因此,他们将被传递到下一个阶段,deploypages作业可以看到他们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65392009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档