Есть ли способ обновить докер-файл с помощью переменных из конвейера Azure? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть 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)'
...