gpt4 book ai didi

Jenkins无需手动登录即可搭建监控墙

转载 作者:行者123 更新时间:2023-12-04 01:12:33 26 4
gpt4 key购买 nike

我正在尝试使用 Raspberry Pi 为我们的办公室墙创建一个完全自动化的 Jenkins 状态屏幕。我能够配置 Pi 以在电视上显示具有特定 URL 的浏览器以及配置 Build Monitor Plugin in Jenkins与我们的构建工作。

我们的 Jenkins 使用基于矩阵的安全性,所以我创建了单独的 raspberry具有所需权限的用户。 (手动登录后,墙插件显示正确。)

我可以使用以下命令查看有效的 HTTP 应答:

curl "http://raspberry:0b45...06@localhost:8080/view/wall1/"
0b45...06raspberry的API Token Jenkins 用户。 (从 http://localhost:8080/user/raspberry/configure )

不幸的是,这种 URL 方案在图形浏览器中不起作用。我也试过 token 参数但没有成功:
$ curl "http://localhost:8080/view/wall1/?token=0b45...06"
<html><head>...</head><body ...>


Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:

Permission you need to have (but didn't): hudson.model.Hudson.Read
... which is implied by: hudson.security.Permission.GenericRead
... which is implied by: hudson.model.Hudson.Administer
-->

</body></html>

如何获取无需登录浏览器(如 Chromium 或 Midori)并显示我的 Jenkins View 的 URL?

我不想要任何手动步骤,包括登录(例如通过 VNC),因为它不能很好地扩展到多个办公室/Pi。

最佳答案

我想看到一个更简单的解决方案,但解决方法可能如下。

我创建了一个本地 Apache 代理,它监听端口 80,设置授权 header 并将请求转发到我们的 Jenkins 实例,并使用以下 Apache 配置:

<VirtualHost 127.0.0.1:80>
ProxyRequests Off
ProxyPreserveHost Off
ProxyErrorOverride Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

SSLProxyEngine On
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerExpire On

ProxyPass / https://jenkins.example.com/ nocanon
ProxyPassReverse / https://jenkins.example.com/
AllowEncodedSlashes NoDecode

SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap https://jenkins.example.com/ /
SetEnv proxy-nokeepalive 1

<Location />
RequestHeader set Authorization "Basic {{ jenkins_basic_header }}"
Header edit Set-Cookie "Secure;" ""
Order allow,deny
Allow from all
</Location>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

(您可能需要微调 SSL 或其他参数,Apache 调试日志可能会有所帮助。)

请注意 Header edit Set-Cookie "Secure;" ""从 cookie 中删除安全标志的行。这是必需的,因为 Jenkins 使用 https 并发送 secure cookies而 Apache 代理仅在端口 80 上监听。否则,浏览器会将 session cookie(和其他 cookie)作为安全的 cookie,但不会通过普通的 http 连接将它们发回。 (如果您的仪表板插件在每次调用时都使用新 session ,这是一个问题。Jenkins 中链接的构建监视器插件不支持这一点,它需要稳定的 session ID。)

如果 Apache 仅在 localhost ( ports.conf ) 上监听,则在 Apache 上使用 https 似乎有点矫枉过正:
Listen 127.0.0.1:80
jenkins_basic_header可以使用以下 Python 脚本生成变量:
#!/usr/bin/python
import base64
import errno
import sys

if len(sys.argv) != 3:
print('Missing user pass/token arguments')
print('Usage: ./basic-pass.py <user> <pass/token>')
sys.exit(errno.EINVAL)

hash = base64.b64encode(sys.argv[1] + ':' + sys.argv[2])
sys.stdout.write(hash) # do not print new-line char

它也适用于 token 。

关于Jenkins无需手动登录即可搭建监控墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com