У меня есть Azure Трубопровод, который я пытаюсь построить. Внутри dockerfile должны быть переменные для некоторой секретной информации, касающейся нашего Azure Keyvault, моя цель - не хранить эту информацию в каком-либо файле, вместо этого конвейер должен обновлять dockerfile при запуске; Я создал простой сценарий bash внутри репозитория, для которого настроен конвейер, он возьмет имена переменных и обновит файл docker, однако он говорит, что не может найти файл docker ..
Это скрипт,
sed -i "s/<AZURE_CLIENT_ID>/${1}/g" Dockerfile
sed -i "s/<AZURE_CLIENT_SECRET>/${2}/g" Dockerfile
sed -i "s/<AZURE_TENANT_ID>/${3}/g" Dockerfile
sed -i "s/<KEY_VAULT_NAME>/${4}/g" Dockerfile
Я установил аргументы в конвейере и использовал команду echo, чтобы убедиться, что они возвращают нужные значения.
Это ошибка, которую я получаю :
sed: не удается прочитать Dockerfile: нет такого файла или каталога /home/vsts/work/1/s/update-docker-var.sh: строка 6: $ '\ r': команда не найдена
Я пытался использовать команду 'ls' и команду 'pwd', но они оба ничего не возвращают ... Я вроде как в тупик, любая помощь будет отличной. Спасибо!
Это участок bash трубопровода YAML:
- task: Bash@3
inputs:
filePath: 'update-docker-var.sh'
arguments: '$(AZURE_CLIENT_ID) $(AZURE_CLIENT_SECRET) $(AZURE_TENANT_ID) $(KEY_VAULT_NAME)'
workingDirectory: '$(Build.SourcesDirectory)'