詹金斯,有可能设置詹金斯工作要求密码?

时间:2013-01-22 12:53:04

标签: jenkins

我们的一些Jenkins工作是他们部署的,例如到客户验收测试环境。这类工作不是偶然触发的,这一点非常重要。因此,在触发特定构建时,是否可以将Jenkins配置为以某种方式需要密码?

2 个答案:

答案 0 :(得分:1)

设置Project based security,然后您可以基于每个作业限制构建访问权限。

来自Jenkins配置页面的帮助:

  

[基于项目的安全性]是“基于矩阵的安全性”的扩展   这允许为每个项目定义额外的ACL矩阵   单独(在作业配置屏幕上完成。)

     

这允许您说“Joe可以访问项目A,B和C”   但他看不到D.“请参阅”基于矩阵的安全“的帮助   基于矩阵的安全概念。

     

ACL是附加的,因此下面授予的访问权限将是   对所有项目都有效。*

答案 1 :(得分:0)

确定。 我关于这个问题的5点。

我们的Jenkins使用Redmine的mysql db作为auth输入。

在詹金斯,你需要下一个插件:

并在激活Password参数后,您会在构建之前询问它。

所以,我想出了2个选项。

  1. 如果您的从属设备与mysql(或任何数据库引擎)直接连接,则适用。
  2. 然后预建检查:

    SALT=$(mysql --defaults-extra-file="~/redmcheck.my" -B -se "select salt from redmine.users where login='${BUILD_USER}';")
    HASH=$(mysql --defaults-extra-file="~/redmcheck.my" -B -se "select hashed_password from redmine.users where login='${BUILD_USER}';")
    CHECK=$(sha1 -qs $SALT$(sha1 -qs $Password))
    
    if [ $HASH != $CHECK ] 
    then
      exit 1;
    fi
    

    如果您输入的密码不相等,它将破坏构建。

    1. 第二种解决方案,就是在Redmine中使用Rest API。 它允许在远程从站上重新检查用户。

      CODE = $(curl -X GET -u $ {BUILD_USER}:$ {密码} - 写出"%{http_code}" -o / dev / null -s {{3 }}); 如果[$ CODE!=" 200" ] 然后     1号出口; 网络

    2. 如果它获得了200个代码,那么它就会构建。

相关问题