Передать содержимое файла в качестве аргумента сборки в azure devops pipe docker задача сборки - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу передать содержимое моего файла в качестве аргумента сборки в команду docker build, используя --build-arg. Я использую следующую команду в терминале, и она работает нормально

docker build -t пример --build-arg PRIVATE_KEY = "$ (cat / home / key)".

, но когда я пытаюсь сделать то же самое в azure devops конвейере docker построить задачу и передать --build-arg PRIVATE_KEY="$(cat /home/key)" в поле аргументов, она принимает значение таким, как оно есть, то есть $(cat /home/key) и не выполняет команду cat.

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Не думаю, что это проблема задачи docker. Сезон, в котором она работала для задачи командной строки, вероятно, объясняется тем, что при запуске команды сборки docker на локальном компьютере или в задаче командной строки сначала командная строка оценивает, что заключено в "$()", а затем значение прошло до docker ARG. Но для задачи сборки docker она непосредственно вызывает docker .exe, поэтому выражение в «$()» не может быть оценено.

Поскольку вы нашли обходной путь для использования задачи командной строки. Я предлагаю вам использовать задачу командной строки вместо docker task.

Я также попробовал то, что предложил @ 4c74356b41. Я определил конвейерную переменную key и поместил значение ключа в эту переменную и сослался на эту переменную в docker задаче сборки.

И я работал со мной ниже, когда поставил --buld-arg PRIVATE_KEY="$(key)" в поле Аргументы .

  • Переменная enter image description here

  • Docker задача построения

enter image description here

0 голосов
/ 29 февраля 2020

Вам нужно либо поместить это значение в переменную и ссылаться на переменную, либо использовать шаг сценария для создания переменной из содержимого файла и ссылки на переменную.

альтернативой будет передача ключ к docker сборке в качестве контекста, а внутри сборки извлеките это значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...