在jenkins上用Plink.exe 调用shell脚本到目录ubuntu 编译机上用vivado编译FPGA bitfile时问题:
1. 直接用ssh 远程到目标机器上执行以下命令正常:
vivado -mode tcl -source Accelerator_top_x86.tcl
2. 在jenkins上调用sh以下命令后,sh执行同样的命令报以下错误:
jenkins 调用perl 脚本:
system qq/"plink.exe" "-l" "$host_build_usr" "-pw" "$host_build_pswd" "-m" "$shName" "$compilerIp"/;
$hName 中调用 vivado -mode tcl -source Accelerator_top_x86.tcl
错误:
10:47:18 /root/homeATE/ATE_USE_FPGA_SRC_CODE/nr_fpga/project/Accelerator_top/tcl
10:47:18 Start to build ... (tool:Accelerator_top_x86.tcl)
10:47:18 bash: line 124: vivado: command not found
3. 分析环境变量
在jenkins sh中加入echo $PATH 打印环境变量为:(无vivado)
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
直接登录到ubuntu echo $PATH 打印环境变量为:(有vivado)
root@test-Precision-3630-Tower:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/tools/Xilinx/Vivado/2019.1/bin
4. 尝试在脚本中加入了
source /root/.profile, 实际是用的/root/.bashrc
再调用 jenkins,还是报vivado找不到。
5. 这就尴尬了:
只有手动加入到PATH了,shell中加入 :
export PATH=$PATH:/tools/Xilinx/Vivado/2019.1/bin
果然这样就可以跑了:
11:01:28 cur dir:
11:01:28 /root/homeATE/ATE_USE_FPGA_SRC_CODE/nr_fpga/project/Accelerator_top/tcl
11:01:28 Start to build ... (tool:Accelerator_top_x86.tcl)
11:01:34
11:01:34 ****** Vivado v2019.1 (64-bit)
11:01:34 **** SW Build 2552052 on Fri May 24 14:47:09 MDT 2019
11:01:34 **** IP Build 2548770 on Fri May 24 18:01:18 MDT 2019
11:01:34 ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
11:01:34
11:01:34 source Accelerator_top_x86.tcl
11:01:34 # config_webtalk -user off
11:01:34 # create_project -in_memory
11:01:35 # set_param general.maxThreads 8
11:01:35 # set outputDir ../output
6. 虽然这样解决了问题,但是怎么样能获取到进一步root 原有的$PATH 还是没有找到,希望高手可以在下边留言,谢谢。
有空了我再研究一下。
测试了在sh中加上source /etc/profile 后工作就正常了。所以两种 方式都可以。这里这个要更合理一些。
后边再找了一下,可能是我source的文件不对,这文章中有介绍说是用/etc/profile 。 有遇到的可以直接用这个方式: