Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
ba5bd3d1
Commit
ba5bd3d1
authored
8 years ago
by
Grzegorz Bizon
Committed by
Kamil Trzcinski
8 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new CI configuration entry for the environment
parent
a4638ddd
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
157 additions
and
10 deletions
+157
-10
lib/ci/gitlab_ci_yaml_processor.rb
lib/ci/gitlab_ci_yaml_processor.rb
+2
-1
lib/gitlab/ci/config/node/environment.rb
lib/gitlab/ci/config/node/environment.rb
+25
-8
lib/gitlab/ci/config/node/job.rb
lib/gitlab/ci/config/node/job.rb
+5
-1
spec/lib/gitlab/ci/config/node/environment_spec.rb
spec/lib/gitlab/ci/config/node/environment_spec.rb
+125
-0
No files found.
lib/ci/gitlab_ci_yaml_processor.rb
View file @
ba5bd3d1
...
...
@@ -60,7 +60,7 @@ module Ci
name:
job
[
:name
].
to_s
,
allow_failure:
job
[
:allow_failure
]
||
false
,
when:
job
[
:when
]
||
'on_success'
,
environment:
job
[
:environment
],
environment:
job
.
fetch
(
:environment
,
{})[
:name
],
yaml_variables:
yaml_variables
(
name
),
options:
{
image:
job
[
:image
],
...
...
@@ -69,6 +69,7 @@ module Ci
cache:
job
[
:cache
],
dependencies:
job
[
:dependencies
],
after_script:
job
[
:after_script
],
environment:
job
[
:environment
],
}.
compact
}
end
...
...
This diff is collapsed.
Click to expand it.
lib/gitlab/ci/config/node/environment.rb
View file @
ba5bd3d1
...
...
@@ -3,28 +3,45 @@ module Gitlab
class
Config
module
Node
##
# Entry that represents
environment variables
.
# Entry that represents
an environment
.
#
class
Environment
<
Entry
include
Validatable
validations
do
include
LegacyValidationHelpers
validates
:name
,
presence:
true
validate
do
unless
string_or_array_of_strings?
(
config
)
errors
.
add
(
:config
,
'should be a string or an array of strings'
)
unless
hash
?
||
string?
errors
.
add
(:
config
,
'should be a hash or a string'
)
end
end
end
def
hash?
@config
.
is_a?
(
Hash
)
end
def
string?
@config
.
is_a?
(
String
)
end
def
string_or_array_of_strings?
(
field
)
validate_string
(
field
)
||
validate_array_of_strings
(
field
)
def
name
case
when
string?
then
@config
when
hash
?
then
@config
[:
name
]
end
end
def
url
@config
[
:url
]
if
hash
?
end
def
value
Array
(
@config
)
case
when
string?
then
{
name:
@config
}
when
hash
?
then
@config
end
end
end
end
...
...
This diff is collapsed.
Click to expand it.
lib/gitlab/ci/config/node/job.rb
View file @
ba5bd3d1
...
...
@@ -13,7 +13,7 @@ module Gitlab
type stage when artifacts cache dependencies before_script
after_script variables environment]
attributes
:tags
,
:allow_failure
,
:when
,
:
environment
,
:
dependencies
attributes
:tags
,
:allow_failure
,
:when
,
:dependencies
validations
do
validates
:config
,
allowed_keys:
ALLOWED_KEYS
...
...
@@ -78,6 +78,9 @@ module Gitlab
node
:artifacts
,
Artifacts
,
description:
'Artifacts configuration for this job.'
node
:environment
,
Environment
,
description:
'Environment configuration for this job.'
helpers
:before_script
,
:script
,
:stage
,
:type
,
:after_script
,
:cache
,
:image
,
:services
,
:only
,
:except
,
:variables
,
:artifacts
,
:commands
...
...
@@ -133,6 +136,7 @@ module Gitlab
only:
only
,
except:
except
,
variables:
variables_defined?
?
variables
:
nil
,
environment:
environment_defined?
?
environment
:
nil
,
artifacts:
artifacts
,
after_script:
after_script
}
end
...
...
This diff is collapsed.
Click to expand it.
spec/lib/gitlab/ci/config/node/environment_spec.rb
0 → 100644
View file @
ba5bd3d1
require
'spec_helper'
describe
Gitlab
::
Ci
::
Config
::
Node
::
Environment
do
let
(
:entry
)
{
described_class
.
new
(
config
)
}
before
{
entry
.
compose!
}
context
'when configuration is a string'
do
let
(
:config
)
{
'production'
}
describe
'#string?'
do
it
'is string configuration'
do
expect
(
entry
).
to
be_string
end
end
describe
'#hash?'
do
it
'is not hash configuration'
do
expect
(
entry
).
not_to
be_hash
end
end
describe
'#valid?'
do
it
'is valid'
do
expect
(
entry
).
to
be_valid
end
end
describe
'#value'
do
it
'returns valid hash'
do
expect
(
entry
.
value
).
to
eq
(
name:
'production'
)
end
end
describe
'#name'
do
it
'returns environment name'
do
expect
(
entry
.
name
).
to
eq
'production'
end
end
describe
'#url'
do
it
'returns environment url'
do
expect
(
entry
.
url
).
to
be_nil
end
end
end
context
'when configuration is a hash'
do
let
(
:config
)
do
{
name:
'development'
,
url:
'https://example.gitlab.com'
}
end
describe
'#string?'
do
it
'is not string configuration'
do
expect
(
entry
).
not_to
be_string
end
end
describe
'#hash?'
do
it
'is hash configuration'
do
expect
(
entry
).
to
be_hash
end
end
describe
'#valid?'
do
it
'is valid'
do
expect
(
entry
).
to
be_valid
end
end
describe
'#value'
do
it
'returns valid hash'
do
expect
(
entry
.
value
).
to
eq
config
end
end
describe
'#name'
do
it
'returns environment name'
do
expect
(
entry
.
name
).
to
eq
'development'
end
end
describe
'#url'
do
it
'returns environment url'
do
expect
(
entry
.
url
).
to
eq
'https://example.gitlab.com'
end
end
end
context
'when configuration is invalid'
do
context
'when configuration is an array'
do
let
(
:config
)
{
[
'env'
]
}
describe
'#valid?'
do
it
'is not valid'
do
expect
(
entry
).
not_to
be_valid
end
end
describe
'#errors'
do
it
'contains error about invalid type'
do
expect
(
entry
.
errors
)
.
to
include
'environment config should be a hash or a string'
end
end
end
context
'when environment name is not present'
do
let
(
:config
)
{
{
url:
'https://example.gitlab.com'
}
}
describe
'#valid?'
do
it
'is not valid'
do
expect
(
entry
).
not_to
be_valid
end
end
describe
'#errors?'
do
it
'contains error about missing environment name'
do
expect
(
entry
.
errors
)
.
to
include
"environment name can't be blank"
end
end
end
end
end
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment