Commit dcdf2a8b authored by Tomasz Maczukin's avatar Tomasz Maczukin Committed by Grzegorz Bizon

Make entrypoint and command keys to be array of strings

parent 8513072e
...@@ -15,7 +15,7 @@ module Gitlab ...@@ -15,7 +15,7 @@ module Gitlab
validates :config, allowed_keys: ALLOWED_KEYS validates :config, allowed_keys: ALLOWED_KEYS
validates :name, type: String, presence: true validates :name, type: String, presence: true
validates :entrypoint, type: String, allow_nil: true validates :entrypoint, array_of_strings: true, allow_nil: true
end end
def hash? def hash?
......
...@@ -15,8 +15,8 @@ module Gitlab ...@@ -15,8 +15,8 @@ module Gitlab
validates :config, allowed_keys: ALLOWED_KEYS validates :config, allowed_keys: ALLOWED_KEYS
validates :name, type: String, presence: true validates :name, type: String, presence: true
validates :entrypoint, type: String, allow_nil: true validates :entrypoint, array_of_strings: true, allow_nil: true
validates :command, type: String, allow_nil: true validates :command, array_of_strings: true, allow_nil: true
validates :alias, type: String, allow_nil: true validates :alias, type: String, allow_nil: true
end end
......
...@@ -598,8 +598,10 @@ module Ci ...@@ -598,8 +598,10 @@ module Ci
describe "Image and service handling" do describe "Image and service handling" do
context "when extended docker configuration is used" do context "when extended docker configuration is used" do
it "returns image and service when defined" do it "returns image and service when defined" do
config = YAML.dump({ image: { name: "ruby:2.1" }, config = YAML.dump({ image: { name: "ruby:2.1", entrypoint: ["/usr/local/bin/init", "run"] },
services: ["mysql", { name: "docker:dind", alias: "docker" }], services: ["mysql", { name: "docker:dind", alias: "docker",
entrypoint: ["/usr/local/bin/init", "run"],
command: ["/usr/local/bin/init", "run"] }],
before_script: ["pwd"], before_script: ["pwd"],
rspec: { script: "rspec" } }) rspec: { script: "rspec" } })
...@@ -614,8 +616,10 @@ module Ci ...@@ -614,8 +616,10 @@ module Ci
coverage_regex: nil, coverage_regex: nil,
tag_list: [], tag_list: [],
options: { options: {
image: { name: "ruby:2.1" }, image: { name: "ruby:2.1", entrypoint: ["/usr/local/bin/init", "run"] },
services: [{ name: "mysql" }, { name: "docker:dind", alias: "docker" }] services: [{ name: "mysql" },
{ name: "docker:dind", alias: "docker", entrypoint: ["/usr/local/bin/init", "run"],
command: ["/usr/local/bin/init", "run"] }]
}, },
allow_failure: false, allow_failure: false,
when: "on_success", when: "on_success",
...@@ -628,8 +632,11 @@ module Ci ...@@ -628,8 +632,11 @@ module Ci
config = YAML.dump({ image: "ruby:2.1", config = YAML.dump({ image: "ruby:2.1",
services: ["mysql"], services: ["mysql"],
before_script: ["pwd"], before_script: ["pwd"],
rspec: { image: { name: "ruby:2.5" }, rspec: { image: { name: "ruby:2.5", entrypoint: ["/usr/local/bin/init", "run"] },
services: [{ name: "postgresql", alias: "db-pg" }, "docker:dind"], script: "rspec" } }) services: [{ name: "postgresql", alias: "db-pg",
entrypoint: ["/usr/local/bin/init", "run"],
command: ["/usr/local/bin/init", "run"] }, "docker:dind"],
script: "rspec" } })
config_processor = GitlabCiYamlProcessor.new(config, path) config_processor = GitlabCiYamlProcessor.new(config, path)
...@@ -642,8 +649,10 @@ module Ci ...@@ -642,8 +649,10 @@ module Ci
coverage_regex: nil, coverage_regex: nil,
tag_list: [], tag_list: [],
options: { options: {
image: { name: "ruby:2.5" }, image: { name: "ruby:2.5", entrypoint: ["/usr/local/bin/init", "run"] },
services: [{ name: "postgresql", alias: "db-pg" }, { name: "docker:dind" }] services: [{ name: "postgresql", alias: "db-pg", entrypoint: ["/usr/local/bin/init", "run"],
command: ["/usr/local/bin/init", "run"]},
{ name: "docker:dind" }]
}, },
allow_failure: false, allow_failure: false,
when: "on_success", when: "on_success",
......
...@@ -38,7 +38,7 @@ describe Gitlab::Ci::Config::Entry::Image do ...@@ -38,7 +38,7 @@ describe Gitlab::Ci::Config::Entry::Image do
end end
context 'when configuration is a hash' do context 'when configuration is a hash' do
let(:config) { { name: 'ruby:2.2', entrypoint: '/bin/sh' } } let(:config) { { name: 'ruby:2.2', entrypoint: ['/bin/sh', 'run'] } }
describe '#value' do describe '#value' do
it 'returns image hash' do it 'returns image hash' do
...@@ -66,7 +66,7 @@ describe Gitlab::Ci::Config::Entry::Image do ...@@ -66,7 +66,7 @@ describe Gitlab::Ci::Config::Entry::Image do
describe '#entrypoint' do describe '#entrypoint' do
it "returns image's entrypoint" do it "returns image's entrypoint" do
expect(entry.entrypoint).to eq '/bin/sh' expect(entry.entrypoint).to eq ['/bin/sh', 'run']
end end
end end
end end
......
...@@ -43,7 +43,7 @@ describe Gitlab::Ci::Config::Entry::Service do ...@@ -43,7 +43,7 @@ describe Gitlab::Ci::Config::Entry::Service do
context 'when configuration is a hash' do context 'when configuration is a hash' do
let(:config) do let(:config) do
{ name: 'postgresql:9.5', alias: 'db', command: 'cmd', entrypoint: '/bin/sh' } { name: 'postgresql:9.5', alias: 'db', command: ['cmd', 'run'], entrypoint: ['/bin/sh', 'run'] }
end end
describe '#valid?' do describe '#valid?' do
...@@ -72,13 +72,13 @@ describe Gitlab::Ci::Config::Entry::Service do ...@@ -72,13 +72,13 @@ describe Gitlab::Ci::Config::Entry::Service do
describe '#command' do describe '#command' do
it "returns service's command" do it "returns service's command" do
expect(entry.command).to eq 'cmd' expect(entry.command).to eq ['cmd', 'run']
end end
end end
describe '#entrypoint' do describe '#entrypoint' do
it "returns service's entrypoint" do it "returns service's entrypoint" do
expect(entry.entrypoint).to eq '/bin/sh' expect(entry.entrypoint).to eq ['/bin/sh', 'run']
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment