如何在Gitlab-Runner工作之间共享工件,而无需公开下载



我正在处理WPF C#项目的.NET配置文件。我的build_job创建了我的test_job需要访问的dll。目前,我一直在做这样的事情:

build_job:
  stage: build
  only:
    - tags  
  script:
    - '"%NUGET_PATH%" restore'
    - '"%MSBUILD_PATH%" /p:Configuration=Release'
  artifacts:
    expire_in: 1 week
    paths:
      - "%RELEASE_FOLDER%AutoBuildWpfTest.exe"
      - "%RELEASE_FOLDER%NLog.config"
      - "%RELEASE_FOLDER%NLog.dll"
      - "%TEST_FOLDER%Tests.dll"
test_job:
  stage: test
  only:
    - tags
  script:
    - '"%NUNIT_RUNNER_PATH%" %TEST_FOLDER%Tests.dll'
  dependencies:
    - build_job

这种方法的问题是我的artifacts.zip文件现在被仅用于测试需要但实际部署不需要的文件污染。

我的问题是,如何在工作之间共享文件之间的文件,而不会出现在artifacts.zip中?

另外,是否有任何方法可以在不保留目录树的情况下将文件添加到artifacts.s.zip?构建.NET项目时,您最终会使用一些非常深的目录,例如我的输出可执行文件在:

autobuildwpftest bin repares

,因此,当它们被拉开时,您尝试打开它们时,您必须浏览4个文件夹级别才能到达所需的文件。理想情况下,我希望我所有的输出文件,就在artifact.zip的根部。谢谢。

我从中看到的唯一方法是从测试阶段获取工件,所以也许您的.yml看起来像这样:

build_job:
  stage: build
  only:
    - tags  
  script:
    - '"%NUGET_PATH%" restore'
    - '"%MSBUILD_PATH%" /p:Configuration=Release'
  artifacts:
    expire_in: 1 week
    paths:
      - "%RELEASE_FOLDER%AutoBuildWpfTest.exe"
      - "%RELEASE_FOLDER%NLog.config"
      - "%RELEASE_FOLDER%NLog.dll"
      - "%TEST_FOLDER%Tests.dll"
test_job:
  stage: test
  only:
    - tags
  script:
    - '"%NUNIT_RUNNER_PATH%" %TEST_FOLDER%Tests.dll'
    - mv %RELEASE_FOLDER%AutoBuildWpfTest.exe AutoBuildWpfTest.exe 
    - mv %RELEASE_FOLDER%NLog.config NLog.config
    - mv %RELEASE_FOLDER%NLog.dll NLog.dll
  dependencies:
    - build_job
  artifacts:
    expire_in: 1 week
    paths:
      - "AutoBuildWpfTest.exe"
      - "NLog.config"
      - "NLog.dll"

然后,您可以从 test_job 下载工件。我知道这不是理想的,但是文档并未显示任何处理单个工件的先进方法。同样,移动文件也应消除嵌套文件夹的其他问题。我知道这也不是理想的,但是这是我发现有效

的唯一方法

最新更新