Дженкинс -> источник: не найден - PullRequest
0 голосов
/ 27 апреля 2020

Когда я запускаю эту команду с sh в aws экземпляр

docker run hello-world
aws ecr get-login --no-include-email --region ap-south-1 > ./login
source ./login

, она выводит

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

Что является успехом. Но при вводе такой же команды в jenkins, как enter image description here, вывод равен enter image description here

  1. Я добавил пользователя

    sudo usermod -a -G docker jenkins
    sudo usermod -a -G docker user
    

Что не так?

1 Ответ

1 голос
/ 27 апреля 2020

source не является стандартной командой оболочки; это не одна из «специальных встроенных утилит» в POSIX.1 spe c. В некоторых оболочках есть команда с именем source, но она не обязательна.

Существует аналогичная стандартная команда ., которая выполняет файл в контексте текущего ракушка. Если вы используете bash -specifi c source, вы обычно можете просто изменить его на стандартный . без каких-либо дальнейших изменений

. ./login

Обратите внимание, что . ищет $PATH для запуска файла; он не будет искать текущий каталог, если не указано иное. Также обратите внимание, что вы обычно используете . только для сценариев, которые имеют побочные эффекты, такие как установка переменных среды, и в контексте, подобном тому, что вы показываете, где каждая команда выполняется в отдельной оболочке, это не будет иметь более продолжительных эффектов.

Поскольку выходные данные команды aws ecr get-login представляют собой одну команду docker login, которая напрямую не изменяет контекст оболочки, вы также можете просто запустить ее как скрипт оболочки

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