带有nginx代理的Gitlab 8无法下载zip,将公共仓库克隆为guest,无法在CI中构建

时间:2015-12-17 18:46:22

标签: nginx gitlab gitlab-ci gitlab-8

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

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

但是:

  1. 我无法将代码下载为zip文件,而是获得了JSON:
  2.   

    { “RepoPath”: “的/ var /选择/ gitlab / GIT-数据/库/ ME / myrepo.git”,   “ArchivePrefix”:“......

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

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

    3.   

      警告:您已克隆空存储库。签出12345作为   开发...致命:引用不是树:   123456789mycommithash987654321

           

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

      注意:我翻译了法语版的错误消息。

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

      我的配置如下:

      • Gitlab 8.2.3
      • Ubuntu Trusty(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 restart

      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 个答案:

答案 0 :(得分: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;

在配置结束时。

我目前正在深入探讨同一问题,并会在我解决问题时向您报告。

答案 1 :(得分:1)

看看https://gist.github.com/sameersbn/becd1c976c3dc4866ef8似乎有一个选项' gzip'可以关掉。

gzip                    off;

第53行。

答案 2 :(得分:1)

更新文档缺少一个项目:它在nginx配置中将gitlab-git-http-server重命名为gitlab-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

答案 3 :(得分:1)

开始但不是全部:

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

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

更新:完整解决方案 - ACL

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

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

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