parent
01160fc061
commit
bbdb9ba036
6 changed files with 123 additions and 35 deletions
|
@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date.
|
|||
v 8.6.0 (unreleased)
|
||||
- Improve the formatting for the user page bio (Connor Shea)
|
||||
- Fix avatar stretching by providing a cropping feature (Johann Pardanaud)
|
||||
- Don't load all of GitLab in mail_room
|
||||
|
||||
v 8.5.1
|
||||
- Fix group projects styles
|
||||
|
|
|
@ -207,11 +207,7 @@ Settings.gitlab_ci['builds_path'] = File.expand_path(Settings.gitlab_c
|
|||
# Reply by email
|
||||
#
|
||||
Settings['incoming_email'] ||= Settingslogic.new({})
|
||||
Settings.incoming_email['enabled'] = false if Settings.incoming_email['enabled'].nil?
|
||||
Settings.incoming_email['port'] = 143 if Settings.incoming_email['port'].nil?
|
||||
Settings.incoming_email['ssl'] = false if Settings.incoming_email['ssl'].nil?
|
||||
Settings.incoming_email['start_tls'] = false if Settings.incoming_email['start_tls'].nil?
|
||||
Settings.incoming_email['mailbox'] = "inbox" if Settings.incoming_email['mailbox'].nil?
|
||||
Settings.incoming_email['enabled'] = false if Settings.incoming_email['enabled'].nil?
|
||||
|
||||
#
|
||||
# Build Artifacts
|
||||
|
|
|
@ -1,39 +1,52 @@
|
|||
:mailboxes:
|
||||
<%
|
||||
require_relative 'config/environment.rb'
|
||||
require "yaml"
|
||||
require "json"
|
||||
|
||||
if Gitlab::IncomingEmail.enabled?
|
||||
config = Gitlab::IncomingEmail.config
|
||||
rails_env = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
|
||||
|
||||
redis_config_file = "config/resque.yml"
|
||||
redis_url =
|
||||
if File.exists?(redis_config_file)
|
||||
YAML.load_file(redis_config_file)[Rails.env]
|
||||
else
|
||||
"redis://localhost:6379"
|
||||
end
|
||||
%>
|
||||
-
|
||||
:host: <%= config.host.to_json %>
|
||||
:port: <%= config.port.to_json %>
|
||||
:ssl: <%= config.ssl.to_json %>
|
||||
:start_tls: <%= config.start_tls.to_json %>
|
||||
:email: <%= config.user.to_json %>
|
||||
:password: <%= config.password.to_json %>
|
||||
config_file = ENV["MAIL_ROOM_GITLAB_CONFIG_FILE"] || "config/gitlab.yml"
|
||||
if File.exists?(config_file)
|
||||
all_config = YAML.load_file(config_file)[rails_env]
|
||||
|
||||
:name: <%= config.mailbox.to_json %>
|
||||
config = all_config["incoming_email"] || {}
|
||||
config['enabled'] = false if config['enabled'].nil?
|
||||
config['port'] = 143 if config['port'].nil?
|
||||
config['ssl'] = false if config['ssl'].nil?
|
||||
config['start_tls'] = false if config['start_tls'].nil?
|
||||
config['mailbox'] = "inbox" if config['mailbox'].nil?
|
||||
|
||||
:delete_after_delivery: true
|
||||
if config['enabled'] && config['address'] && config['address'].include?('%{key}')
|
||||
redis_config_file = "config/resque.yml"
|
||||
redis_url =
|
||||
if File.exists?(redis_config_file)
|
||||
YAML.load_file(redis_config_file)[rails_env]
|
||||
else
|
||||
"redis://localhost:6379"
|
||||
end
|
||||
%>
|
||||
-
|
||||
:host: <%= config['host'].to_json %>
|
||||
:port: <%= config['port'].to_json %>
|
||||
:ssl: <%= config['ssl'].to_json %>
|
||||
:start_tls: <%= config['start_tls'].to_json %>
|
||||
:email: <%= config['user'].to_json %>
|
||||
:password: <%= config['password'].to_json %>
|
||||
|
||||
:delivery_method: sidekiq
|
||||
:delivery_options:
|
||||
:redis_url: <%= redis_url.to_json %>
|
||||
:namespace: resque:gitlab
|
||||
:queue: incoming_email
|
||||
:worker: EmailReceiverWorker
|
||||
:name: <%= config['mailbox'].to_json %>
|
||||
|
||||
:arbitration_method: redis
|
||||
:arbitration_options:
|
||||
:redis_url: <%= redis_url.to_json %>
|
||||
:namespace: mail_room:gitlab
|
||||
:delete_after_delivery: true
|
||||
|
||||
:delivery_method: sidekiq
|
||||
:delivery_options:
|
||||
:redis_url: <%= redis_url.to_json %>
|
||||
:namespace: resque:gitlab
|
||||
:queue: incoming_email
|
||||
:worker: EmailReceiverWorker
|
||||
|
||||
:arbitration_method: redis
|
||||
:arbitration_options:
|
||||
:redis_url: <%= redis_url.to_json %>
|
||||
:namespace: mail_room:gitlab
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
56
spec/config/mail_room_spec.rb
Normal file
56
spec/config/mail_room_spec.rb
Normal file
|
@ -0,0 +1,56 @@
|
|||
require "spec_helper"
|
||||
|
||||
describe "mail_room.yml" do
|
||||
let(:config_path) { "config/mail_room.yml" }
|
||||
let(:configuration) { YAML.load(ERB.new(File.read(config_path)).result) }
|
||||
|
||||
context "when incoming email is disabled" do
|
||||
before do
|
||||
ENV["MAIL_ROOM_GITLAB_CONFIG_FILE"] = Rails.root.join("spec/fixtures/mail_room_disabled.yml").to_s
|
||||
end
|
||||
|
||||
after do
|
||||
ENV["MAIL_ROOM_GITLAB_CONFIG_FILE"] = nil
|
||||
end
|
||||
|
||||
it "contains no configuration" do
|
||||
expect(configuration[:mailboxes]).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context "when incoming email is enabled" do
|
||||
before do
|
||||
ENV["MAIL_ROOM_GITLAB_CONFIG_FILE"] = Rails.root.join("spec/fixtures/mail_room_enabled.yml").to_s
|
||||
end
|
||||
|
||||
after do
|
||||
ENV["MAIL_ROOM_GITLAB_CONFIG_FILE"] = nil
|
||||
end
|
||||
|
||||
it "contains the intended configuration" do
|
||||
expect(configuration[:mailboxes].length).to eq(1)
|
||||
|
||||
mailbox = configuration[:mailboxes].first
|
||||
|
||||
expect(mailbox[:host]).to eq("imap.gmail.com")
|
||||
expect(mailbox[:port]).to eq(993)
|
||||
expect(mailbox[:ssl]).to eq(true)
|
||||
expect(mailbox[:start_tls]).to eq(false)
|
||||
expect(mailbox[:email]).to eq("gitlab-incoming@gmail.com")
|
||||
expect(mailbox[:password]).to eq("[REDACTED]")
|
||||
expect(mailbox[:name]).to eq("inbox")
|
||||
|
||||
redis_config_file = Rails.root.join('config', 'resque.yml')
|
||||
|
||||
redis_url =
|
||||
if File.exists?(redis_config_file)
|
||||
YAML.load_file(redis_config_file)[Rails.env]
|
||||
else
|
||||
"redis://localhost:6379"
|
||||
end
|
||||
|
||||
expect(mailbox[:delivery_options][:redis_url]).to eq(redis_url)
|
||||
expect(mailbox[:arbitration_options][:redis_url]).to eq(redis_url)
|
||||
end
|
||||
end
|
||||
end
|
11
spec/fixtures/mail_room_disabled.yml
vendored
Normal file
11
spec/fixtures/mail_room_disabled.yml
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
test:
|
||||
incoming_email:
|
||||
enabled: false
|
||||
address: "gitlab-incoming+%{key}@gmail.com"
|
||||
user: "gitlab-incoming@gmail.com"
|
||||
password: "[REDACTED]"
|
||||
host: "imap.gmail.com"
|
||||
port: 993
|
||||
ssl: true
|
||||
start_tls: false
|
||||
mailbox: "inbox"
|
11
spec/fixtures/mail_room_enabled.yml
vendored
Normal file
11
spec/fixtures/mail_room_enabled.yml
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
test:
|
||||
incoming_email:
|
||||
enabled: true
|
||||
address: "gitlab-incoming+%{key}@gmail.com"
|
||||
user: "gitlab-incoming@gmail.com"
|
||||
password: "[REDACTED]"
|
||||
host: "imap.gmail.com"
|
||||
port: 993
|
||||
ssl: true
|
||||
start_tls: false
|
||||
mailbox: "inbox"
|
Loading…
Reference in a new issue