带有nginx代理的Gitlab 8可以';t下载zip,克隆公共回购作为来宾,可以';也不能在CI中构建

带有nginx代理的Gitlab 8可以';t下载zip,克隆公共回购作为来宾,可以';也不能在CI中构建,nginx,gitlab,gitlab-ci,gitlab-8,Nginx,Gitlab,Gitlab Ci,Gitlab 8,我认为这三个问题都与同一个问题有关,所以我将把它们全部放在这里 Gitlab本身正在工作,我甚至设法将它从8.2.2更新到8.2.3。 我可以创建项目、推送代码、拉取代码、在拥有正确的ssh密钥时重新克隆代码,等等 但是: 我无法将代码作为zip文件下载,而是使用JSON: {“RepoPath”:“/var/opt/gitlab/git data/repositories/me/myrepo.git”, “ArchivePrefix”: 人们无法克隆我的公共回购(空存储库错误) CI无法生成

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

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

但是:

  • 我无法将代码作为zip文件下载,而是使用JSON:
  • {“RepoPath”:“/var/opt/gitlab/git data/repositories/me/myrepo.git”, “ArchivePrefix”:

  • 人们无法克隆我的公共回购(空存储库错误)

  • CI无法生成我的测试:

  • 警告:您克隆了一个空存储库。正在将12345作为 开发…致命:引用不是树: 123456789 MYCOMMITHASH987654321

    错误:生成失败,退出状态为1

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

    我想问题出在我的Nginx配置中,但是有太多的文档,我不确定哪一个是好的:有工作马的文档,当我不得不更改gitlab.rb的gitlab\u git\u http\u服务器时的文档,等等

    我的配置如下:

    • Gitlab 8.2.3
    • UbuntuTrusty(14.04)
    • nginx1.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 
    
    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;
    
    /etc/nginx/site\u enabled/gitlab

    external_url 'https://gitlab.mydomain.com'
    nginx['listen_addresses'] = ['127.0.0.1', "[::1]"]
    nginx['listen_port'] = 8080 
    nginx['listen_https'] = false 
    
    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

    现在是502吉特

    应用程序:

    我们拭目以待

    更新2:

    毕竟没有完成指令,停止所有操作并重新启动所有操作两次(Gitlab和Nginx)最终成功地让它工作起来

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

    更新3:

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

    502

    重新启动nginx gitlab ctl重启

    gitlab rake gitlab:应用程序:检查

    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
    

    如果有人能引导我找到正确的文档或进行更改,那将非常棒。

    看看,似乎有一个选项“gzip”可以关闭

    gzip                    off;
    

    在第53行。

    看起来ZIP文件的下载现在由gitlab的工作人员处理

    为此,nginx配置文件中有一些额外的内容。您可能想看看其中有一个部分

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

    proxy_pass http://gitlab-workhorse;
    
    在配置的末尾


    我目前正在研究同一个问题,当我解决它时,我会向您报告。

    更新文档缺少一项:它将nginx配置中的
    gitlab git http服务器重命名为
    gitlab workhorse
    ,但部分遗漏了
    /etc/default/gitlab
    。替换所有出现的
    gitlab git http-服务器
    也有
    gitlab workhorse
    ,特别是
    gitlab\u workhorse\u选项中的套接字

    差不多

    sed -i -e 's/gitlab-git-http-server/gitlab-workhorse/g' /etc/default/gitlab
    

    乞讨,但不是全部:

    我错误地让Gitlab的nginx监听8080端口,而它已经是Gitlab的Unicorn使用的端口了

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

    更新:完整解决方案-ACL 在安装过程中创建的git和gitlab runner用户似乎拥有足够的权限

    首先:为每个:/home/gitlab runner、/home/git和正确的ssh授权密钥以及rbenv+ruby安装创建一个真正的主页

    然后
    vim/etc/passwd
    并在那里更改新主页的主目录,在那里他们拥有完全的权限。
    现在我的版本是绿色的!

    这并没有改变任何事情。但感谢您的尝试。到目前为止没有任何效果,只是受够了。全部删除,ann返回基本配置…您是在尝试使用gitlab omnibus附带的捆绑nginx还是您自己安装和配置的nginx?两者都有。与gitlab捆绑的nginx和我自己的nginx以passenger作为反向代理。现在我能够克隆repo。仍然存在zip问题,但一旦git用户出现其他问题无法捆绑,我将提供更广泛的答案。嗨@gdurelle,你现在成功地使http代理按预期工作了吗?我有完全相同的问题(http克隆、http下载、CI克隆、CI获取)。这是我的个人配置: