J2L3x 是一款流行的团队协作工具,而 Verdaccio 是一个管理和分享前端软件开发包。将 J2L3x 与 Verdaccio 集成可以帮助团队更好地管理和分享代码。
以下是将 J2L3x 与 Verdaccio 集成的步骤:
开发者使用 NPM、PNPM 等包管理员工具访问 Verdaccio 仓库时(下载依赖包或发布包),可以使用 J2L3x 提供的 OpenID Connect(OIDC) 服务进行用户认证,这样团队成员可以直接使用自己的 J2L3x 账户,不需要在 Verdaccio 中单独创建账户;如果有团队成员离职,只需要关闭他的 J2L3x 账户,同时也就关了对 Verdaccio 仓库的访问权限,非常便捷。
1、停止之前启动的 Verdaccio 服务,在命令行中执行以下命令:
docker-compose -p verdaccio down
|
2、J2L3x 管理员在 J2L3x 中为 Verdaccio 创建应用
a. 在 J2L3x 中导航到 “集成 → OAuth 2.0 应用 → 添加 OAuth 2.0 应用”
b. 在表单中填入以下内容:
注:
· “首页” 填写为团队成员访问 Verdaccio 仓库网站的首页地址
· “回调地址” 填写为 首页地址/oidc/callback
保存后会得到 Verdaccio 应用的 “客户端 ID” 和 “客户端密钥”,注意保密。
3、编辑 conf 文件夹中的配置文件 config.yaml ,修改 auth 部分为以下内容:
# https://verdaccio.org/docs/configuration#authentication auth: openid-connect: # Verdaccio public URL. If served on a subpath, make sure to include a # trailing slash. publicUrl: http://localhost:4873/ # OpenID Connect Issuer URL issuer: https://xxxx/oidc # OpenID Connect Client ID clientId: 'xxxxxxxx' # OpenID Connect Client Secret clientSecret: 'xxxxxxxx' # OpenID Connect Scopes scope: openid profile email offline_access # Optional id_token claim that will be used for username usernameClaim: preferred_username # Optional switch to alternative login method, using access token as password. # The username must be the same as the one used to acquire the access token, # the password must be an OIDC access token. The e-mail address will be ignored. # If not set, the regular authentication flow will be used. accessTokenAuth: false # Session files (persistent) storage path and token files (temporary for short-lived files) storage path: will be used if redisUri not set fsSessionStorePath: /tmp fsTokenStorePath: /tmp htpasswd: file: /verdaccio/conf/htpasswd # Maximum amount of users allowed to register, defaults to "+inf". # You can set this to -1 to disable registration. max_users: -1 # Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt". algorithm: bcrypt # by default is crypt, but is recommended use bcrypt for new installations # Rounds number for "bcrypt", will be ignored for other algorithms. rounds: 10 |
· publicUrl 填写为团队成员访问 Verdaccio 仓库的地址,需要包含尾部斜杠 /
· issuer 填写为 J2L3x 服务器地址/oidc
· clientId 和 clientSecret 填写创建 Verdaccio 应用时得到的 “客户端 ID” 和 “客户端密钥”
4、启动 verdaccio 服务
a. 如果是在桌面操作系统中操作,需要打开命令行终端
b. 在命令行中定位到 verdaccio 文件夹位置
c. 在命令行中执行以下命令
docker-compose -p verdaccio up -d
|
5、登录 Verdaccio 仓库
a. 如果是在桌面操作系统中操作,需要打开命令行终端
b. 在命令行中执行以下命令
# 修改 “http://localhost:4873/” 为团队成员访问 Verdaccio 仓库的地址 npm login --registry http://localhost:4873/ |
c. 执行以上命令后,会自动或提示打开浏览器访问 J2L3x 的用户认证页面,认证成功后页面会提示 “You may close this page now.”,表示已成功登录 Verdaccio 仓库;如果 J2L3x 在浏览器中已处于登录状态,则打开的浏览器窗口会自动关闭,无需再次认证
注:每次重启 verdaccio 服务后,需要重新登录 Verdaccio 仓库才能正常访问。
使用 J2L3x 的 “传入 Webhook”,可以实现当有团队成员发布包到 Verdaccio 仓库后,会自动发消息通知到 J2L3x 的频道成员,不需要人工通知,提高协作效率。
1、停止之前启动的 服务,在命令行中执行以下命令:
docker-compose -p verdaccio down
|
2、J2L3x 管理员在 J2L3x 中为 Verdaccio 创建 “传入 Webhook****”****
a. 在 J2L3x 中导航到 “集成 → 传入 Webhooks → 添加传入 Webhook”
b. 在表单中填入以下内容:
3、编辑 conf 文件夹中的配置文件 config.yaml,在文件末尾输入以下内容:
# https://verdaccio.org/docs/notifications notify: method: POST headers: [{ 'Content-Type': 'application/json' }] endpoint: https://xxxx content: '{"text":"@{{ publisher.name }} 发布了 **{{ publishedPackage }}** 到 Verdaccio 仓库"}' |
endpoint 填写为先前得到的 “Webhook 网址”
content 是通知到 J2L3x 频道的消息格式,详细信息请参考 Verdaccio 官方文档 Notifications
4、启动 verdaccio 服务
a. 如果是在桌面操作系统中操作,需要打开命令行终端
b. 在命令行中定位到 verdaccio 文件夹位置
c. 在命令行中执行以下命令
docker-compose -p verdaccio up -d
|
5、登录 Verdaccio 仓库,在命令行中执行以下命令:
# 修改 “http://localhost:4873/” 为团队成员访问 Verdaccio 仓库的地址 npm login --registry http://localhost:4873/ |
6、发布一个包到 Verdaccio 仓库,在命令行中定位到需要发布的项目位置,然后执行以下命令:
# 修改 “http://localhost:4873/” 为团队成员访问 Verdaccio 仓库的地址 npm login --registry http://localhost:4873/ |
命令执行成功后,查看接收通知的 J2L3x 频道,如果收到了消息,则表示操作成功。
将 J2L3x 与 Verdaccio 集成的好处如下:
1、即时通知:J2L3x 与 Verdaccio 集成可以通过 J2L3x 中的机器人自动向您的团队成员发布 Verdaccio 事件 和通知。这使得团队成员可以更快地做出反应,并更快地解决任何问题。
2、更好的协作:通过 J2L3x 和 Verdaccio 集成,团队成员可以更好地讨论和共享关于 NPM 包的问题,更好的了解 NPM 包的变化和更新,共同解决问题。例如:其中一个成员发布包到 Verdaccio 仓库,会自动发消息通知到 J2L3x 的频道成员。其他成员可以直接在 J2L3x 里了解到包名称和版本号等。
有关更多的信息,请参见 J2L3x 官方文档。