我在gitlab中有一个存储库product-config
,其中包含其他存储库共享的设置/配置。
例如我有一个ec-firmware-service
仓库,其中有.productConfiguration.targets
个文件,它像这样导入.target
个仓库的product-config
文件
<Import Project="$(MSBuildThisFileDirectory)..\..\product-config\.msbuild\TransformApplicationConfig.targets" />
<Import Project="$(MSBuildThisFileDirectory)..\..\product-config\.msbuild\TaskConfigPreprocessor.targets" />
product-config
存储库中确实有这些目标文件,但是我仍然遇到此构建错误
C:\builds\engineering\myproject\swc\ec-firmware-service\Configuration\\.productConfiguration.targets(5,3):
error MSB4019: The imported project
"C:\builds\engineering\myproject\swc\product-config\\.msbuild\TransformApplicationConfig.targets"
was not found. Confirm that the expression in the Import declaration
"C:\builds\engineering\myproject\swc\ec-firmware-service\Configuration\\..\\..\product-config\\.msbuild\TransformApplicationConfig.targets"
is correct, and that the file exists on disk.
[C:\builds\engineering\myproject\swc\ec-firmware-service\src\EC.FirmwareService.WebApi\EC.FirmwareService.WebApi.csproj]
所以基本上是这个错误
The imported project "C:\builds\engineering\myproject\swc\product-config\.msbuild\TransformApplicationConfig.targets" was not found.
哪个是正确的目录和TransformApplicationConfig.targets
文件的路径,但由于某种原因它无法接收它。
我能看到的唯一原因是因为它在不同的存储库中。
有什么方法可以将目标文件放在gitlab中的不同存储库中吗?
更新
我的目标是在我的.gitlab-ci.yml
文件mcr.microsoft.com/dotnet/framework/sdk
建议的一种解决方案是在构建解决方案时将存储库克隆到当前存储库,因此我尝试这样做,但是我使用的docker映像不包含git
,因此无法遵循该解决方案。
这就是我在gitlab文件中写的内容
# Build
Build:
stage: build
image: mcr.microsoft.com/dotnet/framework/sdk
before_script:
#- git
script:
- echo $URL
- cd src
#- git clone https://${productconfigdeployerusername}:${productconfigdeployerpassword}@gitlab.cpicloudservices.com/engineering/easitrax-connect/swc/product-config.git
- msbuild /t:restore
- msbuild EC.FirmwareService.sln /p:Configuration=Release
only:
- branches
tags:
- windows-runner
environment:
name: development
您可以看到git clone
行已被注释。如果我取消注释,它将开始发出错误,提示无法识别git
。
答案 0 :(得分:0)
您可以尝试创建一个新映像并在其中安装git,但我不知道如何在Windows中执行该操作。
相反,您可以添加一个单独的作业来克隆存储库,并将其导出为作业工件。然后,Windows作业可以使用此工件,从而消除了图像中对git的需要。
become: yes
become_user: root
免责声明:我没有运行此代码,它可能包含错误。