【问题标题】:/usr/bin/env: 'sh': Not a directory error on Azure Devops Pipeline [closed]/usr/bin/env:'sh':不是 Azure Devops Pipeline 上的目录错误 [关闭]
【发布时间】:2021-02-04 16:43:52
【问题描述】:

我有一个 gradle 项目,我想在 Azure DevOps 中的自托管代理上构建它。

这是我的 gradle 任务管道:

trigger:
 - azure-pipelines

pool:
 name: Default

steps:

 - task: Gradle@2
   inputs:
   workingDirectory: ''
   gradleWrapperFile: 'gradlew'
   gradleOptions: '-Xmx3072m'
   javaHomeOption: 'JDKVERSION'
   jdkVersionOption: 1.8
   jdkArchitectureOption: x64
   jdkUserInputPath: '/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java'
   publishJUnitResults: false
   testResultsFiles: '**/TEST-*.xml'
   tasks: 'build'

但如果我运行管道,我会遇到以下问题:

Error: The process '/azp/agent/_work/1/s/gradlew' failed with exit code 126
at ExecState._setResult (/azp/agent/_work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/2.176.0/node_modules/azure-pipelines-task-lib/toolrunner.js:816:25)
at ExecState.CheckComplete (/azp/agent/_work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/2.176.0/node_modules/azure-pipelines-task-lib/toolrunner.js:799:18)
at ChildProcess.<anonymous> (/azp/agent/_work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/2.176.0/node_modules/azure-pipelines-task-lib/toolrunner.js:721:19)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:920:16)
at Socket.<anonymous> (internal/child_process.js:351:11)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at Pipe._handle.close [as _onclose] (net.js:509:12)

SYSTEMVSSCONNECTION exists true
   /azp/agent/_work/1/s/gradlew build
   /usr/bin/env: 'sh': Not a directory
   ##[error]Error: The process '/azp/agent/_work/1/s/gradlew' failed with exit code 126

我已经尝试在代理上手动运行 gradlew 包装器,它没有问题。

【问题讨论】:

  • 您是在构建安卓应用还是Java 应用?您使用什么操作系统?如果您使用 Microsoft 托管的代理,您是否有同样的问题?根据您的错误信息:/usr/bin/env: 'sh': Not a directory。这可能与换行符类型有关。详情请参考this ticket
  • @WalterQian-MSFT 我正在构建一个 java 应用程序。我使用的是windows,但我的代理是linux。如果使用微软代理,我也会遇到同样的问题。我也看到了这张票,但解决方案对我不起作用,我使用 notepad++ 将其转换为 unix 样式。
  • 您提到您运行了 gradlew wrapper 命令。运行 gradlew build 命令的结果是什么?这是应该使用的命令,也是管道中 gradle 任务使用的命令。我关注了这个sample,它对我有用。你可以参考一下。
  • @WalterQian-MSFT 我解决了这个问题。我用管道设置了一个新的存储库,现在一切正常。我认为,这是我的旧仓库的问题。但我感谢你的努力。
  • 很高兴听到您解决了问题。你能分享你的答案并标记它吗?这将使有相同问题的人更容易找到答案。

标签: bash gradle azure-devops pipeline gradlew


【解决方案1】:

我可以解决问题。我刚刚用管道设置了一个新的存储库,现在一切正常。我认为,这是我的旧仓库的问题。

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多