【发布时间】:2020-07-20 19:12:17
【问题描述】:
我目前正在努力运行我试图从 Jenkins 触发的.sh 脚本。
在 Jenkins“执行 shell”部分,我正在连接到远程服务器(Jenkins 代理没有合适的操作系统来构建我需要的东西。) ,使用:
cp -r . /to/shared/drive/to/have/access/on/remote
ssh -t -t username@servername << EOF
cd /to/shared/drive/to/have/access/on/remote
source build.sh dev
exit
EOF
在build.sh 中,我正在导出R_LIBS 来为不同的R 版本构建一个包。
...
for path in "${!rVersionPaths[@]}"; do
export R_LIBS="${path}"
Rscript -e 'install.packages(c("someDependency", "someOtherDependency"), repos="http://cran.r-project.org");'
...
设置R_LIBS 在此处的功能应该类似于在install.packages(...) 中设置lib。由于某种原因,R_LIBS export 没有被接收。同样设置其他环境变量,如 http_proxy 将被忽略。这会导致网络外部的任何请求失败。
有什么特别的方法可以实现吗?
【问题讨论】:
-
这是一个 bash 问题吗?如果是,请删除不相关的详细信息并提供minimal reproducible example。否则删除 bash 标签
-
你的 shell 脚本的第一行是什么?是否使用与默认 shell 相同的 shell?虽然它不应该真的有所作为。还会建议您将
env放入您的shell 脚本中以确认 -
@TarunLalwani 第一行是#!/bin/bash
-
打印路径时,我确实得到了正确的路径。此外,在安装包中设置 lib 时,它似乎也有效。但是,是的,从脚本中设置环境变量似乎不起作用
-
另外,当手动触发脚本(不使用 Jenkins)时,一切似乎都运行得很好。 Soo...当我通过 SSH 从连身衣服务器运行脚本时,我会失去任何权利吗?