Windows中的Gitlab Runner使用:.gitlab-ci.yml中MsBuild.exe的路徑和.csproj檔案路徑

终南山人發表於2024-04-14

簡介

如果用cd命令去了MsBuild.exe的安裝目錄,再找到原始碼簽出的目錄就有難度了。

暫時解決方案如下:

variables:
  MSBUILD_PATH: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\MSBuild\\Current\\Bin" # 我的Msbuild.exe是在這個資料夾
  DAIV_OA_WEB_OUTPUT_DIR: /gitlab-runner/output/Daiv_oa/$CI_PIPELINE_ID
  BUILD_PATH: "X:\\gitlab-runner\\builds\\01\\x4Rcy3k1z\\0\\study\\daiv_oa\\" # 這裡暫時是取巧了。“x4Rcy3k1z”這種引數也許能在Gitlab Runner的變數中獲取?

build-job:
  stage: build
  tags: 
    - zhongfang-windows
  script:
    - echo "Compiling the code..."
    - echo $DAIV_OA_WEB_OUTPUT_DIR
    - echo $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj"
    - echo $MSBUILD_PATH
    - cd $MSBUILD_PATH
    - .\msbuild.exe $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj" /p:WebProjectOutputDir=$DAIV_OA_WEB_OUTPUT_DIR
    - echo "Compile complete."

作業日支如下:

$ echo $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj"
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\\Daiv_OA.Web.csproj
$ echo $MSBUILD_PATH
C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin
$ cd $MSBUILD_PATH
$ .\msbuild.exe $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj" /p:WebProjectOutputDir=$DAIV_OA_WEB_OUTPUT_DIR
適用於 .NET Framework MSBuild 版本 17.9.8+b34f75857
生成啟動時間為 2024/4/14 0:44:01。
節點 1 上的專案“X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj”(預設目標)。
PrepareForBuild:
正在建立目錄“bin\”。
正在建立目錄“obj\Debug\”。
專案“X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj”(1)正在節點 1 上生成“X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.BLL\Daiv_OA.BLL.csproj”(2:2) (預設目標)。

……………………省略……………………

X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\TastCheck.aspx.designer.cs(166,27): error CS0400: 未能在全域性名稱空間中找到型別或名稱空間名“Sisans”(是否缺少程式集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\My_Summarize_List.aspx.designer.cs(40,27): error CS0400: 未能在全域性名稱空間中找到型別或名稱空間名“Wuqi”(是否缺少程式集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Task_Add.aspx.designer.cs(112,27): error CS0400: 未能在全域性名稱空間中找到型別或名稱空間名“Telerik”(是否缺少程式集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Task_Add.aspx.designer.cs(121,27): error CS0400: 未能在全域性名稱空間中找到型別或名稱空間名“Telerik”(是否缺少程式集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Summarize_List.aspx.designer.cs(76,27): error CS0400: 未能在全域性名稱空間中找到型別或名稱空間名“Wuqi”(是否缺少程式集引用?) [X:\gitlab-runner\builds\01\x4Rcy3k1z\0\study\daiv_oa\Daiv_OA.Web\Daiv_OA.Web.csproj]
140 個警告
35 個錯誤
已用時間 00:00:01.93
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit status 1

問題很明顯:就是確守一些第三方元件的dll。

MsBuild使用ReferencePath

build-job:       # This job runs in the build stage, which runs first.
  stage: build
  tags: 
    - zhongfang-windows
  script:
    - echo "Compiling the code..."
    - echo $DAIV_OA_WEB_OUTPUT_DIR
    - echo $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj"
    - echo $MSBUILD_PATH
    - cd $MSBUILD_PATH
    - .\msbuild.exe $BUILD_PATH"Daiv_OA.Web\\Daiv_OA.Web.csproj" /p:ReferencePath=X:\study\ErpFiles /p:WebProjectOutputDir=$DAIV_OA_WEB_OUTPUT_DIR
    - echo "Compile complete."

網站終於在被Gitlab Runner在Windows上打包成功了:

img

下一篇:把打包好的網站傳輸到遠端Windows伺服器

相關文章