docker - Windows 上的 Gitlab docker runner:msbuild 失败
问题描述
几个月来,我使用几个共享的跑步者来运行我的 GitLab CI 工作。我所有的跑步者都在 linux 主机或 macOS 上运行,效果很好!这项工作是使用 mono:latest 图像编译 .Net 标准项目。
我将 msbuild 与 nugget restore 一起使用,这是我的问题。我最近在Windows上添加了我的第一个共享运行器,仍然像往常一样使用 docker 运行器,如此处所述(这是我一直这样做的方式)。但是有了这个新的Windows共享运行器,只有这个,当 msbuild 从我们的本地(子网)块存储库恢复块包时,我的工作失败了。
我尝试在另一台 Windows 主机上安装另一个 docker 运行器和同样的问题。我收到了这个错误:
错误:无法加载源 http://skirnir/NuGet/index.json 的服务索引错误:不知道这样的主机
Skirnir 是托管我的 nugget 包的本地服务器。我从我的工作中尝试“curl http://login:pwd@skirnir/NuGet/index.json”并且它可以工作,因此当使用单图像从容器内执行 msbuild 时,它可以访问 Skirnir!但是 msbuild restore 总是无法获取包。我试图用它的 IP 替换 skirnir 但同样的问题,因为 index.json 在“@id”中引用了skirnir:“http://skirnir/NuGet/”。
这是我的 gitlab 工作:
cache:
key: "$CI_JOB_NAME"
paths:
- packages
variables:
MAIN_DIR: "Proj1"
before_script:
- nuget help > /dev/null
- cp $HOME/.config/NuGet/NuGet.Config .
- nuget sources add -Name skirnir_ci -Source http://skirnir/NuGet/index.json -UserName $NUGET_USER -Password $NUGET_PASSWORD -configfile $(pwd)/NuGet.Config
- export NUGET_PACKAGES=$(pwd)/packages
build pcl:
image: mono
stage: build
tags:
- docker
retry: 2
only:
- tags
- branches
- web
variables:
PROJECT: "Proj1"
script:
- export MSBUILD_PROP="/p:Configuration=Release;RestoreConfigFile=$(pwd)/NuGet.Config"
- msbuild /t:restore "$MSBUILD_PROP" $MAIN_DIR/$PROJECT/$PROJECT.csproj
- msbuild "$MSBUILD_PROP" $MAIN_DIR/$PROJECT/$PROJECT.csproj
任何想法?
解决方案
推荐阅读
- c# - 如何使用基于声明的授权保护 asp.net core 2.1 中的静态文件夹
- html - 移动设备上不显示主菜单(纵向)
- git - 项目范围的存储库权限
- lua - 如何在反编译后删除已编译 LUA 中的无用数据,然后像修改/不修改一样重新编译?
- php - 获取具有税级的单独订单的税收总额
- javascript - 使用动态上下文数据时如何用新的 React 上下文 api 替换旧的 React contextTypes?
- javascript - 数组中的空元素是什么意思,如果理论上它不存在,为什么要在长度中考虑它
- python-3.x - tf.estimator.export.build_raw_serving_input_receiver_fn 问题
- python - Python枚举迭代子集
- php - 如何为 Wp 所有导入编码以更新 ACF 字段