簡體   English   中英

Jenkins - bash:aws:找不到命令,但從終端運行良好

[英]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

因為awsPATH環境變量中不可用。

command not found表示 aws 實用程序不在 jenkins 用戶的 $PATH 上。

要確認, sudo su -l jenkins然后發出命令which aws - 這很可能不會返回任何結果。

你有兩個選擇:

  1. 使用完整路徑(可能是/usr/local/bin/aws
  2. /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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM