【问题标题】:jenkins pipeline sh not working for few commands詹金斯管道sh不适用于少数命令
【发布时间】:2018-11-15 21:31:58
【问题描述】:

我正在尝试运行以下命令以在 Jenkins 管道中使用 sonarqube 扫描 dotnet 核心项目

    sh "dotnet sonarscanner begin /k:projectkey1"
    sh "dotnet build"
    sh "dotnet sonarscanner end"

给我以下错误

    + dotnet sonarscanner begin /k:projectkey1
    No executable found matching command "dotnet-sonarscanner"

我可以登录到与用户 jenkins 相同的服务器并运行相同的命令而不会出现任何问题。 请帮忙

【问题讨论】:

  • 您需要将全局工具目录添加到您的路径中。检查它的安装位置并添加此目录。就我而言,它安装在/root/.dotnet/tools 中。另一个问题是你在对抗什么样的詹金斯奴隶?

标签: jenkins .net-core jenkins-pipeline jenkins-declarative-pipeline


【解决方案1】:

您需要在 Jenkins 管道中设置 dotnet 工具路径。

试试:

sh "export PATH=${PATH}:${HOME}/.dotnet/tools"

在您的管道步骤之前:

sh "dotnet sonarscanner begin /k:projectkey1"
sh "dotnet 构建"
sh "dotnet sonarscanner 结束"

【讨论】:

    【解决方案2】:

    确保用于管道中代理的用户帐户与您已登录并安装 sonarscanner 全局 CLI 工具的用户帐户相同。因为 .NET Core 全局工具是特定于用户的,所以如果用户不同,它将不可用。

    如果您确定是同一用户,那么很可能是由cmd.exe needing to be restarted 引起的。

    如果一切都失败了,you can use SonarScanner.MSBuild.dll for .NET Core 而不是全局 CLI 工具。

    【讨论】:

    • 我在 Ubuntu 机器上运行 dotnet core。所有其他 dotnet 命令都有效。除了这个
    • donet-sonarscanner 不是标准的dotnet CLI 命令,它是已安装的global tool。这就是它表现不同的原因。
    猜你喜欢
    • 2020-08-26
    • 2017-08-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    相关资源
    最近更新 更多