Я убедился, что git bash установлен на агенте, но все еще выдает следующую ошибку, а также добавил переменную env
ОШИБКА:
Невозможно найти исполняемый файл: «bash». Убедитесь, что путь к файлу существует или файл можно найти в каталоге, указанном переменной среды PATH. Также убедитесь, что файл имеет допустимое расширение для исполняемого файла.
Я хочу заменить токен самого агента, поскольку этот файл будет доступен только в папке агента, а не в исходном коде. и этот файл создается из одной из задач из конвейера Azure.
пример содержимого этого файла:
здесь, в приведенном выше URL-адресе, dev может быть stage, prod и т. д., его необходимо параметризовать и использовать токен замены.
Невозможно найти исполняемый файл: «bash». Убедитесь, что путь к файлу существует или файл можно найти в каталоге, указанном переменной среды PATH. Также убедитесь, что файл имеет допустимое расширение для исполняемого файла.
Я могу воспроизвести ту же проблему при использовании локального агента Windows.
Судя по вашему описанию, вы установили git bash.
Чтобы решить эту проблему, вы можете добавить папку команд bash
в переменную среды PATH на компьютере с агентом.
Вот шаги:
Шаг 1. Проверьте, существует ли bash.exe
в папке git bin.
Например:
Шаг 2. Вам необходимо войти в систему с агентом, а затем добавить C:\Program Files\Git\bin
в путь к переменным среды, а затем перезапустить агент.
Результат:
Обновлять:
Чтобы интегрировать все шаги в 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"
Обновление2:
Чтобы напрямую обновить файл на компьютере с агентом, вы можете использовать задачу Bash для запуска команды sed
для достижения этой цели.
Вот пример:
variables:
newvalue: dev01
steps:
- bash: 'sed -i -e "s/dev02/$(newvalue)/g" filename'
workingDirectory: 'Local Path folder where the file located(e.g. C:\Users\xx\Downloads)'
displayName: 'Bash Script'
@user25518631 user25518631 Задача «Заменить токен» не может напрямую удовлетворить ваши требования. Чтобы напрямую обновить файл на компьютере с агентом, вы можете использовать задачу Bash для запуска команды sed
для замены переменной. Обратитесь к обновлению2 в ответе.
Спасибо, похоже, это сработало, поскольку я не видел этой ошибки после использования приведенного выше сценария PS, и с другой стороны, как я уже упоминал в описании, не могли бы вы также предложить при использовании заменить токен в файле с машины агента, и этот файл будет доступен в папке агента, а не в исходном коде. и, например, этот файл состоит из URL-адреса dev02.domain.com поэтому у меня должна быть возможность параметризовать dev02, dev01 или dev03 и т. д., я использовал задачу замены токена, когда файл находится в исходном коде, и это удалось, но Я не уверен, когда файл находится только в агенте.