GitLab CI 和 MsBuild - 本地 CMD 工作; GitLab Runner 没有吗?

GitLab CI and MsBuild - Local CMD Works; GitLab Runner Doesn't?

确实很奇怪,但我确定我误解了或遗漏了一些简单的东西。

虽然 RDP'd 到 Windows GitLab 运行ner,但以下命令可以正常工作:

"C:\Program Files (x86)\Microsoft Visual Studio22\BuildTools\MSBuild\Current\Bin\MSBuild.exe" C:\GitLab-Runner\builds\rS1z3GJ3[=11=]\folder1\client\build\ClientWebsite.msbuild /t:BuildAndPackage /nowarn:CS0618 /p:IisWebAppName=client /p:IncludeSetAclProviderOnDestination=False /p:ProductVersion=1

根据 MSBuild 文件,构建文件会在 C:\GitLab-Runner\builds\rS1z3GJ3[=41=]\folder1\client\deploy_files.

下创建

但是当我通过 gitlab-ci.yml 文件 运行 exact 相同的命令时,不会生成部署文件。 GitLab 作业的输出是:

CMD.EXE "C:\Program Files (x86)\Microsoft Visual Studio22\BuildTools\MSBuild\Current\Bin\MSBuild.exe" C:\GitLab-Runner\builds\rS1z3GJ3[=12=]\folder1\client\build\ClientWebsite.msbuild /t:BuildAndPackage /nowarn:CS0618 /p:IisWebAppName=client /p:IncludeSetAclProviderOnDestination=False /p:ProductVersion=1 

Microsoft Windows [Version 10.0.17763.2628] 

(c) 2018 Microsoft Corporation. All rights reserved. 

C:\GitLab-Runner\builds\rS1z3GJ3[=12=]\folder1\client> 

Cleaning up project directory and file based variables 00:00 Job succeeded

我认为这可能是用户将 GitLab Runner 服务设置为 运行 的问题,但即使尝试使用本地管理员用户,它仍然无法正常工作。 我怀疑这是清理项目目录的问题,但即使将部署文件设置为导出到另一个驱动器上的单独文件夹,它们仍然不会出现。

我可能做错了什么?

如有任何帮助,我们将不胜感激。

编辑:

GitLab 运行器配置:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "buildserver01"
  url = "https://gitlab.company.co.uk"
  token = "rS1z3GJ392utu-J-CkeM"
  executor = "shell"
  shell = "powershell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

GitLab-Ci.Yml 文件:

variables:
  SERVICE_NAME: "client"
  NODE_VERSION: "14.15.3"

stages:
  - build $SERVICE_NAME package with MSBuild.exe

build_package:
  stage: build $SERVICE_NAME package with MSBuild.exe
  tags: 
    - client
  script:
    - echo "Installing NodeJS environment $NODE_VERSION if it's not already installed."
    - nvm install $NODE_VERSION
    - echo "Selecting NodeJS environment $NODE_VERSION using NVM"
    - nvm use $NODE_VERSION
    - echo "Creating the Web Deploy Package"
    - CMD.EXE "C:\Program Files (x86)\Microsoft Visual Studio22\BuildTools\MSBuild\Current\Bin\MSBuild.exe" C:\GitLab-Runner\builds\rS1z3GJ3[=14=]\folder1\client\build\clientWebsite.msbuild /t:BuildAndPackage /nowarn:CS0618 /p:IisWebAppName=client /p:IncludeSetAclProviderOnDestination=False /p:ProductVersion=1

感谢 GitLab 的支持,这个问题现在已经解决了。 他们建议完全删除 'CMD.EXE' 命令,而是直接通过 PowerShell 运行 MSBuild:

'& "C:\Program Files (x86)\Microsoft Visual Studio22\BuildTools\MSBuild\Current\Bin\MSBuild.exe" $CI_PROJECT_DIR\build\ClientWebsite.msbuild /t:BuildAndPackage /nowarn:CS0618 /p:IisWebAppName=Client /p:IncludeSetAclProviderOnDestination=False /p:ProductVersion=1'