首页 > 解决方案 > 詹金斯->来源:未找到

问题描述

当我通过 ssh 将此命令运行到 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 中输入相同的命令时, 在此处输入图像描述 输出是 在此处输入图像描述

  1. 我添加了用户

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

出了什么问题?

标签: dockerjenkins

解决方案


source不是标准的 shell 命令;它不是POSIX.1 规范中的“特殊内置实用程序”之一。一些 shell 碰巧有一个名为的命令source,但它不需要存在。

有一个类似的标准命令 .可以在当前 shell 的上下文中执行文件。如果您使用的是 bash-specific source,您通常可以将其更改为标准,.而无需进行任何进一步的更改

. ./login

请注意,.搜索$PATH要运行的文件;除非特别告知,否则它不会搜索当前目录。另请注意,您通常仅.用于具有副作用的脚本,例如设置环境变量,并且在您显示每个命令在单独的 shell 中运行的位置这样的上下文中,这不会产生更持久的影响。

由于aws ecr get-login命令的输出是一个docker login不直接更改 shell 上下文的命令,因此您也可以将其作为 shell 脚本运行

sh ./login

推荐阅读