2016-06-17 1 views
0

별도의 nginx (nginx/1.10.0, Ubuntu 14.04) 구성으로 GitLab CI (버전 8.8.5)를 실행하는 데 어려움이 있습니다. 내 GitLab 인스턴스가 잘 돌아가고 모든 것이 정상적으로 작동합니다. 내 nginx 구성 파일에서 참조 할 수있는 gitlab-ci 소켓의 올바른 경로는 무엇입니까? 나는 gitlab 디렉토리에서 아무 것도 찾지 못했습니다.처음부터 8.8.5에서 GitLab CI를 설정하는 데 어려움이 있습니다.

GitLab 설정 /etc/gitlab/gitlab.rb :

external_url 'http://git.example.com' 
ci_external_url 'https://ci.example.com' 
gitlab_rails['time_zone'] = 'Europe/Berlin' 
web_server['external_users'] = ['www-data'] 
nginx['enable'] = false 
ci_nginx['enable'] = false 

GitLab의 nginx 구성 파일 /etc/nginx/sites-enabled/gitlab :

upstream gitlab-workhorse { 
    server unix:/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket fail_timeout=0; 
} 

server { 
    listen *:443; 

    ssl on; 
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem; 

    server_name git.example.com; 

    server_tokens off; 

    root /opt/gitlab/embedded/service/gitlab-rails/public; 

    access_log /var/log/nginx/git.example.com/access.log; 
    error_log /var/log/nginx/git.example.com/error.log; 

    location/{ 
    client_max_body_size 0; 
    gzip off; 

    proxy_read_timeout  300; 
    proxy_connect_timeout 300; 
    proxy_redirect   off; 

    proxy_http_version 1.1; 

    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; 

    proxy_pass http://gitlab-workhorse; 
    } 
} 

server { 
    listen 80; 

    server_name git.example.com; 

    return 301 https://$host$request_uri; 
} 
다음

내가 를 설정하는 것입니다 (나는 example.com 내 실제 도메인을 대체)

GitLab CI nginx 구성 파일 /etc/nginx/sites-enabled/gitlab-ci :

upstream gitlab_ci { 
    server unix:/var/opt/gitlab/gitlab-ci/sockets/gitlab.socket; 
} 

server { 
    listen *:443; 

    server_name ci.example.com; 

    server_tokens off; 

    ssl on; 
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem; 

    root /opt/gitlab/embedded/service/gitlab-ci/public; 

    client_max_body_size 250m; 

    access_log /var/log/nginx/ci.example.com/access.log; 
    error_log /var/log/nginx/ci.example.com/error.log; 

    location/{ 
    try_files $uri $uri/index.html $uri.html @gitlab_ci; 
    } 

    location @gitlab_ci { 
    proxy_read_timeout  300; 
    proxy_connect_timeout 300; 
    proxy_redirect   off; 

    proxy_set_header X-Forwarded-Proto $scheme; 
    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-Frame-Options SAMEORIGIN; 

    proxy_pass http://gitlab_ci; 
    } 

} 

server { 
    listen 80; 

    server_name ci.example.com; 

    return 301 https://$host$request_uri; 
} 

의 nginx 오류 로그 인쇄됩니다 다음

tail -f /var/log/nginx/ci.example.com/error.log 

2016/06/17 11:07:31 [crit] 6192#0: *30 connect() to unix:/var/opt/gitlab/gitlab-ci/sockets/gitlab.socket failed (2: No such file or directory) while connecting to upstream, client: XX.XX.XX.XX, server: ci.example.com, request: "GET /robots.txt HTTP/1.1", upstream: "http://unix:/var/opt/gitlab/gitlab-ci/sockets/gitlab.socket:/robots.txt", host: "XX.XX.XX.XX" 

내가 내 구성에서 참조 할 수있는 소켓이 발견되지 않는 GitLab 디렉토리를 확인 :

/var/opt/gitlab # ls -lF * 
-rw------- 1 root   root   38 Jan 19 14:57 bootstrapped 

git-data: 
drwxrws--- 11 git git 4096 Feb 24 16:26 repositories/ 

gitlab-ci: 
drwx------ 2 git root 4096 Jan 19 14:56 builds/ 

gitlab-rails: 
drwx------ 2 git root  4096 Jun 17 11:00 etc/ 
-rw-r--r-- 1 root root   8 Jun 15 16:42 REVISION 
-rw-r--r-- 1 root root   58 Mar 22 16:41 RUBY_VERSION 
drwxr-x--x 5 git gitlab-www 4096 Jan 19 14:56 shared/ 
drwxr-x--- 2 git gitlab-www 4096 Jun 15 16:42 sockets/ 
drwx------ 3 git root  4096 Jan 19 16:19 tmp/ 
drwx------ 2 git root  4096 Jun 15 16:42 upgrade-status/ 
drwx------ 7 git gitlab-www 4096 Feb 9 12:57 uploads/ 
-rw-r--r-- 1 root root   6 Jun 15 16:42 VERSION 
drwx------ 2 git root  4096 Jan 19 14:56 working/ 

gitlab-shell: 
-rw-r--r-- 1 root root 1823 Jun 17 10:51 config.yml 
-rw-r--r-- 1 root root 129 Jan 19 14:56 gitlab_shell_secret 

gitlab-workhorse: 
srwxrwxrwx 1 git git 0 Jun 15 16:42 socket= 
-rw-r--r-- 1 root root 40 Jun 15 16:42 VERSION 

logrotate: 
-rw-r--r-- 1 root root 425 Feb 24 22:18 logrotate.conf 
drwx------ 2 root root 4096 Jun 17 11:00 logrotate.d/ 
-rw-r--r-- 1 root root 880 Jun 17 10:52 logrotate.status 

nginx: 
drwx------ 2 gitlab-www root  4096 Jan 19 14:57 client_body_temp/ 
drwxr-x--- 2 root  gitlab-www 4096 Jun 17 11:00 conf/ 
drwx------ 2 gitlab-www root  4096 Jan 19 14:57 fastcgi_temp/ 
lrwxrwxrwx 1 root  root   21 Jan 19 14:57 logs -> /var/log/gitlab/nginx/ 
drwx------ 8 gitlab-www root  4096 Jan 19 15:49 proxy_temp/ 
drwx------ 2 gitlab-www root  4096 Jan 19 14:57 scgi_temp/ 
drwx------ 2 gitlab-www root  4096 Jan 19 14:57 uwsgi_temp/ 

postgresql: 
drwx------ 14 gitlab-psql root 4096 Jun 17 11:00 data/ 

redis: 
-rw------- 1 gitlab-redis gitlab-redis 201024 Jun 17 11:10 dump.rdb 
-rw-r--r-- 1 gitlab-redis root   29778 Mar 3 16:16 redis.conf 
srwxrwxrwx 1 gitlab-redis gitlab-redis  0 Jun 15 16:41 redis.socket= 

무엇 내가 빠졌어? 내 GitLab CI를 올바르게 설정하는 방법을 알 수있는 사람이 있습니까? 사전에 도움을 주셔서 감사합니다.

+0

내 경험에 따르면'ci_external_url'은 절대적으로 아무것도하지 않으며 CI는 이미 http : // git.example.com/ci에서 사용할 수 있습니다. – Fairy

+0

불행히도 URL https://git.example.com/ci'는 내 GitLab 대시 보드로 리디렉션됩니다. –

+1

대시 보드로 리디렉션하지만 CI 러너는이 URL을 통해 GitLab과 통신합니다. 러너를 URL https://git.example.com/ci에 등록하면이 작업을 수행 할 수 있습니다. – Fairy

답변

0

버전 8.0부터 GitLab CI는 GitLab에 완전히 통합되었습니다. 이것은 실제로 특정 CI 구성이 필요 없다는 것을 의미합니다. 일반적인 GitLab nginx 파일입니다.

external_urlhttp://gitlab.example.com 인 경우 귀하의 CI는 이미 http://gitlab.example.com/ci의 주자에게 제공됩니다. 이 URL을 사용하여 GitLab CI에 대한 러너를 등록하십시오.