Назад | Перейти на главную страницу

Дженкинс не может клонировать репо из gerrit через http

Я получаю сообщение об ошибке при попытке клонировать репо из gerrit с моим пользователем jenkins.

У меня есть пользователь jenkins в gerrit с установленным ключом ssh и паролем http. Я могу войти с паролем в пользовательский интерфейс gerrit, но когда я пытаюсь клонировать репо через http, я получаю фатальный результат: не удалось выполнить аутентификацию.

Я использую nginx, и вот моя конфигурация для обоих сайтов

Вот конфигурация nginx для gerrit

upstream gerrit {
    server localhost:8092 fail_timeout=0;
}

 server {
    listen 80;
    server_name gerrit.domain.com;
    return 301 https://$host$request_uri;
 }

 server {
    listen 443 ssl;
    server_name gerrit.domain.com www.gerrit.domain.com;

    proxy_ssl_session_reuse off;

    ssl_certificate 
    /etc/letsencrypt/live/gerrit.domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key 
    /etc/letsencrypt/live/gerrit.domain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    if ($scheme != "https") {
       return 301 https://$host$request_uri;
    } # managed by Certbot

    location / {
       allow 10.8.0.0/24;
       deny all;
       proxy_set_header        Host $host:$server_port;
       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;
       proxy_set_header Connection "";
       proxy_set_header Authorization $http_authorization;
       proxy_pass_header  Authorization;
       proxy_redirect http:// https://;
       proxy_pass              http://gerrit;
       proxy_http_version 1.1;
       proxy_request_buffering off;
       proxy_buffering off; # Required for HTTP-based CLI to work over SSL

       auth_basic "Restricted";
       auth_basic_user_file /etc/nginx/.htpasswd;
 }

и конфигурация nginx для jenkins

upstream jenkins {
    server localhost:8080 fail_timeout=0;
}

server {
    listen 80;
    server_name jenkins.domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name jenkins.domain.com www.jenkins.domain.com;

    ssl_certificate /etc/letsencrypt/live/jenkins.domain.com-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/jenkins.domain.com-0001/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    proxy_ssl_session_reuse off;

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    location / {
        allow 10.8.0.0/24;
        deny all;
        proxy_set_header        Host $host:$server_port;
        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;
        proxy_set_header Connection "";
        proxy_redirect http:// https://;
        proxy_pass              http://jenkins;
        proxy_http_version 1.1;
        proxy_request_buffering off;
        proxy_buffering off; # Required for HTTP-based CLI to work over SSL
        add_header 'X-SSH-Endpoint' 'jenkins.domain.com:50022' always;
        proxy_read_timeout 150;
    }
    location = /favicon.ico {
        log_not_found off;
    }
}

Я пробовал использовать пароль, который хранится в /etc/nginx/.htpasswd, и тот, который я создал в пользовательском интерфейсе gerrit для пользователя jenkins, но оба они не работают.

Кто-нибудь знает, почему не работает?

Кроме того, в журнале ошибок nginx я вижу ошибку «пользователь« jenkins »: несоответствие пароля». Но с тем же паролем я могу войти в пользовательский интерфейс gerrit.

Я обнаружил, что после удаления

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;

строки из конфигурации gerrit nginx jenkins может клонировать репо, но после этого я получаю сообщение об ошибке с веб-сайта, что HTTP-аутентификация не была настроена должным образом.