设置自定义环境变量

如有必要,您可以通过 /etc/gitlab/gitlab.rb 设置由 Puma、Sidekiq、Rails 和 Rake 使用的自定义环境变量。这在您需要使用代理访问 Internet 并需要将外部托管的仓库直接克隆到极狐GitLab 的情况下非常有用。在 /etc/gitlab/gitlab.rb 中提供一个带有哈希值的 gitlab_rails['env']。例如:

gitlab_rails['env'] = {
    "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
    "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
#    "no_proxy" => ".yourdomain.com"  # Wildcard syntax if you need your internal domain to bypass proxy
}

您还可以覆盖来自其他极狐GitLab 组件的环境变量,如果您在代理后面,则可能需要这些变量:

# Needed for proxying Git clones
gitaly['env'] = {
    "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
    "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
}

gitlab_workhorse['env'] = {
    "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
    "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
}

gitlab_pages['env'] = {
    "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
    "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
}

# If you use the docker registry
registry['env'] = {
    "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
    "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
}

当代理 URL 中包含用户名和密码时,将尝试使用 HTTP 基本身份验证。

代理设置使用 . 语法进行全局化。

代理 URL 值通常应仅为 http://,除非您的代理具有自己的 SSL 证书并启用了 SSL。这意味着,即使对于 https_proxy 值,您通常也应该将值指定为 http://USERNAME:PASSWORD@example.com:8080

note 当设置了 HTTP_PROXY 或 HTTPS_PROXY 环境变量时,DNS 重新绑定保护被禁用,并且无法解析域名 DNS。

应用更改

对环境变量所做的任何更改都需要重新配置才能生效。

执行重新配置:

sudo gitlab-ctl reconfigure

故障排查

未设置环境变量

请检查您没有为同一个 ['evn'] 设置多个条目。最后一个条目将覆盖之前的条目。在下面的例子中,NTP_HOST 会被认为没有进行设置:

gitlab_rails['env'] = { 'NTP_HOST' => "<DOMAIN_OF_NTP_SERVICE>" }

gitlab_rails['env'] = {
    "http_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080",
    "https_proxy" => "http://<USERNAME>:<PASSWORD>@example.com:8080"
}