无法找到可执行文件:“bash”。请验证文件路径是否存在

问题描述 投票:0回答:1

我在使用自托管 Windows 代理时遇到以下错误。

##[错误]无法找到可执行文件:“bash”。请验证文件路径是否存在,或者是否可以在 PATH 环境变量指定的目录中找到该文件。还要验证该文件是否具有有效的可执行文件扩展名。

如何在下面提到的管道中添加任务或阶段来解决此错误

这是我的管道 -

resources:
  pipelines:
  - pipeline: xx-deploy
    source: xxx Deploy
    project: xxx
    trigger:
      stages:
      - Deploy_xxx
    
variables:
- name: dashboardFileDirectory
  value: "C:\\Users\\svcAzureDxxx\\testdshbord"
- name: setJava
  value: "false"

stages:
- stage: Test1 #no whitespace
  displayName: xxx
  jobs:
    - job: BuildAndTest
      pool: 
       name: "Test Automation"
      displayName: 'Build and Test'
      steps:
      - template: templates/test-template.yml
        parameters:
          mvnCommand: mvn clean test install"
          pipelineArtifactName: xxx
      - bash: |
          echo "##vso[task.setvariable variable=xxxx-outcome;isOutput=true]$(result)"
        name: outputForDashboard
        condition: always()

    # run the report creation in a new job on microsoft hosted agents
    - job: allureReport
      pool: "Azure Pipelines"
      dependsOn: BuildAndTest
      condition: always()
      steps:
      - template: templates/allure-report.yml
        parameters:
          pipelineArtifactName: xxx
          reportName: xxxx-Test-Report  
azure azure-devops azure-pipelines
1个回答
0
投票

##[错误]无法找到可执行文件:'bash'。

问题的原因是 Bash 不是 Windows 机器的内置工具。

为了解决这个问题,我们可以安装 git bash 并在代理机器的环境变量 PATH 中添加 bash 命令文件夹。

如何在下面提到的管道中添加任务或阶段来解决此错误

要将所有步骤集成到 Pipeline 中,您可以添加以下任务:

steps:

- task: PowerShell@2
  displayName: Install Git And Config PATH ENV
  inputs:
    targetType: 'inline'
    script: |
      # Define the URL of the Git installer
      $gitInstallerUrl = "https://github.com/git-for-windows/git/releases/download/v2.40.1.windows.1/Git-2.40.1-64-bit.exe"
      
      # Define the path to save the installer
      $installerPath = "$env:TEMP\Git-2.40.1-64-bit.exe"
      
      # Download the Git installer
      Invoke-WebRequest -Uri $gitInstallerUrl -OutFile $installerPath
      
      # Run the installer silently
      Start-Process -FilePath $installerPath -ArgumentList "/SILENT", "/NORESTART" -Wait
      
      # Optionally, remove the installer after installation
      Remove-Item -Path $installerPath
      $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
      echo $env:Path
      $gitpath = git --exec-path
      $bashpath = $gitpath.Replace('mingw64/libexec/git-core','bin')
      echo "##vso[task.setvariable variable=PATH]$bashpath;$(PATH)"


- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      echo "test"

在这种情况下,我们可以使用 Windows 自托管代理中的 Bash 任务。

另一方面,从您的 YAML 示例中,您正在使用 bash 任务来设置 Pipeline 变量。

您也可以考虑改为使用PowerShell任务来实现相同的功能。在这种情况下,您不需要在 Pipeline 中配置 bash 环境变量。

例如:

  - powershell: |
      echo "##vso[task.setvariable variable=xxxx-outcome;isOutput=true]$(result)"
    name: outputForDashboard
    condition: always()
© www.soinside.com 2019 - 2024. All rights reserved.