From 2b120087f3fdddca03d79c6b67275b0509afa154 Mon Sep 17 00:00:00 2001 From: Adam Coldrick Date: Fri, 9 May 2014 10:52:06 +0000 Subject: Add a configure extension and relevant files for installing GitLab --- .../gitlab-ci/config/application.yml | 43 +++++++++ .../gitlab-install/gitlab-ci/config/resque.yml | 3 + .../gitlab-install/gitlab-ci/config/unicorn.rb | 102 +++++++++++++++++++++ .../gitlab-ci/lib/support/nginx/gitlab_ci | 36 ++++++++ 4 files changed, 184 insertions(+) create mode 100644 gitlab-server/usr/share/gitlab-install/gitlab-ci/config/application.yml create mode 100644 gitlab-server/usr/share/gitlab-install/gitlab-ci/config/resque.yml create mode 100644 gitlab-server/usr/share/gitlab-install/gitlab-ci/config/unicorn.rb create mode 100644 gitlab-server/usr/share/gitlab-install/gitlab-ci/lib/support/nginx/gitlab_ci (limited to 'gitlab-server/usr/share/gitlab-install/gitlab-ci') diff --git a/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/application.yml b/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/application.yml new file mode 100644 index 00000000..6eb5eb19 --- /dev/null +++ b/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/application.yml @@ -0,0 +1,43 @@ +defaults: &defaults + gitlab_server_urls: + # Replace with your gitlab server url + - 'http://##GITLAB_HOSTNAME##/' + + ## Gitlab CI settings + gitlab_ci: + ## Web server settings + host: ##GITLAB_HOSTNAME## + port: ##CI_PORT## + https: false + + ## Email settings + # Email address used in the "From" field in mails sent by GitLab-CI + email_from: gitlab-ci@localhost + + # Email address of your support contact (default: same as email_from) + support_email: support@localhost + + # Default project notifications settings: + # + # Send emails only on broken builds (default: true) + # all_broken_builds: true + # + # Add committer to recipients list (default: false) + # add_committer: true + + gravatar: + enabled: true + plain_url: "http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm" + ssl_url: "https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm" + + +development: + <<: *defaults + +test: + <<: *defaults + gitlab_server_urls: + - 'http://demo.gitlab.com/' + +production: + <<: *defaults diff --git a/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/resque.yml b/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/resque.yml new file mode 100644 index 00000000..f42ffe78 --- /dev/null +++ b/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/resque.yml @@ -0,0 +1,3 @@ +development: redis://127.0.0.1:6379 +test: redis://127.0.0.1:6379 +production: redis://127.0.0.1:6379 diff --git a/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/unicorn.rb b/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/unicorn.rb new file mode 100644 index 00000000..cdcbe39a --- /dev/null +++ b/gitlab-server/usr/share/gitlab-install/gitlab-ci/config/unicorn.rb @@ -0,0 +1,102 @@ +# Sample verbose configuration file for Unicorn (not Rack) +# +# This configuration file documents many features of Unicorn +# that may not be needed for some applications. See +# http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb +# for a much simpler configuration file. +# +# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete +# documentation. + +# Use at least one worker per core if you're on a dedicated server, +# more will usually help for _short_ waits on databases/caches. +worker_processes 2 + +# Since Unicorn is never exposed to outside clients, it does not need to +# run on the standard HTTP port (80), there is no reason to start Unicorn +# as root unless it's from system init scripts. +# If running the master process as root and the workers as an unprivileged +# user, do this to switch euid/egid in the workers (also chowns logs): +# user "unprivileged_user", "unprivileged_group" + +# Help ensure your application will always spawn in the symlinked +# "current" directory that Capistrano sets up. +working_directory "/home/gitlab_ci/gitlab-ci" # available in 0.94.0+ + +# listen on both a Unix domain socket and a TCP port, +# we use a shorter backlog for quicker failover when busy +listen "/home/gitlab_ci/gitlab-ci/tmp/sockets/gitlab-ci.socket", :backlog => 64 +listen "127.0.0.1:##UNICORN_CI_PORT##", :tcp_nopush => true + +# nuke workers after 30 seconds instead of 60 seconds (the default) +timeout 30 + +# feel free to point this anywhere accessible on the filesystem +pid "/home/gitlab_ci/gitlab-ci/tmp/pids/unicorn.pid" + +# By default, the Unicorn logger will write to stderr. +# Additionally, some applications/frameworks log to stderr or stdout, +# so prevent them from going to /dev/null when daemonized here: +stderr_path "/home/gitlab_ci/gitlab-ci/log/unicorn.stderr.log" +stdout_path "/home/gitlab_ci/gitlab-ci/log/unicorn.stdout.log" + +# combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings +# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow +preload_app true +GC.respond_to?(:copy_on_write_friendly=) and + GC.copy_on_write_friendly = true + +# Enable this flag to have unicorn test client connections by writing the +# beginning of the HTTP headers before calling the application. This +# prevents calling the application for connections that have disconnected +# while queued. This is only guaranteed to detect clients on the same +# host unicorn runs on, and unlikely to detect disconnects even on a +# fast LAN. +check_client_connection false + +before_fork do |server, worker| + # the following is highly recomended for Rails + "preload_app true" + # as there's no need for the master process to hold a connection + defined?(ActiveRecord::Base) and + ActiveRecord::Base.connection.disconnect! + + # The following is only recommended for memory/DB-constrained + # installations. It is not needed if your system can house + # twice as many worker_processes as you have configured. + # + # This allows a new master process to incrementally + # phase out the old master process with SIGTTOU to avoid a + # thundering herd (especially in the "preload_app false" case) + # when doing a transparent upgrade. The last worker spawned + # will then kill off the old master process with a SIGQUIT. + old_pid = "#{server.config[:pid]}.oldbin" + if old_pid != server.pid + begin + sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU + Process.kill(sig, File.read(old_pid).to_i) + rescue Errno::ENOENT, Errno::ESRCH + end + end + # + # Throttle the master from forking too quickly by sleeping. Due + # to the implementation of standard Unix signal handlers, this + # helps (but does not completely) prevent identical, repeated signals + # from being lost when the receiving process is busy. + # sleep 1 +end + +after_fork do |server, worker| + # per-process listener ports for debugging/admin/migrations + # addr = "127.0.0.1:#{9293 + worker.nr}" + # server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true) + + # the following is *required* for Rails + "preload_app true", + defined?(ActiveRecord::Base) and + ActiveRecord::Base.establish_connection + + # if preload_app is true, then you may also want to check and + # restart any other shared sockets/descriptors such as Memcached, + # and Redis. TokyoCabinet file handles are safe to reuse + # between any number of forked children (assuming your kernel + # correctly implements pread()/pwrite() system calls) +end diff --git a/gitlab-server/usr/share/gitlab-install/gitlab-ci/lib/support/nginx/gitlab_ci b/gitlab-server/usr/share/gitlab-install/gitlab-ci/lib/support/nginx/gitlab_ci new file mode 100644 index 00000000..aa26614c --- /dev/null +++ b/gitlab-server/usr/share/gitlab-install/gitlab-ci/lib/support/nginx/gitlab_ci @@ -0,0 +1,36 @@ +# GITLAB CI +# Maintainer: @randx +# App Version: 2.0 + +upstream gitlab_ci { + server unix:/home/gitlab_ci/gitlab-ci/tmp/sockets/gitlab-ci.socket; +} + +server { + listen 81 default_server; # e.g., listen 192.168.1.1:80; + server_name ct-gitlab.dyn.ducie.codethink.co.uk; # e.g., server_name source.example.com; + root /home/gitlab_ci/gitlab-ci/public; + + access_log /var/log/nginx/gitlab_ci_access.log; + error_log /var/log/nginx/gitlab_ci_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_pass http://gitlab_ci; + } + + # adjust this to match the largest build log your runners might submit, + # set to 0 to disable limit + client_max_body_size 10m; +} -- cgit v1.2.1