mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-10 21:26:07 +10:00
Merge branch 'after-script' into make-before-after-overridable
* after-script: Add CHANGELOG and documentation Rename finally_script to after_script Conflicts: lib/ci/gitlab_ci_yaml_processor.rb spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
This commit is contained in:
@@ -21,6 +21,7 @@ v 8.7.0 (unreleased)
|
||||
- Make /profile/keys/new redirect to /profile/keys for back-compat. !3717
|
||||
- Preserve time notes/comments have been updated at when moving issue
|
||||
- Make HTTP(s) label consistent on clone bar (Stan Hu)
|
||||
- Add support for `after_script`, requires Runner 1.2 (Kamil Trzciński)
|
||||
- Expose label description in API (Mariusz Jachimowicz)
|
||||
- API: Ability to update a group (Robert Schilling)
|
||||
- API: Ability to move issues (Robert Schilling)
|
||||
|
||||
@@ -15,6 +15,7 @@ If you want a quick introduction to GitLab CI, follow our
|
||||
- [.gitlab-ci.yml](#gitlab-ci-yml)
|
||||
- [image and services](#image-and-services)
|
||||
- [before_script](#before_script)
|
||||
- [after_script](#after_script)
|
||||
- [stages](#stages)
|
||||
- [types](#types)
|
||||
- [variables](#variables)
|
||||
@@ -80,6 +81,9 @@ services:
|
||||
before_script:
|
||||
- bundle install
|
||||
|
||||
after_script:
|
||||
- rm secrets
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
@@ -104,6 +108,7 @@ There are a few reserved `keywords` that **cannot** be used as job names:
|
||||
| stages | no | Define build stages |
|
||||
| types | no | Alias for `stages` |
|
||||
| before_script | no | Define commands that run before each job's script |
|
||||
| after_script | no | Define commands that run after each job's script |
|
||||
| variables | no | Define build variables |
|
||||
| cache | no | Define list of files that should be cached between subsequent runs |
|
||||
|
||||
@@ -118,6 +123,11 @@ used for time of the build. The configuration of this feature is covered in
|
||||
`before_script` is used to define the command that should be run before all
|
||||
builds, including deploy builds. This can be an array or a multi-line string.
|
||||
|
||||
### after_script
|
||||
|
||||
`after_script` is used to define the command that will be run after for all
|
||||
builds. This has to be an array or a multi-line string.
|
||||
|
||||
### stages
|
||||
|
||||
`stages` is used to define build stages that can be used by jobs.
|
||||
|
||||
@@ -4,12 +4,12 @@ module Ci
|
||||
|
||||
DEFAULT_STAGES = %w(build test deploy)
|
||||
DEFAULT_STAGE = 'test'
|
||||
ALLOWED_YAML_KEYS = [:before_script, :finally_script, :image, :services, :types, :stages, :variables, :cache]
|
||||
ALLOWED_YAML_KEYS = [:before_script, :after_script, :image, :services, :types, :stages, :variables, :cache]
|
||||
ALLOWED_JOB_KEYS = [:tags, :script, :only, :except, :type, :image, :services,
|
||||
:allow_failure, :type, :stage, :when, :artifacts, :cache,
|
||||
:dependencies, :before_script, :finally_script]
|
||||
:dependencies, :before_script, :after_script]
|
||||
|
||||
attr_reader :before_script, :finally_script, :image, :services, :variables, :path, :cache
|
||||
attr_reader :before_script, :after_script, :image, :services, :variables, :path, :cache
|
||||
|
||||
def initialize(config, path = nil)
|
||||
@config = YAML.safe_load(config, [Symbol], [], true)
|
||||
@@ -44,7 +44,7 @@ module Ci
|
||||
|
||||
def initial_parsing
|
||||
@before_script = @config[:before_script] || []
|
||||
@finally_script = @config[:finally_script]
|
||||
@after_script = @config[:after_script]
|
||||
@image = @config[:image]
|
||||
@services = @config[:services]
|
||||
@stages = @config[:stages] || @config[:types]
|
||||
@@ -86,7 +86,7 @@ module Ci
|
||||
artifacts: job[:artifacts],
|
||||
cache: job[:cache] || @cache,
|
||||
dependencies: job[:dependencies],
|
||||
finally_script: job[:finally_script] || @finally_script,
|
||||
after_script: job[:after_script] || @after_script,
|
||||
}.compact
|
||||
}
|
||||
end
|
||||
@@ -96,8 +96,8 @@ module Ci
|
||||
raise ValidationError, "before_script should be an array of strings"
|
||||
end
|
||||
|
||||
unless @finally_script.nil? || validate_array_of_strings(@finally_script)
|
||||
raise ValidationError, "finally_script should be an array of strings"
|
||||
unless @after_script.nil? || validate_array_of_strings(@after_script)
|
||||
raise ValidationError, "after_script should be an array of strings"
|
||||
end
|
||||
|
||||
unless @image.nil? || @image.is_a?(String)
|
||||
@@ -173,8 +173,8 @@ module Ci
|
||||
raise ValidationError, "#{name} job: before_script should be an array of strings"
|
||||
end
|
||||
|
||||
if job[:finally_script] && !validate_array_of_strings(job[:finally_script])
|
||||
raise ValidationError, "#{name} job: finally_script should be an array of strings"
|
||||
if job[:after_script] && !validate_array_of_strings(job[:after_script])
|
||||
raise ValidationError, "#{name} job: after_script should be an array of strings"
|
||||
end
|
||||
|
||||
if job[:image] && !validate_string(job[:image])
|
||||
|
||||
@@ -333,30 +333,30 @@ module Ci
|
||||
end
|
||||
end
|
||||
|
||||
describe "finally_script" do
|
||||
describe "after_script" do
|
||||
context "in global context" do
|
||||
let(:config) {
|
||||
{
|
||||
finally_script: ["finally_script"],
|
||||
after_script: ["after_script"],
|
||||
test: { script: ["script"] }
|
||||
}
|
||||
}
|
||||
|
||||
it "return finally_script in options" do
|
||||
expect(subject[:options][:finally_script]).to eq(["finally_script"])
|
||||
it "return after_script in options" do
|
||||
expect(subject[:options][:after_script]).to eq(["after_script"])
|
||||
end
|
||||
end
|
||||
|
||||
context "overwritten in local context" do
|
||||
let(:config) {
|
||||
{
|
||||
finally_script: ["local finally_script"],
|
||||
test: { finally_script: ["local finally_script"], script: ["script"] }
|
||||
after_script: ["local after_script"],
|
||||
test: { after_script: ["local after_script"], script: ["script"] }
|
||||
}
|
||||
}
|
||||
|
||||
it "return finally_script in options" do
|
||||
expect(subject[:options][:finally_script]).to eq(["local finally_script"])
|
||||
it "return after_script in options" do
|
||||
expect(subject[:options][:after_script]).to eq(["local after_script"])
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -689,18 +689,18 @@ EOT
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: before_script should be an array of strings")
|
||||
end
|
||||
|
||||
it "returns errors if finally_script parameter is invalid" do
|
||||
config = YAML.dump({ finally_script: "bundle update", rspec: { script: "test" } })
|
||||
it "returns errors if after_script parameter is invalid" do
|
||||
config = YAML.dump({ after_script: "bundle update", rspec: { script: "test" } })
|
||||
expect do
|
||||
GitlabCiYamlProcessor.new(config, path)
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "finally_script should be an array of strings")
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "after_script should be an array of strings")
|
||||
end
|
||||
|
||||
it "returns errors if job finally_script parameter is not an array of strings" do
|
||||
config = YAML.dump({ rspec: { script: "test", finally_script: [10, "test"] } })
|
||||
it "returns errors if job after_script parameter is not an array of strings" do
|
||||
config = YAML.dump({ rspec: { script: "test", after_script: [10, "test"] } })
|
||||
expect do
|
||||
GitlabCiYamlProcessor.new(config, path)
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: finally_script should be an array of strings")
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: after_script should be an array of strings")
|
||||
end
|
||||
|
||||
it "returns errors if image parameter is invalid" do
|
||||
|
||||
Reference in New Issue
Block a user