Skip to content

ZIP archive download does not work even it is routed through gitlab-workhorse

Hi all

I'm having troubles downloading zip archives in GitLab.

gitlab-workhorse is configured, but it doesnt deliver the archives, i just get this JSON response:

{
   "RepoPath":"/data/repositories/example/example.git",
   "ArchivePrefix":"test-master-45f413e6a04e18835236dfd163c0adfa81be5f21",
   "ArchivePath":"/data/shared/cache/archive/example.git/example-master-45f413e6a04e18835236dfd163c0adfa81be5f21.zip",
   "CommitId":"45f413e6a04e18835236dfd163c0adfa81be5f21"
}

we're using gitlab behind 2 reverse proxies: a master reverse proxy and a second in the docker container, which redirects to gitlab workhorse.

I think there should all be okay. Even gitlab workhorse is logging the requests but just responses the JSON data. Can anyone help me how I'm able to debug this?

Thank you

our build process: https://github.com/whatwedo/docker-base-images/blob/master/modules/gitlab.m4

env info:

System information
System:		Ubuntu 14.04
Current User:	git
Using RVM:	no
Ruby Version:	2.1.8p440
Gem Version:	2.2.5
Bundler Version:1.11.2
Rake Version:	10.5.0
Sidekiq Version:4.0.1

GitLab information
Version:	8.5.4
Revision:	fatal: Not a git repository (or any of the parent directories): .git (INFO: we remove it while building the container)
Directory:	/home/git/gitlab
DB Adapter:	mysql2
URL:		https://example.dev
HTTP Clone URL:	https://example.dev/some-group/some-project.git
SSH Clone URL:	git@example.dev:some-group/some-project.git
Using LDAP:	no
Using Omniauth:	no

GitLab Shell
Version:	unknown (INFO: git master branch used)
Repositories:	/data/repositories/
Hooks:		/data/gitlab-shell/hooks/
Git:		/usr/bin/git

the nginx config:

user www-data;
worker_processes 1;
daemon off;

events {
    worker_connections 1024;
}

http {

    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    #Enable gzip
    gzip on;
    gzip_http_version 1.1;
    gzip_comp_level 2;

    #Set log path
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    client_max_body_size 20M;

    server {
        listen 80;
        root /var/www;

        # Check if HTTPS
        if ($http_x_use_https) {
            set $fastcgi_param_https on;
            set $fastcgi_param_https_scheme https;
        }

        #Index files
        location / {
            try_files $uri $uri/ /index.php;
            index   index.html index.htm index.php;
        }

        # this prevents hidden files (beginning with a period) from being served
        location ~ /\.          { access_log off; log_not_found off; deny all; }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param HTTPS $fastcgi_param_https;
            fastcgi_param HTTP_SCHEME $fastcgi_param_https_scheme;
        }
    }
}