目前很多公司都是通过jenkins做工作流集成的,本身提供了多种用户管理授权的机制,而飞书是目前企业中最流行的员工管理工具,所以我们很容易想到利用飞书的账号体系来替代jenkins本身的用户。而到目前为止,在网上搜索这一需求,还无法找到有效的解决方案(也许之后会有更多更好的方案),本文可以做为一个集成的参考,看是否能帮助大家。
集成飞书单点登录,依赖一个叫 “
飞书集成平台
” 的系统,很多开发者可能只听说过 “飞书开放平台”,他们并不是一个系统,因此需要企业管理员开通这个飞书集成平台的权限(勾选“身份集成”的使用权限)。
平台访问地址(sso):
https://anycross.feishu.cn/console/identity/sso-app-managerhttps://anycross.feishu.cn/console/identity/sso-app-managerhttps://anycross.feishu.cn/console/identity/sso-app-manager
https://anycross.feishu.cn/console/identity/sso-app-manager
另外一个前提,不同付费版本对接口有不同限制,请看下表:
集成方案1-SAML
通过saml集成,官方有专门的模板,按照官方文档,傻瓜式配置一下就能用了,非常简单。
文档地址:
飞书集成平台 - 先进连接方式,提升集成效率标准、高效的系统集成能力,为企业构建强大的集成解决方案,实现企业的全域数据互通https://anycross.feishu.cn/documentation/sso/third-party/jenkinshttps://anycross.feishu.cn/documentation/sso/third-party/jenkins
https://anycross.feishu.cn/documentation/sso/third-party/jenkins
当然这个方式也有一些小问题(看后续平台是否会优化),比如如果有多个jenkins服务器,需要每个建一个应用,关联字段
当前
只支持邮箱等等。如果不CARE这些问题或后续平台完善了模板相关功能的话,还是推荐使用这个方案的。
集成方案2-OIDC
OIDC(OpenID Connect)是一个基于 OAuth 2.0 协议的身份层规范,旨在使应用程序能够进行端到端用户身份验证。官方提供的文档是基于OIDC的通用配置方案,具体和Jenkins的集,需要注意一些细节,如下所述。
1. 创建应用-选择自建应用
2. 填写基本信息
登录回调地址填写jenkins地址(可添加多个),需要注意这里是https !!
https
://192.168.xxx.xxx:8443/securityRealm/finishLogin
如果需要邮箱信息,在scope中勾选email
换取token的方式选择 client_secret_basic
3. 完善授权范围
4. 点击启动应用
下面是jenkins的相关配置
1. 改造jenkins为https
因为OIDC协议要求应用必须是基于HTTPS的服务,对于内网ip访问的机器需要进行一个简单的改造 (如果本身jenkins就是外网域名的https服务,可跳过这一步)
以MAC电脑为例:
首先生成一个签名密钥,记住设定的密码
keytool -genkeypair -alias jenkins -keyalg RSA -keysize 2048 -validity 365 -keystore /opt/homebrew/etc/jenkins/jenkins.jks
编辑JENKINS启动配置
vi /opt/homebrew/Cellar/jenkins/2.xxx/homebrew.mxcl.jenkins.plist
修改如下内容
找到以下部分:
<string>/opt/homebrew/opt/jenkins/bin/jenkins</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=8080</string>
修改为以下内容以启用 HTTPS:
<string>/opt/homebrew/opt/jenkins/bin/jenkins</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=-1</string> <!-- 禁用 HTTP -->
<string>--httpsPort=8443</string>
<string>--httpsKeyStore=/opt/homebrew/etc/jenkins/jenkins.jks</string>
<string>--httpsKeyStorePassword=xxxxx</string>
外网域名访问的jenkins可使用正式的证书
<string>--httpsCertificate=/path/to/jenkins.crt</string> <!-- 指定证书路径 -->
<string>--httpsPrivateKey=/path/to/jenkins.key</string> <!-- 指定私钥路径 -->
重启jenkins服务
brew services restart jenkins
然后jenkins就可以通过 https://192.168.XX.XX:8443 访问了,如果浏览器报不安全链接,直接忽略(高级>继续访问)即可。
2. 安装jenkins插件
在插件管理中搜索 OpenId Connect Authentication,并安装
3. 全局安全配置
安全域选为
Openid 连线登入
。
Client id
,
Client secret
,
well-know endpoint
在飞书sso应用配置界面可以找到,直接复制粘贴过来。
Override scope
填写也和应用配置界面勾选的保持一致,用空格分隔。
User name field name为映射的Jenkins user id,如果飞书上每个用户都有email,也可以设为email,否则直接用name就行,支持中文的id。
安全设置要勾上PKCE。
4. 配置权限
请一定注意,在重登前先设置好新用户体系的权限,否则重登后就进不了系统管理了
添加用户权限时使用的用户名,就是 User name field name 配置的字段值
个人推荐使用Role-based 插件进行用户组授权管理,具体配置的细节和本文主题无关,就不再赘述了。
总的来说,飞书集成平台还是很好用的,目前也没有发现什么坑点,本文也仅是为没什么做过sso集成配置的同学一个参考。
Python微信订餐小程序课程视频
https://blog.csdn.net/m0_56069948/article/details/122285951
Python实战量化交易理财系统
https://blog.csdn.net/m0_56069948/article/details/122285941
之前讲了
jenkins
如何设置定时任务执行脚本,结合实际情况,本篇讲述在
jenkins
构建成功后,如何生成测试报告,以及推送
飞书
(因为我公司用的是
飞书
,所以是发送到
飞书
机器人)。
本次实践搞了
sudo wget -O /etc/yum.repos.d/
jenkins
.repo https://pkg.
jenkins
.io/redhat-
stable/
jenkins
.repo
sudo rpm --import https://pkg.
jenkins
.io/redhat-stable/
jenkins
.io.key
jenkins
是java编写的依赖java环境:请自行下载。
安装gi...
getBuildState(){
buildNr=$1
curl -u #
jenkins
账号密码信息 ${JOB_URL}/${buildNr}/api/json |grep -Po '"result":\s*"\K\w+'
state=$(getBuildSta
1、获取
飞书
Bot webhook 和 secret。2、python脚本,参考@Song_Estelle 的文章,这里重写了部分代码,以签名校验方式发送通知(记得安装相关依赖)。
3、
Jenkins
项目中添加配置在配置中的构建中 加上一行命令即可
4、验证点击“查看报告”可以跳转到
Jenkins
来源:
Jenkins
+
飞书
机器人发送通知_Song_Estelle的博客-CSDN博客_
飞书
机器人向用户个人发消息
https://blog.csdn.net/weixin_43