Я пытаюсь выполнить сценарий оболочки, который изменяет некоторые файлы в моем исходном коде как часть конвейера сборки. Сборка выполняется на частном агенте Linux.
Итак, я использую задачу сценария оболочки (я также пробовал встроенную задачу bash), мой yaml выглядит так:
- task: ShellScript@2
inputs:
scriptPath: analytics/set-base-image.bash
args: $(analyticsBaseImage)
failOnStandardError: true
И set-base-image.bash:
#!/bin/bash
sudo mkdir testDir
sudo sed -i -e "s/##branchBaseImagePlaceholder##/$1/g" Dockerfile-shiny
sudo sed -i -e "s/##branchBaseImagePlaceholder##/$1/g" Dockerfile-plumber
Но ничего не происходит. Я получаю вывод отладки, который выглядит следующим образом:
##[debug]/bin/bash arg: /datadrive/agent1/_work/1/s/analytics/set-base-image.bash
##[debug]args=analytics-base
##[debug]/bin/bash arg: analytics-base
##[debug]failOnStandardError=true
##[debug]exec tool: /bin/bash
##[debug]Arguments:
##[debug] /datadrive/agent1/_work/1/s/analytics/set-base-image.bash
##[debug] analytics-base
[command]/bin/bash /datadrive/agent1/_work/1/s/analytics/set-base-image.bash analytics-base
/datadrive/agent1/_work/1/s/analytics
##[debug]rc:0
##[debug]success:true
##[debug]task result: Succeeded
##[debug]Processed: ##vso[task.complete result=Succeeded;]Bash exited with return code: 0
testDir не создан и файлы не изменены.
Сценарий работает нормально, если я захожу на компьютер агента и запускаю его там (после запуска chmod + x в файле сценария).
Я также пробовал встроенную задачу Bash вместо задачи оболочки (в любом случае разница не очевидна).
Если я добавлю к сценарию команды, которые не требуют каких-либо привилегий, например echo
и pwd
, они будут работать нормально, и я увижу результаты в отладке. Но Mkdir и Sed не делают.