BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
05ddb259
Commit
05ddb259
authored
Jan 05, 2018
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Assign stage and pipeline to a status when importing
parent
099a59e8
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
80 additions
and
22 deletions
+80
-22
build.rb
app/models/ci/build.rb
+1
-1
import_export.yml
lib/gitlab/import_export/import_export.yml
+1
-1
relation_factory.rb
lib/gitlab/import_export/relation_factory.rb
+13
-5
project.json
spec/lib/gitlab/import_export/project.json
+56
-12
project_tree_restorer_spec.rb
spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
+9
-3
No files found.
app/models/ci/build.rb
View file @
05ddb259
...
@@ -79,7 +79,7 @@ module Ci
...
@@ -79,7 +79,7 @@ module Ci
before_save
:ensure_token
before_save
:ensure_token
before_destroy
{
unscoped_project
}
before_destroy
{
unscoped_project
}
after_create
do
|
build
|
after_create
unless: :importing?
do
|
build
|
run_after_commit
{
BuildHooksWorker
.
perform_async
(
build
.
id
)
}
run_after_commit
{
BuildHooksWorker
.
perform_async
(
build
.
id
)
}
end
end
...
...
lib/gitlab/import_export/import_export.yml
View file @
05ddb259
...
@@ -49,7 +49,7 @@ project_tree:
...
@@ -49,7 +49,7 @@ project_tree:
-
:author
-
:author
-
events
:
-
events
:
-
:push_event_payload
-
:push_event_payload
-
:stages
-
stages
:
-
:statuses
-
:statuses
-
:auto_devops
-
:auto_devops
-
:triggers
-
:triggers
...
...
lib/gitlab/import_export/relation_factory.rb
View file @
05ddb259
...
@@ -62,6 +62,7 @@ module Gitlab
...
@@ -62,6 +62,7 @@ module Gitlab
when
:notes
then
setup_note
when
:notes
then
setup_note
when
:project_label
,
:project_labels
then
setup_label
when
:project_label
,
:project_labels
then
setup_label
when
:milestone
,
:milestones
then
setup_milestone
when
:milestone
,
:milestones
then
setup_milestone
when
'Ci::Pipeline'
then
setup_pipeline
else
else
@relation_hash
[
'project_id'
]
=
@project
.
id
@relation_hash
[
'project_id'
]
=
@project
.
id
end
end
...
@@ -112,9 +113,7 @@ module Gitlab
...
@@ -112,9 +113,7 @@ module Gitlab
@relation_hash
.
delete
(
'trace'
)
# old export files have trace
@relation_hash
.
delete
(
'trace'
)
# old export files have trace
@relation_hash
.
delete
(
'token'
)
@relation_hash
.
delete
(
'token'
)
imported_object
do
|
object
|
imported_object
object
.
commit_id
=
nil
end
elsif
@relation_name
==
:merge_requests
elsif
@relation_name
==
:merge_requests
MergeRequestParser
.
new
(
@project
,
@relation_hash
.
delete
(
'diff_head_sha'
),
imported_object
,
@relation_hash
).
parse!
MergeRequestParser
.
new
(
@project
,
@relation_hash
.
delete
(
'diff_head_sha'
),
imported_object
,
@relation_hash
).
parse!
else
else
...
@@ -182,8 +181,9 @@ module Gitlab
...
@@ -182,8 +181,9 @@ module Gitlab
end
end
def
imported_object
def
imported_object
yield
(
existing_or_new_object
)
if
block_given?
if
existing_or_new_object
.
respond_to?
(
:importing
)
existing_or_new_object
.
importing
=
true
if
existing_or_new_object
.
respond_to?
(
:importing
)
existing_or_new_object
.
importing
=
true
end
existing_or_new_object
existing_or_new_object
rescue
ActiveRecord
::
RecordNotUnique
rescue
ActiveRecord
::
RecordNotUnique
...
@@ -211,6 +211,14 @@ module Gitlab
...
@@ -211,6 +211,14 @@ module Gitlab
@relation_hash
[
'diff'
]
=
@relation_hash
.
delete
(
'utf8_diff'
)
@relation_hash
[
'diff'
]
=
@relation_hash
.
delete
(
'utf8_diff'
)
end
end
def
setup_pipeline
@relation_hash
.
fetch
(
'stages'
).
each
do
|
stage
|
stage
.
statuses
.
each
do
|
status
|
status
.
pipeline
=
imported_object
end
end
end
def
existing_or_new_object
def
existing_or_new_object
# Only find existing records to avoid mapping tables such as milestones
# Only find existing records to avoid mapping tables such as milestones
# Otherwise always create the record, skipping the extra SELECT clause.
# Otherwise always create the record, skipping the extra SELECT clause.
...
...
spec/lib/gitlab/import_export/project.json
View file @
05ddb259
...
@@ -6473,18 +6473,7 @@
...
@@ -6473,18 +6473,7 @@
"name"
:
"test"
,
"name"
:
"test"
,
"status"
:
1
,
"status"
:
1
,
"created_at"
:
"2016-03-22T15:44:44.772Z"
,
"created_at"
:
"2016-03-22T15:44:44.772Z"
,
"updated_at"
:
"2016-03-29T06:44:44.634Z"
"updated_at"
:
"2016-03-29T06:44:44.634Z"
,
},
{
"id"
:
12
,
"project_id"
:
5
,
"pipeline_id"
:
36
,
"name"
:
"deploy"
,
"status"
:
2
,
"created_at"
:
"2016-03-22T15:45:45.772Z"
,
"updated_at"
:
"2016-03-29T06:45:45.634Z"
}
],
"statuses"
:
[
"statuses"
:
[
{
{
"id"
:
71
,
"id"
:
71
,
...
@@ -6563,6 +6552,17 @@
...
@@ -6563,6 +6552,17 @@
]
]
},
},
{
{
"id"
:
12
,
"project_id"
:
5
,
"pipeline_id"
:
36
,
"name"
:
"deploy"
,
"status"
:
2
,
"created_at"
:
"2016-03-22T15:45:45.772Z"
,
"updated_at"
:
"2016-03-29T06:45:45.634Z"
}
]
},
{
"id"
:
37
,
"id"
:
37
,
"project_id"
:
5
,
"project_id"
:
5
,
"ref"
:
null
,
"ref"
:
null
,
...
@@ -6578,6 +6578,15 @@
...
@@ -6578,6 +6578,15 @@
"started_at"
:
null
,
"started_at"
:
null
,
"finished_at"
:
null
,
"finished_at"
:
null
,
"duration"
:
null
,
"duration"
:
null
,
"stages"
:
[
{
"id"
:
21
,
"project_id"
:
5
,
"pipeline_id"
:
37
,
"name"
:
"test"
,
"status"
:
1
,
"created_at"
:
"2016-03-22T15:44:44.772Z"
,
"updated_at"
:
"2016-03-29T06:44:44.634Z"
,
"statuses"
:
[
"statuses"
:
[
{
{
"id"
:
74
,
"id"
:
74
,
...
@@ -6650,6 +6659,8 @@
...
@@ -6650,6 +6659,8 @@
"erased_at"
:
null
"erased_at"
:
null
}
}
]
]
}
]
},
},
{
{
"id"
:
38
,
"id"
:
38
,
...
@@ -6667,6 +6678,15 @@
...
@@ -6667,6 +6678,15 @@
"started_at"
:
null
,
"started_at"
:
null
,
"finished_at"
:
null
,
"finished_at"
:
null
,
"duration"
:
null
,
"duration"
:
null
,
"stages"
:
[
{
"id"
:
22
,
"project_id"
:
5
,
"pipeline_id"
:
38
,
"name"
:
"test"
,
"status"
:
1
,
"created_at"
:
"2016-03-22T15:44:44.772Z"
,
"updated_at"
:
"2016-03-29T06:44:44.634Z"
,
"statuses"
:
[
"statuses"
:
[
{
{
"id"
:
76
,
"id"
:
76
,
...
@@ -6739,6 +6759,8 @@
...
@@ -6739,6 +6759,8 @@
"erased_at"
:
null
"erased_at"
:
null
}
}
]
]
}
]
},
},
{
{
"id"
:
39
,
"id"
:
39
,
...
@@ -6756,6 +6778,15 @@
...
@@ -6756,6 +6778,15 @@
"started_at"
:
null
,
"started_at"
:
null
,
"finished_at"
:
null
,
"finished_at"
:
null
,
"duration"
:
null
,
"duration"
:
null
,
"stages"
:
[
{
"id"
:
23
,
"project_id"
:
5
,
"pipeline_id"
:
39
,
"name"
:
"test"
,
"status"
:
1
,
"created_at"
:
"2016-03-22T15:44:44.772Z"
,
"updated_at"
:
"2016-03-29T06:44:44.634Z"
,
"statuses"
:
[
"statuses"
:
[
{
{
"id"
:
78
,
"id"
:
78
,
...
@@ -6828,6 +6859,8 @@
...
@@ -6828,6 +6859,8 @@
"erased_at"
:
null
"erased_at"
:
null
}
}
]
]
}
]
},
},
{
{
"id"
:
40
,
"id"
:
40
,
...
@@ -6845,6 +6878,15 @@
...
@@ -6845,6 +6878,15 @@
"started_at"
:
null
,
"started_at"
:
null
,
"finished_at"
:
null
,
"finished_at"
:
null
,
"duration"
:
null
,
"duration"
:
null
,
"stages"
:
[
{
"id"
:
24
,
"project_id"
:
5
,
"pipeline_id"
:
40
,
"name"
:
"test"
,
"status"
:
1
,
"created_at"
:
"2016-03-22T15:44:44.772Z"
,
"updated_at"
:
"2016-03-29T06:44:44.634Z"
,
"statuses"
:
[
"statuses"
:
[
{
{
"id"
:
79
,
"id"
:
79
,
...
@@ -6918,6 +6960,8 @@
...
@@ -6918,6 +6960,8 @@
}
}
]
]
}
}
]
}
],
],
"triggers"
:
[
"triggers"
:
[
{
{
...
...
spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
View file @
05ddb259
...
@@ -181,14 +181,20 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
...
@@ -181,14 +181,20 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
end
end
context
'when restoring hierarchy of pipeline, stages and jobs'
do
context
'when restoring hierarchy of pipeline, stages and jobs'
do
let
(
:pipeline
)
{
Ci
::
Pipeline
.
first
}
it
'restores statuses'
do
expect
(
CommitStatus
.
all
.
count
).
to
be
10
end
it
'restores pipeline stages'
do
it
'restores pipeline stages'
do
expect
(
pipeline
.
stages
.
count
).
to
be
2
expect
(
Ci
::
Stage
.
all
.
count
).
to
be
6
end
end
it
'correctly restores association between a stage and a job'
do
it
'correctly restores association between a stage and a job'
do
expect
(
pipeline
.
statuses
).
to
all
(
have_attributes
(
stage_id:
a_value
>
0
))
expect
(
CommitStatus
.
all
).
to
all
(
have_attributes
(
stage_id:
a_value
>
0
))
end
it
'correctly restores association between a stage and a pipeline'
do
expect
(
CommitStatus
.
all
).
to
all
(
have_attributes
(
pipeline_id:
a_value
>
0
))
end
end
end
end
end
end
...
...
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