Gitlab 8 avec proxy nginx ne peut pas télécharger un fichier zip, cloner un repository public en tant qu’invité, ne peut pas construire dans CI non plus

Je pense que tous les 3 problèmes sont liés au même problème, alors je vais les mettre tous ici.

Gitlab lui-même fonctionne, j’ai même réussi à le mettre à jour de 8.2.2 à 8.2.3. Je peux créer des projets, pousser mon code, le tirer, le reclasser lorsque j’ai la clé SSH appropriée, etc.

MAIS:

  1. Je ne peux pas télécharger le code sous forme de fichier zip, j’ai un JSON à la place:

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

  1. Les gens ne peuvent pas cloner mon repo public (erreur de référentiel vide).

  2. CI ne peut pas construire mes tests:

Avertissement: Vous avez cloné un référentiel vide. Vérification de 12345 comme développé … fatal: la référence n’est pas un arbre: 123456789mycommithash987654321

ERREUR: La construction a échoué avec: exit status 1

NB: J’ai traduit des messages d’erreur de français.

Je suppose que le problème est dans ma configuration Nginx, mais il y a tellement de documentation que je ne suis pas sûr de savoir lequel est le bon: ceux avec le bourreau de travail, ceux où je dois changer gitlab_git_http_server, etc.

Ma configuration est la suivante:

  • Gitlab 8.2.3
  • Ubuntu Trusty (14.04)
  • Nginx 1.8

Mon gitlab est hébergé sur un sous-domaine à l’aide de SLL, j’ai donc ajouté un proxy 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; 

METTRE À JOUR :

Je viens de mettre à jour Gilab à 8.3.0.

Git a 502 maintenant.

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

Nous verrons.

MISE À JOUR 2:

Ne finis pas les instructions après tout, arrêtez tout et redémarrez tout deux fois (Gitlab et Nginx) Enfin réussi à faire fonctionner la chose.

Toujours les mêmes problèmes avec CI / Zip / PublicCloning difficile.

MISE À JOUR 3:

Il suffit de mettre à jour 8.2.3 apt-get update apt-get install gitlab-ce

502.

redémarrer nginx gitlab-ctl restart

gitlab-rake gitlab: app: vérifier

 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 

Si quelqu’un peut me conduire à la documentation appropriée ou aux changements à apporter, ce serait génial.

++ Greg

Il semble que le téléchargement de fichiers ZIP soit désormais géré par le gitlab-workhorse.

Pour cela, il y a des éléments supplémentaires dans le fichier nginx-config. Vous pourriez vouloir jeter un oeil à https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab où il y a une section

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

et un

 proxy_pass http://gitlab-workhorse; 

à la fin de la configuration.

Je suis actuellement en train de creuser le même problème et je ferai un compte-rendu, une fois résolu.

Jetez un oeil à https://gist.github.com/sameersbn/becd1c976c3dc4866ef8 il semble qu’il existe une option ‘gzip’ qui peut être désactivée.

 gzip off; 

à la ligne 53.

Il manque un élément à la documentation de mise à jour: il renomme gitlab-git-http-server en gitlab-workhorse dans la configuration nginx, mais il manque partiellement /etc/default/gitlab . Remplacez également toutes les occurrences de gitlab-git-http-server par gitlab-workhorse , en particulier la socket de gitlab_workhorse_options .

Quelque chose comme

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

Un début mais pas tout:

J’ai fait par erreur que nginx de Gitlab écoutait le port 8080. Quand c’est déjà le port utilisé par Unicorn de Gitlab.

Le remplacer par 8081 a permis au CI de mieux répondre. Encore faut-il résoudre le problème de l’utilisateur de git (ou mieux, utiliser docker) mais ce n’est pas une question directe de ce qui compte ici …

MISE À JOUR: Solution complète – ACL

Il semble que les utilisateurs git et gitlab-runner créés lors du processus d’installation disposent de droits suffisants.

Premièrement : créez une vraie maison pour chacun: / home / gitlab-runner , / home / git avec les fichiers ssh authorized_keys et les installations rbenv + ruby.

Ensuite : vim /etc/passwd et changez le répertoire personnel de la nouvelle maison, où ils ont tous les droits. Maintenant, mes builds sont verts!