如何在GitLab中配置「在JupyterHub中打开」功能按钮?
GitLab添加「在JupyterHub中打开」按钮实现方案
1. 前端按钮嵌入GitLab
- 嵌入方式分两种:
- 自建GitLab可直接修改项目页面的全局模板,在文件操作按钮区域新增自定义按钮
- 不便修改GitLab源码的场景,可通过GitLab自带的「自定义实例级JavaScript注入」功能,写脚本匹配当前页面是否为.ipynb文件详情页,匹配成功则自动插入按钮
- 按钮跳转链接需按照nbgitpuller的标准规则构造,格式如下:
链接里的动态参数可通过GitLab页面的DOM元素或者页面全局变量直接获取。https://<你的JupyterHub域名>/hub/user-redirect/git-pull?repo=<GitLab项目HTTPS克隆地址>&branch=<当前分支名>&subPath=<notebook文件在项目中的相对路径>&urlpath=lab/tree/<项目名>/<notebook文件名>
2. JupyterHub端配套配置
- 首先给所有用户的Jupyter运行环境安装
nbgitpuller插件,执行命令pip install nbgitpuller后重启JupyterLab服务即可生效,该插件自带项目克隆、增量更新、冲突自动合并的逻辑,不需要额外开发同步代码 - 打通JupyterHub与GitLab的身份体系,配置JupyterHub使用GitLab OAuth登录,用户通过GitLab账号授权登录JupyterHub后,拉取私有项目的notebook无需额外输入账号密码
- 可选安全配置:添加参数
c.GitPuller.allowed_git_hosts = ['<你的GitLab域名>']到JupyterHub配置文件,限制仅允许拉取内部GitLab仓库的内容,规避恶意链接风险
3. 可选优化项
- 可以给按钮添加自定义图标,和同类打开按钮的样式对齐,降低用户学习成本
- 可自定义nbgitpuller的异常提示页,拉取失败时明确告知用户是权限不足、项目不存在还是网络问题,降低排查成本
内容的提问来源于stack exchange,提问作者neves
相关产品推荐
相关产品推荐

