我正在尝试使用 GitLab 设置 LDAP 身份验证(在 VM 上的 Ubuntu 14.04 amd64 上安装了 7.12.2 版,Omnibus 设置)。我已将 gitlab.rb 文件编辑为如下所示:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '********'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'CN=********,OU=********,OU=********,DC=********,DC=***'
password: '********'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'DC=********,DC=***'
user_filter: ''
EOS
Run Code Online (Sandbox Code Playgroud)
这会导致可怕的“无法从 Ldapmain 授权您,因为“凭据无效”。错误。我试过,用户名(在 bind_dn 变量中):“johnsmith@example.com”(基于用户名的电子邮件)、“John …
我这里有很多活动部件,所以,我不确定出了什么问题。我这样设置我的变量:
但是在构建阶段,我遇到了这个失败(这是一个 Django 应用程序):
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
! Error while running '$ python manage.py collectstatic --noinput'.
See traceback above for details.
You may need to update application code to resolve this error.
Or, you can disable collectstatic for this application:
$ heroku config:set DISABLE_COLLECTSTATIC=1
https://devcenter.heroku.com/articles/django-assets
Run Code Online (Sandbox Code Playgroud)
如果 UI 中的其他地方有我遗漏的线索,这是输出:
我创建了一个公共骨架应用程序来展示和调试这个问题:https : //gitlab.com/pupeno/example/-/jobs/113402553
我错过了什么将环境变量暴露给构建过程?
我复制了 Auto DevOps他们的.gitlab-ci.yml模板并添加了:
variables:
# ...
SECRET_KEY: $SECRET_KEY
Run Code Online (Sandbox Code Playgroud)
以及硬编码以防万一$SECRET_KEY …
查看htop我服务器上的输出,我看到 Gitlab 产生了 25 个 sidekiq 进程。我私下使用 Gitlab,所以永远不会有任何负载,所以我怀疑所有这些过程都是必需的,但我看不到如何配置它们的数量。
在资源受限的服务器上,我真的有必要为此烦恼吗?
我刚刚通过综合在运行 Ubuntu 14.0.4 LTS 的 VPS 上安装了 GitLab CE,对以下内容进行了更改/etc/gitlab/gitlab.rb并重新运行sudo gitlab-ctl reconfigure:
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
external_url 'https://gitlab.myserver.com/'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
web_server['external_users'] = ['www-data']
nginx['enable'] = false
Run Code Online (Sandbox Code Playgroud)
我的 Apache VirtualHost 配置正在运行,我可以访问 Web 界面https://gitlab.myserver.com/,在那里我已经添加了我的 SSH 密钥,但是当克隆/推送/etc 到或从ssh://git@gitlab.myserver.com:2222/mygroup/myproject.git我收到
ssh: connect to host gitlab.haggi.me port 2222: Connection refused
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
$ ssh -vvv -T -p 2222 …
GitLab 的 9.0 版本带来了子组。然而,在子组成为可能之前,我们已经通过使用前缀来解决这个限制,例如
然而,正确的成员/角色管理是一场噩梦。因此,现在新的子组可用,如果可以将现有组作为子组移动到另一个组中,那就太好了。但是,我还没有找到这样做的选项。我们可以手动创建这些子组,然后手动传输所有项目,但这似乎比应该的要复杂。
是否可以将现有组作为子组移动到另一个组中?
我有一个正在运行的带有 LDAP 身份验证的 Gitlab CE 安装。现在我想根据组成员身份限制访问。
该选项user_filter似乎是可以选择的选项。但是,我似乎无法根据组成员身份允许任何人登录。
我尝试的是这个(gitlabaccess应该允许登录的组):
user_filter: '(&(objectclass=group)(samaccountname=gitlabaccess))'
Run Code Online (Sandbox Code Playgroud)
或者:
user_filter: '(memberOf=cn=gitlabaccess,DC=my,DC=domain,DC=com)'
Run Code Online (Sandbox Code Playgroud)
该文件指出以下,但它也没有工作,我不知道这些数字应该是什么:
user_filter: '(memberOf:1.2.840.113556.1.4.1941:=cn=gitlabaccess,DC=my,DC=domain,DC=com)'
Run Code Online (Sandbox Code Playgroud)
特定用户的工作方式如下:
user_filter: '(&(objectclass=user)(samaccountname=jon.doe))'
Run Code Online (Sandbox Code Playgroud)
Gitlab CE 版本 9.5.5 从综合包安装。
如何根据 LDAP 组成员身份限制对 Gitlab 的访问?
我正在尝试ta
\n我试图在 docker 配置中为我的 gitlab 实例运行一个 docker,但我只能 \xe2\x80\x99t 让它工作。
\n这是我想做的:
\n所有这些都在 Ubuntu 18.04 下运行。这是命令
\n创建网络
\nsudo docker 网络创建 gitlab-runner-net
\n在docker中启动docker:
\nsudo docker run --privileged --name gitlab-dind -d \\\n --network gitlab-runner-net --network-alias gitlab-runner-net \\\n -e DOCKER_TLS_CERTDIR=/certs \\\n -v docker-certs-ca:/certs/ca \\\n -v docker-certs-client:/certs/client \\\n -v /var/lib/docker \\\n docker:19.03.13-dind --storage-driver=overlay2 \nRun Code Online (Sandbox Code Playgroud)\n … 在 Debian 8.0 上,我试图让 Apache 2.4.10 作为虚拟主机管理 GitLab CE 7.10 Omnibus 安装。
Apache 2 已经设置并运行了几个看起来像
vhost.example.com.
我想配置 Apache 和 GitLab,以便git.example.com由 Apache 处理以显示 GitLab Web 界面。
为此,我遵循了/sf/answers/1806681341/ 中描述的程序 。
我可以访问 GitLab 的主页git.example.com,但无法访问任何其他资源,例如 CSS 或图标。Apache 日志显示四个错误,它们看起来都像:
[Sun May 10 20:24:57.146329 2015] [authz_core:error] [pid 4141] [client 1.2.3.4:80] AH01630: client denied by server configuration: /opt/gitlab/embedded/service/gitlab-rails/public/assets/application-TOKEN.css, referer: http://git.example.com/
Run Code Online (Sandbox Code Playgroud)
在网上搜索并尝试了几项更改后,我被困在这里。有谁知道如何解决这个问题?
此外,这里是我使用的“有趣”配置文件:
/etc/apache2/sites-enabled/git.conf:
<VirtualHost git.example.com:80>
ServerAdmin admin@example.com
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
ServerName git.example.com
ServerAlias git.example.com
ProxyPreserveHost On
<Location …Run Code Online (Sandbox Code Playgroud) 我使用 GitLab 社区版 8.2 并想添加提交后挂钩。
我创建了具有权限的文件 path_to_project.git/custom_hooks/post-commit
$ ls -l1 custom_hooks/post-commit
-rwxr-xr-x 1 git git 45 Dec 14 21:31 custom_hooks/post-commit
Run Code Online (Sandbox Code Playgroud)
和内容
#!/bin/bash
echo "test custom" > /tmp/hook
Run Code Online (Sandbox Code Playgroud)
如此处所述:http : //doc.gitlab.com/ce/hooks/custom_hooks.html
但它不起作用(通过 Web 界面提交检查)。我也尝试过“正常”的 git 钩子放置(project.git/hooks/post-commit),但它也不起作用。
我已经设置了一个GitLab VM,并在其上创建了一个项目。现在我正在尝试使用我的 git 客户端从另一台机器连接到它(Git for Windows v2.7.1 ...也尝试升级到最新版本 2.15.1,但没有变化)。
在 Windows 机器上,我尝试:
git push -u origin --all
The authenticity of host 'localgit.local (10.1.2.3)' can't be established.
ECDSA key fingerprint is SHA256:twmcV7LjBtI9vUsDeFEHeH0lUcBAihWtGye0K9vHCrk.
Are you sure you want to continue connecting (yes/no)? no
Run Code Online (Sandbox Code Playgroud)
我选择“否”是因为当我在虚拟机上仔细检查时,我发现了不同的指纹:
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 7e:e4:4e:7f:47:b0:41:75:2c:45:bd:be:f5:44:77:d7 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
Run Code Online (Sandbox Code Playgroud)
好的,它是十六进制格式,所以我将其转换为 base64,对吗?
hex: 7ee44e7f47b041752c45bdbef54477d7
base64: fuROf0ewQXUsRb2+9UR31w==
Run Code Online (Sandbox Code Playgroud)
好吧,这不匹配......如果我走另一条路并将该 base64 指纹转换为十六进制并看看它是什么样子怎么办?结果我不能,它是 43 个字符,并且 base64 字符串的长度必须是 4 的倍数。
关于我在这里缺少什么的任何想法?