通过詹金斯运行脚本

通过詹金斯运行脚本

我需要通过 jenkins 运行一个脚本,该脚本位于用户 x 主目录, /home/x/script.sh

该脚本只能通过用户 x 运行,因为它将从.ssh文件夹中提取配置设置。

目前该脚本失败,因为我相信它是通过jenkins用户运行的。

答案1

你的行为与你自己的目的相悖。您的脚本取决于用户特定的凭据,但 Jenkins 旨在将您的构建与用户特定的配置和凭据隔离。有四种方法可以解决此类冲突(所有方法都可能会产生安全隐患,请谨慎操作):

  1. 向詹金斯授予凭证来完成这项工作。 (给它 ssh 密钥)这样做的优点是,jenkins 采取的操作会被记录为 jenkins 而不是开发人员,并且您可以限制 jenkins 必须执行的权限(例如 ssh 强制命令在这里很有用)。缺点是,由于 jenkins 是共享用户,因此他的凭据更容易泄露。

  2. 在脚本运行期间切换用户。 (这就是您使用解决方法所做的事情)除了 runuser 之外,还可以查看 sudo 和 super。 (对于这个用例,我更喜欢 super。)优点是故障排除更容易,因为脚本以编写它的同一用户身份运行。缺点是 jenkins 作为用户执行的操作将被归咎于用户,这可能会使用户的帐户更容易受到损害。 (这可以通过 jenkins 用户的 sudo 或 super 严格权限以及不信任从 jenkins 传递给用户的任何内容来缓解。perl 在 taint 文档中很好地记录了这个问题)

  3. 创建一个服务器来运行脚本。 CGI、RPC 等

  4. 重新思考整个事情。可能有一种方法可以在完全不需要凭据的情况下完成需要完成的事情。

相关内容