我们的一些Jenkins工作是他们部署的,例如到客户验收测试环境。这类工作不是偶然触发的,这一点非常重要。因此,在触发特定构建时,是否可以将Jenkins配置为以某种方式需要密码?
答案 0 :(得分:1)
设置Project based security,然后您可以基于每个作业限制构建访问权限。
来自Jenkins配置页面的帮助:
[基于项目的安全性]是“基于矩阵的安全性”的扩展 这允许为每个项目定义额外的ACL矩阵 单独(在作业配置屏幕上完成。)
这允许您说“Joe可以访问项目A,B和C” 但他看不到D.“请参阅”基于矩阵的安全“的帮助 基于矩阵的安全概念。
ACL是附加的,因此下面授予的访问权限将是 对所有项目都有效。*
答案 1 :(得分:0)
确定。 我关于这个问题的5点。
我们的Jenkins使用Redmine的mysql db作为auth输入。
在詹金斯,你需要下一个插件:并在激活Password
参数后,您会在构建之前询问它。
所以,我想出了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
如果您输入的密码不相等,它将破坏构建。
第二种解决方案,就是在Redmine中使用Rest API。 它允许在远程从站上重新检查用户。
CODE = $(curl -X GET -u $ {BUILD_USER}:$ {密码} - 写出"%{http_code}" -o / dev / null -s {{3 }}); 如果[$ CODE!=" 200" ] 然后 1号出口; 网络
如果它获得了200个代码,那么它就会构建。