mcpField
G
glab-config

glab-config

github.com/vince-winkintel开发49110 次安装1 天前更新
代码仓库

关于 glab-config

用于管理 glab 配置的技能,涵盖全局和按主机设置、配置文件、环境变量覆盖、代理及自定义请求头,适合配置 glab 及其自动化行为。

主要功能

  1. 01读取和更新配置值
  2. 02设置按主机区分的代理
  3. 03配置认证代理请求头
  4. 04查找当前配置文件
  5. 05使用环境变量覆盖并验证设置

适用场景

  1. 01为特定 GitLab 主机设置代理
  2. 02为认证代理配置请求头
  3. 03查找当前生效的配置路径
  4. 04准备非交互式 glab 自动化

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-config

安装后在 Claude Code 中输入/glab-config确认已加载。

附带文件references/commands.md

详细介绍

glab 配置

概述


  Manage key/value strings.
  Current respected settings:
  - Global behavior: branch_prefix, browser, check_update, debug, display_hyperlinks,
    duo_cli_auto_download, duo_cli_auto_run, editor, git_protocol, glab_pager,
    glamour_style, host, no_prompt, notify_skill_updates, orbit_cli_auto_download,
    orbit_cli_auto_run, remote_alias, show_whats_new, and telemetry.
  - Per-host behavior: api_host, api_protocol, artifact_registry_domains, ca_cert,
    client_cert, client_id, client_key, container_registry_domains, custom_headers,
    job_token, proxy, skip_tls_verify, ssh_host, subfolder, token, and use_keyring.
  - Accepted aliases include visual/glab_editor for editor, gitlab_host/gitlab_uri/gl_host
    for host, prompt_disabled for no_prompt, and the full alias list in references/commands.md.
  USAGE
    glab config [command] [--flags]
  COMMANDS
    edit [--flags]               Opens the glab configuration file.
    get <key> [--flags]          Prints the value of a given configuration key.
    path [--flags]               Print the location of the global configuration file.
    set <key> <value> [--flags]  Updates configuration with the value of a given key.
  FLAGS
    -g --global                  Use global config file.
    -h --help                    Show help for this command.

快速开始

glab config --help

按主机配置代理

为每个需要固定代理的 GitLab 主机配置 proxy。当不同的 GitLab 实例(例如 gitlab.com 和自托管实例)需要不同的代理设置时,这很有用。

# Set the proxy for a specific host
glab config set proxy "http://proxy.example.com:8080" --host gitlab.mycompany.com

# Verify
glab config get proxy --host gitlab.mycompany.com

优先级: 对已配置的主机,按主机配置的 proxy 会取代基于环境变量的代理选择。未设置时,glab 会回退到 Go 对 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 的标准处理方式。proxy 的作用范围是主机;请使用 --host,而不要通过 --global 设置顶层值。

用于验证代理身份的动态自定义标头

对于需要身份验证的代理或访问网关,请在全局配置中对应的主机条目下添加 custom_headers 列表。每个条目必须包含 name,并且只能指定一个来源:字面值 value、valueFromEnv 或 valueFromCommand。优先使用 valueFromEnv 或凭据助手命令,以免将密钥直接存储在 YAML 中。

hosts:
  gitlab.example.com:
    custom_headers:
      - name: X-Proxy-Client-ID
        value: public-client-id
      - name: X-Proxy-Client-Secret
        valueFromEnv: PROXY_CLIENT_SECRET
      - name: Proxy-Authorization
        valueFromCommand: proxy-token-helper

使用 glab config edit --global 编辑结构化列表;不要通过标量 config set 命令设置它。命令来源会被拆分为可执行文件和参数,不会隐式调用 shell;它在每个 glab 进程中运行一次,超时时间为 30 秒,并且必须输出一行非空内容且不含 NUL 字节。其去除首尾空白后的结果会在该进程的所有请求中重复使用,包括 OAuth 刷新。如果必须进行 shell 展开,请明确调用经过审核的 shell;否则优先使用 valueFromEnv。

请将自定义标头值视为凭据。不要将字面密钥存放在配置、日志、命令参数或代码仓库中。启用标头前请确认主机,因为 glab 会将已配置的标头附加到发往该主机的请求中。

配置文件搜索顺序

glab 按以下方式选择全局配置:

  1. 如果设置了 GLAB_CONFIG_DIR,则使用 $GLAB_CONFIG_DIR/config.yml。这是显式覆盖;即使该目录中尚不存在配置文件,glab 也会使用此目录。
  2. 否则,使用第一个存在的常规候选文件:
    • ~/.config/glab-cli/config.yml,保留为旧版位置。
    • $XDG_CONFIG_HOME/glab-cli/config.yml(在 macOS 上,默认路径为 ~/Library/Application Support/glab-cli/config.yml)。
    • 用于系统范围默认配置的 $XDG_CONFIG_DIRS/glab-cli/config.yml。常见的 Linux 默认路径为 /etc/xdg/glab-cli/config.yml;在 macOS 上,若依赖系统范围的配置,请显式设置 XDG_CONFIG_DIRS。

配置文件不会合并。如果旧版文件和平台特定的 XDG 文件都存在,glab 会使用旧版文件并发出警告。仓库本地设置存放在 .git/glab-cli/config.yml 中,而按主机设置存放在选定的全局文件中。请优先使用 glab config get、set 和 edit,而不是直接修改文件,并且不要将存储的令牌复制到日志或版本控制中。

查找当前使用的全局配置

使用 glab config path,而不要将全局配置文件位置硬编码。即使文件尚不存在,该命令也会打印路径;--dir 会打印其父目录。

glab config path
glab config path --dir
$EDITOR "$(glab config path)"

当沙盒工具需要获得权限,以便让 glab 刷新或重写凭据时,请授予 glab config path --dir 所示目录的写入权限,而不只是 config.yml 文件的写入权限。glab 会在该目录中写入临时文件,然后替换配置文件。

以环境变量优先的 Agent 模式

对于 Agent 配置,优先使用每个 Agent 单独的环境变量文件,而不是共用一个 Shell 配置文件。示例:

# ~/.config/openclaw/env/gitlab-reviewer.env
GITLAB_TOKEN=glpat-...
GITLAB_HOST=gitlab.com

请将这些环境变量文件保存在版本控制之外,限制其权限(例如 chmod 600),留意备份可能导致的泄露,并使用遵循最小权限原则的机器人/服务账号令牌。

使用以下方式加载纯 KEY=value 环境变量文件,以便将变量导出给 glab:

set -a
source ~/.config/openclaw/env/gitlab-<agent>.env
set +a

直接执行 source ~/.config/openclaw/env/gitlab-<agent>.env 会更新当前 Shell,但可能不会导出这些值。此时 glab 可能无法识别环境变量覆盖,转而静默地复用活动全局配置文件中保存的身份验证信息。

如果 Agent 需要显示为不同身份,请使用不同的 GitLab 机器人/服务账号。同一 GitLab 用户的多个 PAT 仍会以该用户身份执行操作。

非交互式提示和配置验证

对于必须在非交互式自动化中失败而不是显示提示的场景,请使用 GLAB_NO_PROMPT=1。上游文档现在优先使用带 GLAB_ 前缀的名称;旧版 NO_PROMPT 已弃用,不应在新脚本中使用。

GLAB_NO_PROMPT=1 glab repo prune --dry-run

对于由配置驱动的环境变量覆盖,请使用配置架构中的环境变量列表:每个键都按 glab config --help 或配置文档的环境变量部分所示的顺序,以第一个已设置的变量为准;该部分由同一架构生成。如果存在带 GLAB_ 前缀的名称,请在新的自动化中优先使用;旧名称仍作为同一有序列表中的后备选项,以保持兼容性。

架构顺序示例:

  • remote_alias:GLAB_REMOTE_ALIAS、GIT_REMOTE_URL_VAR、GIT_REMOTE_ALIAS、REMOTE_ALIAS、REMOTE_NICKNAME、GIT_REMOTE_NICKNAME
  • editor:GLAB_EDITOR、VISUAL、EDITOR
  • check_update:GLAB_CHECK_UPDATE、CHECK_UPDATE
  • glamour_style:GLAB_GLAMOUR_STYLE、GLAMOUR_STYLE
  • no_prompt:GLAB_NO_PROMPT、NO_PROMPT、PROMPT_DISABLED
  • api_protocol:GLAB_API_PROTOCOL、API_PROTOCOL
  • artifact_registry_domains:GLAB_ARTIFACT_REGISTRY_DOMAINS、ARTIFACT_REGISTRY_DOMAINS
  • container_registry_domains:GLAB_CONTAINER_REGISTRY_DOMAINS、CONTAINER_REGISTRY_DOMAINS
  • duo_cli_auto_download 和 duo_cli_auto_run:GLAB_DUO_CLI_AUTO_DOWNLOAD / DUO_CLI_AUTO_DOWNLOAD、GLAB_DUO_CLI_AUTO_RUN / DUO_CLI_AUTO_RUN
  • orbit_cli_auto_download 和 orbit_cli_auto_run:GLAB_ORBIT_CLI_AUTO_DOWNLOAD / ORBIT_CLI_AUTO_DOWNLOAD、GLAB_ORBIT_CLI_AUTO_RUN / ORBIT_CLI_AUTO_RUN
  • proxy、skip_tls_verify 和 use_keyring:GLAB_PROXY / PROXY、GLAB_SKIP_TLS_VERIFY / SKIP_TLS_VERIFY、GLAB_USE_KEYRING / USE_KEYRING

GITLAB_HOST、GITLAB_API_HOST、GITLAB_CLIENT_ID、GITLAB_SSH_HOST、GITLAB_SUBFOLDER 等 GitLab 专用现有名称,以及令牌变量,均保留其文档中规定的名称。不要自行重命名机密或主机选择变量。

glab config set 会根据规范配置架构验证键。如果设置操作失败,请检查拼写,以及该设置是按主机指定(--host)还是全局指定(--global),不要强行将未知键写入配置文件。

注册的别名不区分大小写,并会以规范键名保存。例如,glab config set visual nano --global 会更新 editor;之后,glab config get visual --global 和 glab config get editor --global 都会解析为同一个值。尽管仍支持别名,新的自动化中还是应优先使用规范名称。

glab_pager 和 debug 是有效的全局设置。GLAB_PAGER 的优先级高于 glab_pager,而 glab_pager 的优先级高于 PAGER;GLAB_DEBUG 可以覆盖已保存的 debug 设置。

常用设置

# View current config
glab config get --global

# Set default editor
glab config set editor vim --global

# Set pager
glab config set glab_pager "less -R" --global

# Enable detailed glab/Git/DNS diagnostics
glab config set debug true --global

# Disable update checks
glab config set check_update false --global

# Select the Git remote glab should prefer
glab config set remote_alias origin --global

# Allow Duo CLI to download and run without wrapper prompts
glab config set duo_cli_auto_download true --global
glab config set duo_cli_auto_run true --global

# Set default host
glab config set host https://gitlab.mycompany.com --global

子命令

完整的 --help 输出请参阅 references/commands.md。

评论

支持 Markdown