Я создал конвейер сборки, в котором мне нужно получить изображения из частного репозитория ACR. Версия, которую нужно извлечь, хранится в файле, который я прочитал с помощью выражения регулярного выражения и команды sed Linux
- bash :
MONGO=$(sed -n -e '/Mongo_Service_Version/ s/.*\= *//p' $(Build.SourcesDirectory)/deployment/.env |
sed 's/ *$//g')
echo $MONGO
. Вышеупомянутая версия печатает правильную версию, которая присутствует в файле .env (например: 4.0) Но теперь, когда я использую ту же переменную для извлечения изображения из частного репо, я получаю сообщение об ошибке invalid reference
- bash :
MONGO=$(sed -n -e '/Mongo_Service_Version/ s/.*\= *//p' $(Build.SourcesDirectory)/deployment/.env |
sed 's/ *$//g')
echo $MONGO
docker pull my.repo/mongo:$MONGO
Интересно отметить, что если я задаю жестко запрограммированное значение для MON GO переменная, такая как 4.0, все работает. Кроме того, команда echo записывает правильный вывод для переменной, но я не уверен, почему я не могу использовать ее с командой docker pull.
Я пробовал команду docker pull с другим синтаксисом, как указано ниже , но я получаю ту же ошибку
docker pull klingelnberg.azurecr.io/gearengine/mongo:${MONGO}
docker pull "klingelnberg.azurecr.io/gearengine/mongo:$MONGO"
MONGO_VERSION=$(sed -n -e '/Mongo_Service_Version/ s/.*\= *//p' $(Build.SourcesDirectory)/deployment/.env | sed 's/ *$//g')
MONGO="my.repo/mongo:$MONGO_VERSION"
docker pull $MONGO
Я думаю, что это значение переменной, у меня есть escape-символы или что-то, что не печатается, но используется при извлечении изображения. (Возможно, значения цветового кода или как таковые) Вышесказанное - лишь мое предположение.