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
758df331
Commit
758df331
authored
Dec 09, 2021
by
Reuben Pereira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Merge branch '340057-alias-the-needs-in-the-pipeline-graph' into 'master'"
This reverts merge request !75139
parent
c7d10cb5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
14 additions
and
187 deletions
+14
-187
app/assets/javascripts/pipelines/components/parsing_utils.js
app/assets/javascripts/pipelines/components/parsing_utils.js
+9
-13
app/assets/javascripts/pipelines/components/unwrapping_utils.js
...sets/javascripts/pipelines/components/unwrapping_utils.js
+2
-7
app/assets/javascripts/pipelines/constants.js
app/assets/javascripts/pipelines/constants.js
+0
-2
app/assets/javascripts/pipelines/utils.js
app/assets/javascripts/pipelines/utils.js
+3
-3
app/graphql/queries/pipelines/get_pipeline_details.query.graphql
...phql/queries/pipelines/get_pipeline_details.query.graphql
+0
-8
spec/frontend/pipelines/__snapshots__/utils_spec.js.snap
spec/frontend/pipelines/__snapshots__/utils_spec.js.snap
+0
-29
spec/frontend/pipelines/graph/mock_data.js
spec/frontend/pipelines/graph/mock_data.js
+0
-125
No files found.
app/assets/javascripts/pipelines/components/parsing_utils.js
View file @
758df331
import
{
memoize
}
from
'
lodash
'
;
import
{
createNodeDict
}
from
'
../utils
'
;
import
{
EXPLICIT_NEEDS_PROPERTY
,
NEEDS_PROPERTY
}
from
'
../constants
'
;
import
{
createSankey
}
from
'
./dag/drawing_utils
'
;
/*
...
...
@@ -16,14 +15,12 @@ const deduplicate = (item, itemIndex, arr) => {
return
foundIdx
===
itemIndex
;
};
export
const
makeLinksFromNodes
=
(
nodes
,
nodeDict
,
{
needsKey
=
NEEDS_PROPERTY
}
=
{}
)
=>
{
export
const
makeLinksFromNodes
=
(
nodes
,
nodeDict
)
=>
{
const
constantLinkValue
=
10
;
// all links are the same weight
return
nodes
.
map
(({
jobs
,
name
:
groupName
})
=>
jobs
.
map
((
job
)
=>
{
const
needs
=
job
[
needsKey
]
||
[];
return
needs
.
reduce
((
acc
,
needed
)
=>
{
jobs
.
map
(({
needs
=
[]
})
=>
needs
.
reduce
((
acc
,
needed
)
=>
{
// It's possible that we have an optional job, which
// is being needed by another job. In that scenario,
// the needed job doesn't exist, so we don't want to
...
...
@@ -37,8 +34,8 @@ export const makeLinksFromNodes = (nodes, nodeDict, { needsKey = NEEDS_PROPERTY
}
return
acc
;
},
[])
;
}
),
},
[])
,
),
)
.
flat
(
2
);
};
...
...
@@ -79,9 +76,9 @@ export const filterByAncestors = (links, nodeDict) =>
return
!
allAncestors
.
includes
(
source
);
});
export
const
parseData
=
(
nodes
,
{
needsKey
=
NEEDS_PROPERTY
}
=
{}
)
=>
{
const
nodeDict
=
createNodeDict
(
nodes
,
{
needsKey
}
);
const
allLinks
=
makeLinksFromNodes
(
nodes
,
nodeDict
,
{
needsKey
}
);
export
const
parseData
=
(
nodes
)
=>
{
const
nodeDict
=
createNodeDict
(
nodes
);
const
allLinks
=
makeLinksFromNodes
(
nodes
,
nodeDict
);
const
filteredLinks
=
allLinks
.
filter
(
deduplicate
);
const
links
=
filterByAncestors
(
filteredLinks
,
nodeDict
);
...
...
@@ -126,8 +123,7 @@ export const removeOrphanNodes = (sankeyfiedNodes) => {
export
const
listByLayers
=
({
stages
})
=>
{
const
arrayOfJobs
=
stages
.
flatMap
(({
groups
})
=>
groups
);
const
parsedData
=
parseData
(
arrayOfJobs
);
const
explicitParsedData
=
parseData
(
arrayOfJobs
,
{
needsKey
:
EXPLICIT_NEEDS_PROPERTY
});
const
dataWithLayers
=
createSankey
()(
explicitParsedData
);
const
dataWithLayers
=
createSankey
()(
parsedData
);
const
pipelineLayers
=
dataWithLayers
.
nodes
.
reduce
((
acc
,
{
layer
,
name
})
=>
{
/* sort groups by layer */
...
...
app/assets/javascripts/pipelines/components/unwrapping_utils.js
View file @
758df331
import
{
reportToSentry
}
from
'
../utils
'
;
import
{
EXPLICIT_NEEDS_PROPERTY
,
NEEDS_PROPERTY
}
from
'
../constants
'
;
const
unwrapGroups
=
(
stages
)
=>
{
return
stages
.
map
((
stage
,
idx
)
=>
{
...
...
@@ -28,16 +27,12 @@ const unwrapNodesWithName = (jobArray, prop, field = 'name') => {
}
return
jobArray
.
map
((
job
)
=>
{
if
(
job
[
prop
])
{
return
{
...
job
,
[
prop
]:
job
[
prop
].
nodes
.
map
((
item
)
=>
item
[
field
]
||
''
)
};
}
return
job
;
return
{
...
job
,
[
prop
]:
job
[
prop
].
nodes
.
map
((
item
)
=>
item
[
field
]
||
''
)
};
});
};
const
unwrapJobWithNeeds
=
(
denodedJobArray
)
=>
{
const
explicitNeedsUnwrapped
=
unwrapNodesWithName
(
denodedJobArray
,
EXPLICIT_NEEDS_PROPERTY
);
return
unwrapNodesWithName
(
explicitNeedsUnwrapped
,
NEEDS_PROPERTY
);
return
unwrapNodesWithName
(
denodedJobArray
,
'
needs
'
);
};
const
unwrapStagesWithNeedsAndLookup
=
(
denodedStages
)
=>
{
...
...
app/assets/javascripts/pipelines/constants.js
View file @
758df331
...
...
@@ -7,8 +7,6 @@ export const ANY_TRIGGER_AUTHOR = 'Any';
export
const
SUPPORTED_FILTER_PARAMETERS
=
[
'
username
'
,
'
ref
'
,
'
status
'
,
'
source
'
];
export
const
FILTER_TAG_IDENTIFIER
=
'
tag
'
;
export
const
SCHEDULE_ORIGIN
=
'
schedule
'
;
export
const
NEEDS_PROPERTY
=
'
needs
'
;
export
const
EXPLICIT_NEEDS_PROPERTY
=
'
previousStageJobsOrNeeds
'
;
export
const
TestStatus
=
{
FAILED
:
'
failed
'
,
...
...
app/assets/javascripts/pipelines/utils.js
View file @
758df331
import
*
as
Sentry
from
'
@sentry/browser
'
;
import
{
pickBy
}
from
'
lodash
'
;
import
{
SUPPORTED_FILTER_PARAMETERS
,
NEEDS_PROPERTY
}
from
'
./constants
'
;
import
{
SUPPORTED_FILTER_PARAMETERS
}
from
'
./constants
'
;
/*
The following functions are the main engine in transforming the data as
...
...
@@ -35,11 +35,11 @@ import { SUPPORTED_FILTER_PARAMETERS, NEEDS_PROPERTY } from './constants';
10 -> value (constant)
*/
export
const
createNodeDict
=
(
nodes
,
{
needsKey
=
NEEDS_PROPERTY
}
=
{}
)
=>
{
export
const
createNodeDict
=
(
nodes
)
=>
{
return
nodes
.
reduce
((
acc
,
node
)
=>
{
const
newNode
=
{
...
node
,
needs
:
node
.
jobs
.
map
((
job
)
=>
job
[
needsKey
]
||
[]).
flat
(),
needs
:
node
.
jobs
.
map
((
job
)
=>
job
.
needs
||
[]).
flat
(),
};
if
(
node
.
size
>
1
)
{
...
...
app/graphql/queries/pipelines/get_pipeline_details.query.graphql
View file @
758df331
...
...
@@ -91,14 +91,6 @@ query getPipelineDetails($projectPath: ID!, $iid: ID!) {
name
}
}
previousStageJobsOrNeeds
{
__typename
nodes
{
__typename
id
name
}
}
status
:
detailedStatus
{
__typename
id
...
...
spec/frontend/pipelines/__snapshots__/utils_spec.js.snap
View file @
758df331
...
...
@@ -13,7 +13,6 @@ Array [
"id": "6",
"name": "build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -54,7 +53,6 @@ Array [
"id": "11",
"name": "build_b",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -95,7 +93,6 @@ Array [
"id": "16",
"name": "build_c",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -136,7 +133,6 @@ Array [
"id": "21",
"name": "build_d 1/3",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -161,7 +157,6 @@ Array [
"id": "24",
"name": "build_d 2/3",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -186,7 +181,6 @@ Array [
"id": "27",
"name": "build_d 3/3",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -227,7 +221,6 @@ Array [
"id": "59",
"name": "test_c",
"needs": Array [],
"previousStageJobsOrNeeds": Array [],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -274,11 +267,6 @@ Array [
"build_b",
"build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
],
"previousStageJobsOrNeeds": Array [
"build_c",
"build_b",
"build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -325,13 +313,6 @@ Array [
"build_b",
"build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
],
"previousStageJobsOrNeeds": Array [
"build_d 3/3",
"build_d 2/3",
"build_d 1/3",
"build_b",
"build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -362,13 +343,6 @@ Array [
"build_b",
"build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
],
"previousStageJobsOrNeeds": Array [
"build_d 3/3",
"build_d 2/3",
"build_d 1/3",
"build_b",
"build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl",
],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
@@ -411,9 +385,6 @@ Array [
"needs": Array [
"build_b",
],
"previousStageJobsOrNeeds": Array [
"build_b",
],
"scheduledAt": null,
"status": Object {
"__typename": "DetailedStatus",
...
...
spec/frontend/pipelines/graph/mock_data.js
View file @
758df331
...
...
@@ -73,10 +73,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
],
},
...
...
@@ -122,10 +118,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
],
},
...
...
@@ -171,10 +163,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
],
},
...
...
@@ -220,10 +208,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
{
__typename
:
'
CiJob
'
,
...
...
@@ -251,10 +235,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
{
__typename
:
'
CiJob
'
,
...
...
@@ -282,10 +262,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
],
},
...
...
@@ -363,27 +339,6 @@ export const mockPipelineResponse = {
},
],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
37
'
,
name
:
'
build_c
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
38
'
,
name
:
'
build_b
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
39
'
,
name
:
'
build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl
'
,
},
],
},
},
],
},
...
...
@@ -456,37 +411,6 @@ export const mockPipelineResponse = {
},
],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
45
'
,
name
:
'
build_d 3/3
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
46
'
,
name
:
'
build_d 2/3
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
47
'
,
name
:
'
build_d 1/3
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
48
'
,
name
:
'
build_b
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
49
'
,
name
:
'
build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl
'
,
},
],
},
},
{
__typename
:
'
CiJob
'
,
...
...
@@ -541,37 +465,6 @@ export const mockPipelineResponse = {
},
],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
52
'
,
name
:
'
build_d 3/3
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
53
'
,
name
:
'
build_d 2/3
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
54
'
,
name
:
'
build_d 1/3
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
55
'
,
name
:
'
build_b
'
,
},
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
56
'
,
name
:
'
build_a_nlfjkdnlvskfnksvjknlfdjvlvnjdkjdf_nvjkenjkrlngjeknjkl
'
,
},
],
},
},
],
},
...
...
@@ -610,10 +503,6 @@ export const mockPipelineResponse = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
},
],
},
...
...
@@ -658,16 +547,6 @@ export const mockPipelineResponse = {
},
],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[
{
__typename
:
'
CiBuildNeed
'
,
id
:
'
65
'
,
name
:
'
build_b
'
,
},
],
},
},
],
},
...
...
@@ -841,10 +720,6 @@ export const wrappedPipelineReturn = {
__typename
:
'
CiBuildNeedConnection
'
,
nodes
:
[],
},
previousStageJobsOrNeeds
:
{
__typename
:
'
CiJobConnection
'
,
nodes
:
[],
},
status
:
{
__typename
:
'
DetailedStatus
'
,
id
:
'
84
'
,
...
...
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