GVKun编程网logo

以另一个用户身份运行jenkins作业(如何以其他用户身份运行)

15

在本文中,我们将详细介绍以另一个用户身份运行jenkins作业的各个方面,并为您提供关于如何以其他用户身份运行的相关解答,同时,我们也将为您带来关于groovy–禁用给定JenkinsView/Tab

在本文中,我们将详细介绍以另一个用户身份运行jenkins作业的各个方面,并为您提供关于如何以其他用户身份运行的相关解答,同时,我们也将为您带来关于groovy – 禁用给定Jenkins View / Tab中的所有Jenkins作业、Jenkins作业运行系统的Groovy脚本如何响应用户杀死、Jenkins限制了每个用户的作业视图、linux – 从没有tty stdin的根脚本中以另一个用户身份运行脚本的有用知识。

本文目录一览:

以另一个用户身份运行jenkins作业(如何以其他用户身份运行)

以另一个用户身份运行jenkins作业(如何以其他用户身份运行)

我使用指南安装了jenkins,该指南在服务器中创建了一个“ jenkins”用户,并且显然在其下运行jenkins服务器。

我在服务器上的所有设置(虚拟环境,python软件包安装)均针对其他用户(“ ci-user”)。我有什么办法可以以“ ci_user”而不是“
jenkins”的身份运行我的工作?我想避免为“詹金斯”用户再次进行所有设置。

答案1

小编典典

文件中有JENKINS_USER变量etc/default/jenkins。您可以将其更改为ci_user,然后需要更改几个文件夹的所有权并重新启动计算机。

chown -R ci_user /var/lib/jenkinschown -R ci_user /var/log/jenkinschown -R ci_user /var/cache/jenkins

groovy – 禁用给定Jenkins View / Tab中的所有Jenkins作业

groovy – 禁用给定Jenkins View / Tab中的所有Jenkins作业

我在Jenkins创建的一个名为“Gradle Deploys”的视图中有大约100-120个作业.如何仅从给定的视图/选项卡禁用Jenkins的所有作业.

我尝试了以下groovy语法,首先只显示给定视图中的所有作业,但它出错了.

jenkins = Hudson.instance

//The following works actually but gives a lot of info.
//println "----" + jenkins.instance.getView("Gradle Deploys").items

println "----" + jenkins.instance.getView("Gradle Deploys").items.each.getItems().print(it)

一旦我在给定视图中获得了只是作业名称的列表,我只需要在上面的命令中使用“.disable()”函数,它就可以工作了.

如果我使用下面的代码,它会做我想要的,但我正在寻找一个衬垫.

for (item in jenkins.instance.getView("Gradle Deploys").items) {
   println("\nJob: $item.name")
   item.disabled=true

}

解决方法

您应该可以使用以下命令禁用它们:

jenkins.instance.getView("Gradle Deploys").items*.disabled = true

但是如果你想同时打印出来的东西,你需要一个

jenkins.instance.getView("Gradle Deploys").items.each { item ->
    println "\nJob: $item.name"
    item.disabled = true
}

Jenkins作业运行系统的Groovy脚本如何响应用户杀死

Jenkins作业运行系统的Groovy脚本如何响应用户杀死

我有一个长期运行的System
Groovy脚本,它可以启动数以万计的其他构建。为了不使构建队列过长(这将使UI无法使用),它将监视构建队列的长度。如果构建队列长于给定的阈值,它将不会启动任何新的构建并休眠一分钟。

问题是,此脚本无法响应用户的kill操作。当用户单击UI上的“杀死此构建”按钮时,什么也没有发生。我想知道是否有一种方法可以让系统Groovy脚本检查是否应该终止当前版本,因此它将退出睡眠并等待循环?

我尝试监视Executor.shouldRun(),但是用户的kill操作不会更改它。

答案1

小编典典

我过去曾调查过“杀死”按钮的问题。我的理解是,杀死信号实际上是立即发送给工作的。但是,如果该工作在其他API(或类似的东西)中很忙,则无法保证将其提取。但是,kill信号将不会被存储,否则作业将立即对其做出反应,否则将被忽略。睡眠一分钟可能就是这种情况。

因此,作为一种变通办法,我将创建自己的机制来向您的脚本发出信号,告知它应该停止。这可以通过将文件放置到特定位置(例如,groovy脚本作业的工作空间)来完成。这可以通过第二项作业称为Kill_job_1来完成。现在,在您的工作开始休眠之前(或在唤醒之后),您检查该文件是否存在,如果找到该文件,则结束脚本。当您第二次开始工作时,请不要忘记确保已清理文件。

Jenkins限制了每个用户的作业视图

Jenkins限制了每个用户的作业视图

有没有一种方法可以限制用户仅查看詹金斯中的某些作业。

Jenkins允许通过“基于项目的矩阵授权策略”来限制每个项目的用户能力。问题在于,如果没有“总体”“读取”设置,用户将无法访问任何内容。这似乎使他们可以查看所有作业。

还有另一个允许工作限制的插件吗?

linux – 从没有tty stdin的根脚本中以另一个用户身份运行脚本

linux – 从没有tty stdin的根脚本中以另一个用户身份运行脚本

使用CentOs,我想将脚本作为用户“培训”作为系统服务运行.我使用daemontools来监视进程,这需要一个以root身份运行并且没有tty标准的启动器脚本.

下面我给出了我尝试失败的五种尝试.

>:

#!/bin/bash
exec >> /var/log/training_service.log 2>&1
setuidgid training training_command

最后一行不够好,因为对于training_command,我们需要环境来设置用户.
>:

su - training -c 'training_command'

这看起来像它(Run a shell script as a different user),但给’标准必须是tty’作为su确保tty存在可能接受密码.我知道我可以通过修改/ etc / sudoers(la https://superuser.com/questions/119376/bash-su-script-giving-an-error-standard-in-must-be-a-tty)使其消失,但我不愿意并且不确定后果.
>:

sudo -u training -i bash -c 'source $HOME/.bashrc; training_command'

同一主题的变体:’sudo:对不起,你必须有一个tty来运行sudo’
>:

runuser - training -c 'training_command'

这个给runuser:无法设置组:连接被拒绝.我发现这个错误没有任何意义或解决方法.
>:

ssh -p100 training@localhost 'source $HOME/.bashrc; training_command'

这个更像是一个表达解脱的笑话.即使这一个失败,主机密钥验证失败. (主机密钥IS在kNown_hosts等中).

注意:如果我从root shell运行包装器脚本,那么所有2,3,4都应该工作.只有在系统服务监视器(daemontools)启动时才会出现问题(我猜没有tty终端).

我被卡住了.这件事难以实现吗?

我感谢所有对最佳实践的见解和指导.

(这也发布在超级用户:https://superuser.com/questions/434235/script-calling-script-as-other-user)

解决方法

您需要在/ etc / sudoers中为root禁用requiretty设置.通过visudo添加以下行:
Defaults:root !requiretty

您还需要/ etc / sudoers中的以下行,以便root可以执行所有操作(默认情况下应启用此选项,但请检查以确保):

root ALL=(ALL) ALL

然后你可以做以下事情:

sudo -u training /path/to/training_command

今天的关于以另一个用户身份运行jenkins作业如何以其他用户身份运行的分享已经结束,谢谢您的关注,如果想了解更多关于groovy – 禁用给定Jenkins View / Tab中的所有Jenkins作业、Jenkins作业运行系统的Groovy脚本如何响应用户杀死、Jenkins限制了每个用户的作业视图、linux – 从没有tty stdin的根脚本中以另一个用户身份运行脚本的相关知识,请在本站进行查询。

本文标签: