目录
[3.1 方案一:使用API Token生成免密链接](#3.1 方案一:使用API Token生成免密链接)
[3.2 方案二:在飞书消息中直接输出关键信息](#3.2 方案二:在飞书消息中直接输出关键信息)
[3.3 方案三:将日志归档并提供下载链接](#3.3 方案三:将日志归档并提供下载链接)
[4.1 🛠️ 详细设置步骤](#4.1 🛠️ 详细设置步骤)
[4.1.1 第一步:进入全局安全配置](#4.1.1 第一步:进入全局安全配置)
[4.1.2 第二步:启用并配置授权策略](#4.1.2 第二步:启用并配置授权策略)
[4.1.3 第三步:配置具体项目的权限(精细控制)](#4.1.3 第三步:配置具体项目的权限(精细控制))
[4.1.4 第四步:验证效果](#4.1.4 第四步:验证效果)
[4.2 🔒 更安全的替代方案建议](#4.2 🔒 更安全的替代方案建议)
[4.3💎 总结](#4.3💎 总结)
前言:在日常工作当中jenkins生成了报告,然后发送了飞书消息以及对应的链接,但是无法访问对应的jenkins,必须登录方可访问,本文将带你解决这个问题
一、现实问题

你希望解决飞书消息中的Jenkins链接需要账号密码登录的问题,这个问题确实影响使用体验。目前主要有两种解决思路:一是让链接本身无需登录即可访问(包括使用Token或调整权限),二是绕过链接,将关键信息直接发到飞书。
二、提供解决方案
下面是几种具体方案的对比,你可以根据团队的安全要求选择:
| 方案思路 | 具体方法 | 优点 | 缺点/注意事项 |
|---|---|---|---|
| 🔗 让链接可匿名访问 | 1. 使用API Token访问 :在流水线脚本中,用具有权限的用户的API Token 生成链接-1。 | 用户点击可直接查看,体验最好。 | Token需妥善保管,存在泄露风险。 |
| 2. 调整项目匿名权限 :在Jenkins全局安全设置中,为特定项目(或视图)添加匿名用户的只读权限。 | 一劳永逸,无需修改代码。 | 需谨慎配置,存在安全风险,不适合所有公司。 | |
| 📨 不依赖链接,信息直发 | 3. 在飞书消息中直接输出关键信息 :在流水线中捕获检查结果,整理后作为飞书消息正文 发送-6-10。 | 最安全,无需任何权限开放。 | 信息可能过长;无法追溯完整历史日志。 |
| 4. 将日志归档并提供下载链接 :将当次构建的完整控制台日志归档为文件,通过内部文件服务器提供临时下载链接放入飞书。 | 平衡了安全与信息完整性。 | 需要额外的文件存储服务支持。 |
三、各方案详解
3.1 方案一:使用API Token生成免密链接
这种方法是在你的流水线脚本中,用Jenkins用户的API Token来"签名"链接。其核心是生成一个形如 JENKINS_URL/job/YOUR_JOB/lastBuild/consoleText?token=USER_API_TOKEN 的链接。
-
获取API Token :在Jenkins页面,点击右上角用户名 -> 设置 -> API Token 区域,点击"生成"并保存好。
-
在流水线中使用Token:修改你的Py脚本或Jenkinsfile,在生成飞书消息时,将Token作为参数拼接到链接中。
-
注意安全 :Token等同于密码,务必像保管密码一样保管它,不要直接硬编码在脚本里。建议存入Jenkins的**"凭据"** 管理,在流水线中以安全的方式读取
3.2 方案二:在飞书消息中直接输出关键信息
这是最彻底的解决方案,完全避开链接。你需要修改现有的Py检查脚本和消息发送逻辑。
-
捕获并格式化输出 :修改你的Py脚本,使其不仅能发现错误,还能将关键的错误摘要(如错误数量、涉及的文件、错误类型)整理成清晰的文本。
-
优化飞书消息 :修改发送飞书消息的脚本,不再只发一个链接,而是将上一步整理的错误摘要作为消息正文发送 -6。可以参考现有代码结构,将内容填入
content字段-10。 -
保留快速入口(可选) :你仍然可以在消息里附带一个"查看完整日志 "的按钮,链接指向Jenkins(即方案一或二),供有权限或需要深度排查的人员使用-10。
3.3 方案三:将日志归档并提供下载链接
这是一个折中方案,需要额外的存储服务支持(如公司内网的文件服务器、对象存储等)。
-
在流水线中,将本次构建的完整控制台输出保存为一个文本文件。
-
将这个文件上传到你们内部的文件服务器 或静态资源服务器 ,获得一个直接的文件下载链接(通常是无需认证的)。
-
在飞书消息中,附上这个文件的下载链接。
总的来说,如果安全要求允许,方案一(API Token)或方案二(调整匿名权限)能提供最好的用户体验 。如果对安全要求极高,或希望通知内容一目了然,方案三(信息直发)是最佳选择。
四、重点实现jenkins匿名访问方式
⚠️ 在开始之前,请务必与您的团队或运维人员确认 :在公司安全策略允许的前提下操作。为项目开放匿名只读权限,意味着任何能访问Jenkins服务器地址的人都可以看到该项目的构建历史和日志,这可能泄露代码、构建流程等敏感信息。
4.1 🛠️ 详细设置步骤
以下步骤将引导你启用Jenkins的"项目矩阵授权策略",并精确控制匿名用户的权限。
4.1.1 第一步:进入全局安全配置
-
使用管理员账号登录Jenkins。
-
点击左侧菜单的 "Manage Jenkins" (管理Jenkins)。

-
在管理页面中,找到并点击 "Configure Global Security" (配置全局安全)[见下图是有差异的,我的是Security]。

4.1.2 第二步:启用并配置授权策略
这是最核心的一步,请仔细操作
这是最核心的一步,请仔细操作。
-
在 "Authorization" (授权)区域,选择 "Project-based Matrix Authorization Strategy" (基于项目的矩阵授权策略)。如果已启用其他策略(如"登录用户可做任何事"),需要先切换到此策略。

-
页面下方会刷新出一个 "User/group to add" (待添加的用户/组)输入框和一个权限表格。

-
在输入框中输入
anonymous(代表匿名用户),然后点击右侧的 "Add" (添加)。 -
此时,表格中会出现一行名为
anonymous的用户。在右侧的权限列表中,为他勾选最基础的只读权限 即可。至少需要勾选以下两项:-
Overall(全局权限) 下的Read:允许读取Jenkins基础信息。 -
Job(任务权限) 下的Read:允许读取任务(项目)的基本信息。
-
-
(可选但推荐) 为了能让匿名用户查看控制台日志,还需要勾选:
-
Run(运行权限) 下的Read:允许读取构建信息。 -
View(视图权限) 下的Read:如果你使用了视图来组织任务。
-
-
配置完成后,滚动到页面底部,点击 "Save" (保存)。
下图清晰地展示了授权矩阵中anonymous用户所需的核心权限(Overall/Read和Job/Read):

4.1.3 第三步:配置具体项目的权限(精细控制)
完成上一步后,匿名用户能看到所有任务列表,但默认依然没有内容读取权限。现在我们需要为特定的项目单独授权。
-
回到Jenkins首页,点击进入你希望开放的那个具体项目。
-
在项目左侧菜单中,点击 "Configure" (配置)。
-
在配置页面中,滚动到最底部 ,找到 "Enable project-based security" (启用基于项目的安全性)并勾选它。
-
同样会出现一个权限矩阵表格。重复第二步的步骤:
-
在输入框输入
anonymous,点击 "Add"。 -
为这个项目的
anonymous用户勾选权限。通常只需勾选Job下的Read和Run下的Read即可。
-
-
点击页面底部的 "Save"。
4.1.4 第四步:验证效果
-
打开浏览器的无痕模式(或另一个浏览器)。
-
直接访问你刚配置的Jenkins项目URL。
-
如果配置成功,你应该能在不登录的情况下直接看到该项目的页面,并能点击查看最新的构建控制台输出。
4.2 🔒 更安全的替代方案建议
再次强调,开放匿名权限有安全风险。一个更安全的折中方案是:
-
在Jenkins中创建一个专用账号(例如
readonly_user),并赋予它极低的权限(只读特定项目)。 -
在飞书消息的链接中,直接携带这个账号的用户名和API Token ,格式如下:
http://readonly_user:API_TOKEN@your-jenkins-server/job/your-job/lastBuild/consoleText -
这样,接收者点击链接时,Jenkins会自动使用这个低权限账号认证,无需手动登录,且该账号权限可控。
4.3💎 总结
简单来说,核心路径是:启用"项目矩阵授权策略" -> 在全局为 anonymous 添加基础 Read 权限 -> 在特定项目中再次为 anonymous 添加项目级 Read 权限。
如果你在操作过程中遇到任何问题(例如找不到某个选项,或者保存后权限不生效),可以告诉我你使用的Jenkins版本,我能提供更针对性的指导。