gpt4 book ai didi

git - 无法在 GitLab CI/CD 中的作业之间传递工件

转载 作者:行者123 更新时间:2023-12-02 19:27:04 25 4
gpt4 key购买 nike

我有一个 GitLab 项目和我的 .gitlab-ci.yml看起来像这样:

stages:
- build
- deploy

image: registry.gitlab.com/myuser/myproj/ubuntuxenial:v1

before_script:
- cd /home
- mkdir docker
- cd docker
- git clone "https://xxx@github.com/myuser/myproj.git" repo
- cd repo

render_site:
stage: build
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME--$CI_JOB_STAGE-$CI_COMMIT_REF_NAME"
expire_in: 1 week
paths:
- home/docker/repo/
script:
- Rscript build.R

...

我在这个问题的上下文中提供了文件的基本部分。如您所见,此自动化旨在执行以下操作:
  • 克隆一个存储库。
  • 在存储库中调用构建命令(我正在使用 R)。此步骤将在存储库文件夹中生成一些输出文件。
  • 确保发布工件,我要发布整个存储库的内容repo文件夹。

  • 备注 我已将 GitLab 设置为使用 Docker 镜像。我正在使用我在注册表中上传的 Unix 镜像。

    问题

    问题发生在第一份工作中: render_site .一切都很好,命令被执行并且所有构建都很好。但是,该任务日志中的最后一行是:
    Uploading artifacts...
    WARNING: home/docker/repo/: no matching files
    ERROR: No files to upload

    故障排除

    我知道问题出在我在 .gitlab-ci.yml 中提供的路径中.我尝试了以下方法:
  • home/docker/repo/
  • /home/docker/repo/
  • repo/

  • 没有任何效果。我们指定的这个路径,它与什么有关??? documentation提到:

    You can only use paths that are within the project workspace.



    这是什么意思?我每次推送时都在创建一个容器,我 cd进入我在 .gitlab-ci.yml 中指定的命令中的不同目录,那么文档提到的项目工作区是什么?

    最佳答案

    问题解决了。我的问题显然是因为对 GitLab 以及运行者的工作方式缺乏了解。我缺少的是,运行程序在从指定的 Docker 镜像创建容器后,实际上会在容器中创建一个包含提交的文件夹。

    无用的克隆

    因此,我在 before_script 中拥有的东西完全没用。感谢@ensc 在评论中指出这一点。

    项目路径

    谈到这个问题,项目路径正是在指定提交处克隆存储库的容器中创建的目录。

    关于git - 无法在 GitLab CI/CD 中的作业之间传递工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313542/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com