Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
gpt
large_projects
gitlabhq1
Commits
10637f0b
Commit
10637f0b
authored
7 years ago
by
Pawel Chojnacki
Browse files
Options
Download
Email Patches
Plain Diff
Add first? deployment check to see if a deployment is a first one for given environment
parent
91cb64bf
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
73 additions
and
1 deletion
+73
-1
app/models/deployment.rb
app/models/deployment.rb
+4
-0
app/models/environment.rb
app/models/environment.rb
+1
-0
app/serializers/deployment_entity.rb
app/serializers/deployment_entity.rb
+1
-0
app/serializers/deployment_serializer.rb
app/serializers/deployment_serializer.rb
+1
-1
spec/fixtures/api/schemas/deployments.json
spec/fixtures/api/schemas/deployments.json
+4
-0
spec/models/deployment_spec.rb
spec/models/deployment_spec.rb
+32
-0
spec/models/environment_spec.rb
spec/models/environment_spec.rb
+30
-0
No files found.
app/models/deployment.rb
View file @
10637f0b
...
...
@@ -30,6 +30,10 @@ class Deployment < ActiveRecord::Base
self
==
environment
.
last_deployment
end
def
first?
self
==
environment
.
first_deployment
end
def
create_ref
project
.
repository
.
create_ref
(
ref
,
ref_path
)
end
...
...
This diff is collapsed.
Click to expand it.
app/models/environment.rb
View file @
10637f0b
...
...
@@ -9,6 +9,7 @@ class Environment < ActiveRecord::Base
has_many
:deployments
,
dependent: :destroy
# rubocop:disable Cop/ActiveRecordDependent
has_one
:last_deployment
,
->
{
order
(
'deployments.id DESC'
)
},
class_name:
'Deployment'
has_one
:first_deployment
,
->
{
order
(
'deployments.id ASC'
)
},
class_name:
'Deployment'
before_validation
:nullify_external_url
before_validation
:generate_slug
,
if:
->
(
env
)
{
env
.
slug
.
blank?
}
...
...
This diff is collapsed.
Click to expand it.
app/serializers/deployment_entity.rb
View file @
10637f0b
...
...
@@ -18,6 +18,7 @@ class DeploymentEntity < Grape::Entity
expose
:created_at
expose
:tag
expose
:last?
expose
:first?
expose
:user
,
using:
UserEntity
expose
:commit
,
using:
CommitEntity
...
...
This diff is collapsed.
Click to expand it.
app/serializers/deployment_serializer.rb
View file @
10637f0b
...
...
@@ -2,7 +2,7 @@ class DeploymentSerializer < BaseSerializer
entity
DeploymentEntity
def
represent_concise
(
resource
,
opts
=
{})
opts
[
:only
]
=
[
:iid
,
:id
,
:sha
,
:created_at
,
:tag
,
:last?
,
:id
,
ref:
[
:name
]]
opts
[
:only
]
=
[
:iid
,
:id
,
:sha
,
:created_at
,
:tag
,
:last?
,
:first?
,
:id
,
ref:
[
:name
]]
represent
(
resource
,
opts
)
end
end
This diff is collapsed.
Click to expand it.
spec/fixtures/api/schemas/deployments.json
View file @
10637f0b
...
...
@@ -17,6 +17,9 @@
"last?"
:
{
"type"
:
"boolean"
},
"first?"
:
{
"type"
:
"boolean"
},
"ref"
:
{
"additionalProperties"
:
false
,
"properties"
:
{
...
...
@@ -42,6 +45,7 @@
"iid"
,
"tag"
,
"last?"
,
"first?"
,
"ref"
,
"id"
],
...
...
This diff is collapsed.
Click to expand it.
spec/models/deployment_spec.rb
View file @
10637f0b
...
...
@@ -29,6 +29,38 @@ describe Deployment do
end
end
describe
'#last?'
do
let
(
:environment
)
{
create
(
:environment
)
}
let!
(
:first_deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
let!
(
:middle_deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
let!
(
:last_deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
it
'is true for last deployment '
do
expect
(
last_deployment
.
last?
).
to
be
(
true
)
end
it
'is false for previous deployments'
do
expect
(
middle_deployment
.
last?
).
to
be
(
false
)
expect
(
first_deployment
.
last?
).
to
be
(
false
)
end
end
describe
'#first?'
do
let
(
:environment
)
{
create
(
:environment
)
}
let!
(
:first_deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
let!
(
:second_deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
let!
(
:last_deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
it
'is true for first deployment'
do
expect
(
first_deployment
.
first?
).
to
be
(
true
)
end
it
'is false for subsequent deployments'
do
expect
(
second_deployment
.
first?
).
to
be
(
false
)
expect
(
last_deployment
.
first?
).
to
be
(
false
)
end
end
describe
'#includes_commit?'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:environment
)
{
create
(
:environment
,
project:
project
)
}
...
...
This diff is collapsed.
Click to expand it.
spec/models/environment_spec.rb
View file @
10637f0b
...
...
@@ -154,6 +154,36 @@ describe Environment do
end
end
describe
'#first_deployment'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let!
(
:deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
let!
(
:deployment1
)
{
create
(
:deployment
,
environment:
environment
)
}
let
(
:empty_environment
)
{
create
(
:environment
)
}
it
'returns deployment id for the environment'
do
expect
(
environment
.
first_deployment
).
to
eq
(
deployment
)
end
it
'return nil when no deployment is found'
do
expect
(
empty_environment
.
first_deployment
).
to
eq
(
nil
)
end
end
describe
'#last_deployment'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let!
(
:deployment
)
{
create
(
:deployment
,
environment:
environment
)
}
let!
(
:deployment1
)
{
create
(
:deployment
,
environment:
environment
)
}
let
(
:empty_environment
)
{
create
(
:environment
)
}
it
'returns deployment id for the environment'
do
expect
(
environment
.
last_deployment
).
to
eq
(
deployment1
)
end
it
'return nil when no deployment is found'
do
expect
(
empty_environment
.
last_deployment
).
to
eq
(
nil
)
end
end
describe
'#environment_type'
do
subject
{
environment
.
environment_type
}
...
...
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