在 中/etc/profile
,我们http_proxy
设置了变量。当我们从终端运行命令env
(通过 putty 中的 ssh 登录)时,它会正确显示。
但是当我们尝试从 Jenkins 运行env
命令时,这个变量不存在。在/etc/profile
导出http_proxy
。下面是我的/etc/profile
MY_PROXY_URL="http://web-proxy.corp.mycorp.net:8080"
HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
FTP_PROXY=$MY_PROXY_URL
http_proxy=$MY_PROXY_URL
https_proxy=$MY_PROXY_URL
ftp_proxy=$MY_PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy
当我们在 jenkins 中运行以下命令时
if [ -z $PS1 ] # no prompt?
then
echo "non-interactive"
else
echo "interactive"
fi
它显示为非交互式。所以我们尝试了下面的方法,在 .bashrc 文件中我们把这个
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
if [ -f ~/.bashrc ] ; then
source ~/.bashrc
fi
但还是env
显示不行http_ptoxy
。请帮忙。我们使用的是 Centos 7.7 虚拟机
答案1
默认情况下,Jenkins 使用sh
而非bash
来执行 shell 步骤。
从“执行 shell”部分的帮助/问号图标:
Runs a shell script (defaults to sh, but this is configurable) for building the project.
如果您转到管理 Jenkins --> 配置系统,您将找到一个选项(称为“Shell 可执行文件”)来设置您希望 shell 脚本使用的 shell 的名称或绝对路径...