14

我认为所有 3 个问题都与同一个问题有关,所以我将把它们都放在这里。

Gitlab 本身正在运行,我什至设法将它从 8.2.2 更新到 8.2.3。当我拥有正确的 ssh 密钥时,我可以创建项目、推送我的代码、拉取它、重新克隆它等等。

但:

  1. 我无法将代码下载为 zip 文件,而是使用 JSON:

{"RepoPath":"/var/opt/gitlab/git-data/repositories/me/myrepo.git", "ArchivePrefix":"...

  1. 人们无法克隆我的公共存储库(空存储库错误)。

  2. CI 无法构建我的测试:

警告:您克隆了一个空存储库。将 12345 签出为开发...致命:参考不是树:123456789mycommitash987654321

错误:构建失败:退出状态 1

注意:我翻译了法语错误信息。

我想问题出在我的 Nginx 配置中,但是有太多文档我不确定哪一个是好的:那些有主力的,那些当我必须更改 gitlab.rb 的 gitlab_git_http_server 时,等等。

我的配置如下:

  • Gitlab 8.2.3
  • Ubuntu 信任 (14.04)
  • Nginx 1.8

我的 gitlab 托管在使用 SLL 的子域上,所以我添加了一个 Nginx 代理

/etc/gitlab/gitlab.rb

external_url 'https://gitlab.mydomain.com'
nginx['listen_addresses'] = ['127.0.0.1', "[::1]"]
nginx['listen_port'] = 8080 
nginx['listen_https'] = false 

/etc/nginx/site_enabled/gitlab

server {
  listen *:80 default_server;
  listen [::]:80 ipv6only=on default_server;
  server_name gitlab.mydomain.com;
  return 301 https://$server_name$request_uri;

  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;
}

server{
  # listen 443 ssl;
  listen 0.0.0.0:443 ssl default_server;
  listen [::]:443 ipv6only=on ssl default_server; 
  server_name gitlab.mydomain.com;
  server_tokens off;

  location /{
    proxy_pass http://localhost:8080;
    proxy_redirect off;
    proxy_set_header    Host                $http_host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
  }

  location ~ ^/(assets)/ {
    root /opt/gitlab/embedded/service/gitlab-rails/public;
    gzip_static on; # to serve pre-gzipped version
    expires max;
    add_header Cache-Control public;
  }

  client_max_body_size 250m;

  # ...
  # A lot a of SSL stuff (HSTS, OCSP, dhparam, etc)
  # ...

  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;
  
  error_page 502 /502.html;

更新 :

刚刚将 Gilab 升级到 8.3.0。

现在 Git 一个 502。

申请:https ://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/8.2-to-8.3.md 。

走着瞧。

更新 2:

毕竟没有完成指令,停止一切并重新启动一切(Gitlab 和 Nginx) 终于设法让事情正常工作。

CI/Zip/PublicCloning 仍然存在同样的问题。

更新 3:

只需更新到 8.2.3 apt-get update apt-get install gitlab-ce

502.

重启 nginx gitlab-ctl 重启

gitlab-rake gitlab:app:check

Checking GitLab ...

Git configured with autocrlf=input? ... yes
Database config exists? ... yes
Database is SQLite ... no
All migrations up? ... yes
Database contains orphaned GroupMembers? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Uploads directory setup correctly? ... yes
Init script exists? ... skipped (omnibus-gitlab has no init script)
Init script up-to-date? ... skipped (omnibus-gitlab has no init script)
projects have namespace: ... 

Redis version >= 2.8.0? ... yes
Ruby version >= 2.1.0 ? ... yes (2.1.7)
Your git bin path is "/opt/gitlab/embedded/bin/git"
Git version >= 1.7.10 ? ... yes (2.6.1)
Active users: 2

Checking GitLab ... Finished

如果有人可以引导我找到正确的文档或进行更改,那就太棒了。

4

4 回答 4

2

看起来 ZIP 文件的下载现在由 gitlab-workhorse 处理。

为此,在 nginx-configfile 中有一些额外的东西。您可能想看看https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab有一个部分

upstream gitlab-workhorse {
  server unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0;
}

和一个

proxy_pass http://gitlab-workhorse;

在配置结束时。

我目前正在研究同样的问题,并会在我解决后报告。

于 2016-01-05T14:43:56.073 回答
1

看看https://gist.github.com/sameersbn/becd1c976c3dc4866ef8似乎有一个可以关闭的选项“gzip”。

gzip                    off;

在第 53 行。

于 2015-12-27T13:53:57.390 回答
1

更新文档缺少一项:它在 nginx 配置中重命名gitlab-git-http-servergitlab-workhorse,但部分缺少/etc/default/gitlab. 也将所有出现的 替换为gitlab-git-http-server那里gitlab-workhorse,尤其是gitlab_workhorse_options.

就像是

sed -i -e 's/gitlab-git-http-server/gitlab-workhorse/g' /etc/default/gitlab
于 2016-01-08T17:32:43.003 回答
1

一个开始但不是全部:

我错误地让 Gitlab 的 nginx 监听 8080 端口。当它已经是 Gitlab 的 Unicorn 使用的端口时。

将其更改为 8081 可使 CI 更好地响应。仍然必须解决 git 用户权限(或者更好,使用 docker),但这不是这里重要的直接问题......

更新:完整的解决方案 - ACL

似乎在安装过程中创建的 git 和 gitlab-runner 用户确实有足够的权限。

首先:为每个人创建一个真正的家:/home/gitlab-runner/home/git使用正确的 ssh authorized_keys 和 rbenv + ruby​​ 安装。

然后vim /etc/passwd并在那里更改新家的家目录,在那里他们拥有完全的权利。现在我的建筑是绿色的!

于 2016-01-11T10:28:31.210 回答