我使用两台 CentOS 服务器。我没有使用任何代码存储库。在 Jenkins 中,当我单击“新建项目”时,我看不到输入目标服务器的地方。我希望有一个地方可以为给定的构建配置目标服务器(例如,运行 bash 命令或将文件从 Jenkins 服务器传输到目标服务器)。由于 Jenkins 在 Linux 端以 Jenkins 用户身份运行,因此它无法以 root 身份通过 SSH 传输文件。我希望在从支持 Jenkins 的 Linux 服务器传输文件后以 root 身份执行命令。我可以使用 Jenkins 的“新建项目”构建步骤中的本机 shell 命令来执行此操作。有一个用于此类命令的自由文本字段。但我不知道如何以交互方式响应密码挑战。
在哪里配置给定部署的目标服务器?
我可以将 root 密码硬编码到 Jenkins 作业中吗?如果可以,我该怎么做。我不想安装 sshpass。
除了核心 Jenkins 之外,还需要哪些插件来将文件从一台 Linux 服务器部署到另一台 Linux 服务器?
答案1
在 Jenkins 中,您可以使用标签来定义项目的构建位置。创建新项目后,您将(在作业配置中)看到一个名为“限制此项目可以运行的位置”的复选框。这里可以使用从属节点名称(例如,slave4.mycompany)或创建一个标签,它是多个从属节点的容器。正确填写后,此作业将始终在给定的从属节点上构建。
如果您需要更多功能,请尝试 NodeLabel 参数插件 (nodelabelparameter)。您可以从管理 Jenkins > 管理插件 > 可用来安装它。
为了识别在构建期间您所在的节点,您可以例如在两个构建从属服务器上手动设置持久环境变量,例如 $SLAVENAME 返回“buildslave1”,或者在脚本中使用 linux“hostname”命令来识别当前上下文,并根据该输出决定如何继续。