From ce94138d4bc90ced4bda8d7a6846d153f7d3bb7a Mon Sep 17 00:00:00 2001 From: ibrahim menem Date: Wed, 17 Mar 2021 10:53:22 +0100 Subject: [PATCH] add-unicorn-entrypoint (#16221) * add unicorn sample config * Control logs destination by environment variables * honor rubocop checks * Honor rafa's CR * bump private submodule * Update NEWS.md --- NEWS.md | 1 + config/application.rb | 5 +++++ config/unicorn.conf.rb.sample | 26 +++++++++++++++++++++++ private | 2 +- script/ci/cloudbuild-build-master.yaml | 1 + script/ci/cloudbuild-build-pr-branch.yaml | 1 + 6 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 config/unicorn.conf.rb.sample diff --git a/NEWS.md b/NEWS.md index cbef21cbde..7fabb64c07 100644 --- a/NEWS.md +++ b/NEWS.md @@ -34,6 +34,7 @@ sudo make install ### Bug fixes / enhancements +- Add unicorn config sample and output log to stdout by setting environment variable [16221](https://github.com/CartoDB/cartodb/pull/16221/files) - Some CI improvements [16179](https://github.com/CartoDB/cartodb/pull/16179) - Bump @carto/viewer to v1.0.3 [16170](https://github.com/CartoDB/cartodb/pull/16170) - Show a new message for create connections after first login [16159](https://github.com/CartoDB/cartodb/pull/16159) diff --git a/config/application.rb b/config/application.rb index cb52348521..9d741b0390 100644 --- a/config/application.rb +++ b/config/application.rb @@ -225,6 +225,11 @@ module CartoDB ## Logging config.log_level = :info config.logger = Carto::Common::Logger.new(Carto::Conf.new.log_file_path("#{Rails.env}.log")) + # Send logs to stdout if `CARTO_BUILDER_LOG_TO_STDOUT` is set to 'true' + if ENV['CARTO_BUILDER_LOG_TO_STDOUT'] && ENV['CARTO_BUILDER_LOG_TO_STDOUT'] == 'true' + config.logger = Carto::Common::Logger.new($stdout) + end + end end diff --git a/config/unicorn.conf.rb.sample b/config/unicorn.conf.rb.sample new file mode 100644 index 0000000000..9d30cf09a4 --- /dev/null +++ b/config/unicorn.conf.rb.sample @@ -0,0 +1,26 @@ +unicorn_workers = ENV['CARTO_BUILDER_UNICORN_WORKERS'] && !ENV['CARTO_BUILDER_UNICORN_WORKERS'].to_s.strip.empty? ? ENV['CARTO_BUILDER_UNICORN_WORKERS'].to_i : 4 +worker_processes unicorn_workers +user "carto", "carto" +app_root = "/cartodb" +working_directory app_root +listen "3000", :tcp_nopush => true +# nuke workers after 180 seconds instead of 60 seconds (the default) +timeout 180 +pid "/tmp/server.pid" +stderr_path "/dev/stderr" +stdout_path "/dev/stdout" + +preload_app false +GC.respond_to?(:copy_on_write_friendly=) and + GC.copy_on_write_friendly = true + +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) +end + +before_exec do |server| + ENV["BUNDLE_GEMFILE"] = "#{app_root}/Gemfile" +end + diff --git a/private b/private index c325314f31..10995db432 160000 --- a/private +++ b/private @@ -1 +1 @@ -Subproject commit c325314f3194cdd81ad0ee06b4f76306f63e227a +Subproject commit 10995db432e129271dbd318a5cab3c1a23225ee4 diff --git a/script/ci/cloudbuild-build-master.yaml b/script/ci/cloudbuild-build-master.yaml index 811f7b0d8f..937d3ed6bf 100644 --- a/script/ci/cloudbuild-build-master.yaml +++ b/script/ci/cloudbuild-build-master.yaml @@ -70,6 +70,7 @@ steps: - -c - | cp private/Dockerfil* . + cp config/unicorn.conf.rb.sample config/unicorn.conf.rb cp config/app_config.yml.sample config/app_config.yml cp config/database.yml.sample config/database.yml cp lib/assets/javascripts/cdb/secrets.example.json lib/assets/javascripts/cdb/secrets.json diff --git a/script/ci/cloudbuild-build-pr-branch.yaml b/script/ci/cloudbuild-build-pr-branch.yaml index 9c58f3f890..ecb1ca2067 100644 --- a/script/ci/cloudbuild-build-pr-branch.yaml +++ b/script/ci/cloudbuild-build-pr-branch.yaml @@ -70,6 +70,7 @@ steps: - -c - | cp private/Dockerfil* . + cp config/unicorn.conf.rb.sample config/unicorn.conf.rb cp config/app_config.yml.sample config/app_config.yml cp config/database.yml.sample config/database.yml cp lib/assets/javascripts/cdb/secrets.example.json lib/assets/javascripts/cdb/secrets.json