[英]Jenkins - bash: aws: command not found but runs fine from terminal
在構建步驟中,我添加了發送文件或通過 SSh -> SSH Publishers -> Exec 命令執行命令,我正在嘗試運行 aws 命令將文件從 ec2 復制到 s3。 當我通過終端執行相同的命令時,它運行良好,但通過 jenkins 它只返回: bash: aws: command not found
命令是cd ~/.local/bin/ && aws s3 cp /home/ec2-user/lambda_test/lambda_function.zip s3://temp-airflow-us/lambda_function.zip
根據評論。
解決方案是使用以下命令:
cd ~/.local/bin/ && ./aws s3 cp /home/ec2-user/lambda_test/lambda_function.zip s3://temp-airflow-us/lambda_function.zip
因為aws
在PATH
環境變量中不可用。
command not found
表示 aws 實用程序不在 jenkins 用戶的 $PATH 上。
要確認, sudo su -l jenkins
然后發出命令which aws
- 這很可能不會返回任何結果。
你有兩個選擇:
/usr/local/bin/aws
)/usr/local/bin
添加到 jenkins 用戶的 $PATH我需要我的 Makefile 在 Linux 和 Windows 中工作,所以接受的答案不是我的選擇。
我通過將以下內容添加到構建腳本的頂部來診斷問題:
whoami
which aws
env|grep PATH
這返回:
root
which: no aws in (/sbin:/bin:/usr/sbin:/usr/bin)
PATH=/sbin:/bin:/usr/sbin:/usr/bin
奇怪的是,該路徑不包括/usr/local/bin
,即使 Jenkins 主機上的交互式 shell 包含它。 修復很簡單,在 Jenkins 主機上創建一個符號鏈接:
ln -s /usr/local/bin/aws /bin/aws
現在可以通過在 Jenkins(在/bin
中)中運行的腳本找到aws
命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.