Help us learn about your current experience with the documentation. Take the survey.

解决 GitLab Workflow for VS Code 的问题

如果您在使用 GitLab Workflow for VS Code 时遇到任何问题,或者有功能请求:

  1. 查看 扩展文档 了解已知问题和解决方案。
  2. gitlab-vscode-extension 问题跟踪器 中报告错误或请求功能。 提供 支持所需的信息

有关解决 VS Code for GitLab Duo Code Suggestions 的问题, 请参阅 解决 VS Code 的代码建议问题

启用调试日志

VS Code 扩展和 GitLab 语言服务器都提供可以帮助您进行故障排除的日志。要启用调试日志记录:

  1. 在 VS Code 中,在顶部栏,转到 代码 > 设置 > 设置

  2. 在右上角,选择 打开设置(JSON) 以编辑您的 settings.json 文件。

  3. 添加此行,如果已存在则编辑它:

    "gitlab.debug": true,
  4. 保存您的更改。

查看日志文件

要查看来自 VS Code 扩展或 GitLab 语言服务器的调试日志:

  1. 使用命令 GitLab: 显示扩展日志 来查看输出面板。
  2. 在输出面板的右上角,从下拉列表中选择 GitLab WorkflowGitLab Language Server

错误:代理出现 407 访问被拒绝 失败

如果您使用经过身份验证的代理,可能会遇到类似 407 访问被拒绝 (authentication_failed) 的错误:

请求失败:无法为 https://gitlab.com 添加 GitLab 账户。请检查您的实例 URL 和网络连接。
从 https://gitlab.com/api/v4/personal_access_tokens/self 获取资源失败

您必须为 GitLab 语言服务器 启用代理身份验证

配置自签名证书

要使用自签名证书连接到您的 GitLab 实例,请使用这些设置进行配置。 这些设置是社区贡献,因为 GitLab 团队使用公共 CA。所有字段都不是必需的。

先决条件:

设置名称 默认值 信息
gitlab.ca null 已弃用。有关如何设置自签名 CA 的更多信息,请参阅 SSL 设置指南
gitlab.cert null 不支持。请参阅 史诗 6244。如果 GitLab Self-Managed 需要自定义证书或密钥对,请设置此选项以指向您的证书文件。请参阅 gitlab.certKey
gitlab.certKey null 不支持。请参阅 史诗 6244。如果 GitLab Self-Managed 需要自定义证书或密钥对,请设置此选项以指向您的证书密钥文件。请参阅 gitlab.cert
gitlab.ignoreCertificateErrors false 不支持。请参阅 史诗 6244。如果您使用没有 SSL 证书的 GitLab Self-Managed,或者有证书问题阻止您使用该扩展,请将此选项设置为 true 以忽略证书错误。

HTTPS 项目克隆有效但 SSH 克隆失败

当您的 SSH URL 主机或路径与您的 HTTPS 路径不同时,VS Code 中会出现此问题。GitLab Workflow 扩展使用:

  • 主机来匹配您设置的账户。
  • 路径来获取命名空间和项目名称。

例如,VS Code 扩展的 URL 是:

  • SSH: git@gitlab.com:gitlab-org/gitlab-vscode-extension.git
  • HTTPS: https://gitlab.com/gitlab-org/gitlab-vscode-extension.git

两者都有 gitlab.comgitlab-org/gitlab-vscode-extension 路径。

要解决此问题,检查您的 SSH URL 是否在不同的主机上,或者路径中是否有额外的段。 如果任一情况为真,您可以手动将 Git 存储库分配给 GitLab 项目:

  1. 在 VS Code 中,在左侧边栏,选择 GitLab Workflow ( tanuki )。
  2. 选择标记为 (无 GitLab 项目) 的项目,然后选择 手动分配 GitLab 项目 手动分配 GitLab 项目
  3. 从列表中选择正确的项目。

有关简化此过程的信息,请参阅 gitlab-vscode-extension 项目中的 问题 577

已知问题:GitLab Duo Chat 在远程环境中无法初始化

在远程开发环境(如基于浏览器的 VS Code 或远程 SSH 连接)中使用 GitLab Duo Chat 时,您可能会遇到初始化失败,例如:

  • 空白或未加载的聊天面板。
  • 日志中的错误:The webview didn't initialize in 10000ms
  • 扩展尝试连接到无法访问的本地 URL。

要解决这些问题:

  1. 在 VS Code 中,在顶部栏,转到 代码 > 设置 > 设置

  2. 在右上角,选择 打开设置(JSON) 以编辑您的 settings.json 文件。

    • 或者,按 F1,输入 首选项:打开设置(JSON),然后选择它。
  3. 添加或修改此设置:

    "gitlab.featureFlags.languageServerWebviews": false
  4. 保存您的更改并重新加载 VS Code。

有关永久解决方案的更新,请参阅 问题 #1944问题 #1943

错误:无法访问操作系统密钥链

在 MacOS 和 Ubuntu 上都可能发生如下错误消息:

GitLab Workflow 无法访问操作系统密钥链。
如果您使用 Ubuntu,请参阅此现有问题。
错误:无法获取密码
在 I.$getPassword (vscode-file://vscode-app/snap/code/97/usr/share/code/resources/app/out/vs/workbench/workbench.desktop.main.js:1712:49592)

有关这些错误的更多信息,请参阅:

MacOS 解决方法

MacOS 有一个解决方法:

  1. 在您的机器上,打开 钥匙串访问 并搜索 vscodegitlab.gitlab-workflow
  2. 从您的密钥串中删除 vscodegitlab.gitlab-workflow
  3. 使用 GitLab: 从 VS Code 中删除账户 命令从 VS Code 中删除损坏的账户。
  4. 要再次添加账户,运行 Gitlab: 添加账户到 VS CodeGitLab: 认证到 GitLab.com

Ubuntu 解决方法

当您在 Ubuntu 20.04 和 22.04 中使用 snap 安装 VS Code 时,VS Code 无法从 操作系统密钥链读取密码。扩展版本 3.44.0 及更高版本使用操作系统密钥链进行安全令牌存储。 对于使用早于 1.68.0 版本的 VS Code 的 Ubuntu 用户,有一个解决方法:

  • 您可以将 GitLab Workflow 扩展降级到版本 3.43.1。
  • 您可以从 .deb 包安装 VS Code,而不是 snap
    1. 卸载 snap 版本的 VS Code。
    2. .deb 安装 VS Code。
    3. 转到 Ubuntu 的 密码和密钥,找到 vscodegitlab.workflow/gitlab-tokens 条目,并删除它。
    4. 在 VS Code 中,运行 Gitlab: 删除您的账户 以删除缺少凭据的账户。
    5. 要再次添加账户,运行 GitLab: 认证

如果您使用 VS Code 版本 1.68.0 或更高版本,重新安装可能不可行。但是,您仍然可以运行 最后三个步骤来重新认证。

使用环境变量设置令牌

如果您经常删除 VS Code 存储,例如在 Gitpod 容器中,请在启动 VS Code 之前设置环境变量。 如果您在 VS Code 环境变量 中设置令牌,您就不必在每次删除 VS Code 存储时设置个人访问令牌。设置这些变量:

  • GITLAB_WORKFLOW_INSTANCE_URL:您的 GitLab 实例 URL,如 https://gitlab.com
  • GITLAB_WORKFLOW_TOKEN:您的个人访问令牌,您在 与 GitLab 认证 时创建的。

如果在扩展中为同一 GitLab 实例配置了令牌,则通过环境变量配置的令牌将被覆盖。

使用 GDK 时的连接和授权错误

当使用 VS Code 和 GDK 时,您可能会收到一个错误,指出您的系统 无法建立到运行在 localhost 上的 GitLab 实例的安全 TLS 连接。

例如,如果您使用 127.0.0.1:3000 作为您的 GitLab 服务器:

请求 https://127.0.0.1:3000/api/v4/version 失败,原因:客户端网络套接字
在建立安全 TLS 连接之前断开连接

如果您在 http 上运行 GDK 并且您的 GitLab 实例托管在 https 上,则会出现此问题。

要解决此问题,当您运行 GitLab: 认证 命令时,手动输入实例的 http URL。

支持所需的信息

在联系支持之前,请确保安装了最新的 GitLab Workflow 扩展。所有版本 都在 VS Code Marketplace版本历史 选项卡下。

从受影响的用户收集此信息,并在您的错误报告中提供:

  1. 显示给用户的错误消息。
  2. 工作流和语言服务器日志:
    1. 启用调试日志
    2. 检索扩展和语言服务器的日志文件
  3. 诊断输出。
    1. 使用 Command+Shift+PControl+Shift+P 打开命令面板
    2. 运行命令 GitLab: 诊断,并记下扩展版本。
  4. 系统详细信息:
    • 在 VS Code 中,转到 代码 > 关于 Visual Studio Code 并找到 操作系统
    • 机器规格(CPU、RAM):从您的机器提供这些信息。它们在 IDE 中不可访问。
  5. 描述影响范围。有多少用户受到影响?
  6. 描述如何重现错误。如果可能,包括屏幕录像。
  7. 描述其他 GitLab Duo 功能如何受到影响:
    • GitLab Quick Chat 是否正常工作?
    • 代码建议是否有效?
    • Web IDE Duo Chat 是否返回响应?
  8. 按照 GitLab Workflow 扩展隔离指南 执行扩展隔离测试。尝试禁用(或卸载)所有其他扩展,以确定另一个扩展是否导致 此问题。这有助于确定问题是出在我们的扩展上,还是来自外部来源。