我最近安装了Jenkins,使用自制程序。我也安装了Mercurial使用自制程序。
我可以成功地克隆一个HG回购协议就好了-从终端。但如果我尝试做同样的事情作为Jenkins工作的一部分,它失败了。
所以,在by job中,我告诉Jenkins运行一个shell脚本echo $PATH
。果然,路径/usr/local/bin
不在那里。如果我从终端执行相同的命令,它就在那里。
那么,修改PATH的最佳方法是什么,以便Jenkins在我从终端回显它时拉取我正在使用的相同PATH?
请注意,Jenkins是从我登录进行这些测试的同一个用户帐户运行的,所以我不明白为什么会发生这种情况。
6条答案
按热度按时间gzszwxb41#
在Jenkins的launchd .plist文件中,可以使用以下命令设置PATH环境变量:
这样就可以将PATH设置为所需的任何路径。
bq3bfh9z2#
由于某种原因,Jenkins在连接到从机时没有将/usr/local/bin保留在PATH中。
您可以通过以下方式将其添加到PATH中
注:Mac客户端必须断开连接,然后在编辑~/.bashrc后通过Jenkins Web应用程序重新连接
zbq4xfa03#
我发现即使为节点设置PATH环境变量也不适用于hombrew Mercurial安装。路径会被设置,但只适用于脚本构建阶段,而不适用于VCS checkout 阶段。以下是我最终所做的。
1.进入
Manage Jenkins -> Configure System
1.添加新的Mercurial安装
1.随便你怎么命名(我把我的命名为build-mac)
1.对于
Installation Directory
,我输入/usr/local
Executable
参数被预先设置为INSTALLATION/bin/hg
,所以我就不做修改了。1.这里的其他内容可以留空
1.进入作业并编辑配置
1.在
Source Code Management
下,将Mercurial Version
设置为您刚刚添加的mercurial安装。1.保存
1.$$
希望这能帮助其他遇到同样问题的人,现在我们不允许(默认情况下)在
/usr/bin
中做任何事情了。以前我只会在那里符号链接hg,但现在有了新的"系统完整性保护""功能",这不再是微不足道的任务,如果你的Mac奴隶是无头的,甚至会更困难。gkn4icbw4#
您可以在launchd.conf文件中设置PATH。有关详细信息,请参见here。注意,
man launchctl
表示'命令可以存储在$HOME/.launchd.conf或/etc/launchd.conf中,以便在launchd启动时读取',所以你可以在你的主目录下创建.launchd.conf文件,并使用这个文件的链接中的说明。但是据我所知,在launchd.conf文件中你可以'不要在PATH中添加目录,你可以重写PATH。您还可以使用/etc/paths.d目录查看here以了解解决方案
sulc1iza5#
在以下PATH修改中,=的两侧不应有空格:路径="/usr/本地/bin:$路径”
我把它添加到我在macOS上安装的Jenkins的预构建步骤中。
ar7v8xwq6#
管理Jenkins -〉配置系统-〉环境变量-〉添加