GitLab CI .NET 部署中的几个坑

时间:2024-08-09 19:06:56
  • 信息乱码
  • Msbuild编译失败 VS却编译成功
  • 设置环境变量本地有用,但是runner跑起来就失败
  • powershell公共变量为空
  • 命令执行失败,却集成成功,pass了

1.信息乱码

GitLab CI .NET 部署中的几个坑

信息乱码是真的烦,找了半天,博友有说在yml加上"chcp 65001" 就行,然并卵。搞了许久最后用暴力解决办法解决,设置Unicode UTF-8 提供全球语言支持。如果是服务器的话也可以直接把系统语言改成英语

GitLab CI .NET 部署中的几个坑

设置好之后,再retry。就可以了

GitLab CI .NET 部署中的几个坑

2.Msbuild编译失败 VS却编译成功

直接说原因:因为选择错了msbuild.exe。如果安装了everything 可以看看系统中有多少msbuild.exe,其中有的是阉割版的,所以编译失败,要选择你当前vs版本匹配的exe。例如选择图中 地址中包含2017那个

GitLab CI .NET 部署中的几个坑

3.设置环境变量无效

起初我也是看到yml文档一大串的地址看的比较难受,于是遍想弄环境变量,本地powershell用环境变量命令跑msbuild没问题,但是一旦发布到gitrunner跑就失败,异常:ObjectNotFound: (nuget:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException,意思是说找不到这命令,OJBK,醉了,最后发现自己配置的环境变量配到用户变量去了……..

GitLab CI .NET 部署中的几个坑

最后 只要把地址配到系统变量就行了

4.powershell公共变量无效

发现我在job1中设置的公共变量在job2中为空。原因公共变量应该设置到"before_script" 或者"variables" 。Job是独立的

5.命令执行失败,却集成成功,pass了

看到pipelines中显示

GitLab CI .NET 部署中的几个坑

进入job中查看发现却有异常,有些脚本没执行成功

GitLab CI .NET 部署中的几个坑

解决办法:yml中加上 - $ErrorActionPreference = "Stop" 就行,然后retry,就可以是failed的

GitLab CI .NET 部署中的几个坑