Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
97559bbbbd0e
Commit
97559bbb
authored
Apr 24, 2020
by
GitLab Bot
Browse files
Add latest changes from gitlab-org/gitlab@12-10-stable-ee
parent
cdd0ddf79e8e
Changes
64
Hide whitespace changes
Inline
Side-by-side
app/assets/javascripts/diffs/store/getters_versions_dropdowns.js
View file @
97559bbb
...
...
@@ -39,7 +39,11 @@
...
v
,
};
};
return
[...
state
.
mergeRequestDiffs
.
slice
(
1
).
map
(
formatVersion
),
baseVersion
,
headVersion
];
if
(
gon
.
features
?.
diffCompareWithHead
)
{
return
[...
state
.
mergeRequestDiffs
.
slice
(
1
).
map
(
formatVersion
),
baseVersion
,
headVersion
];
}
return
[...
state
.
mergeRequestDiffs
.
slice
(
1
).
map
(
formatVersion
),
baseVersion
];
};
export
const
diffCompareDropdownSourceVersions
=
(
state
,
getters
)
=>
{
...
...
app/assets/javascripts/ide/stores/mutations.js
View file @
97559bbb
...
...
@@ -216,4 +216,8 @@
if
(
entry
.
type
===
'
blob
'
)
{
if
(
tempFile
)
{
// Since we only support one list of file changes, it's safe to just remove from both
// changed and staged. Otherwise, we'd need to somehow evaluate the difference between
// changed and HEAD.
// https://gitlab.com/gitlab-org/create-stage/-/issues/12669
state
.
changedFiles
=
state
.
changedFiles
.
filter
(
f
=>
f
.
path
!==
path
);
...
...
@@ -219,4 +223,5 @@
state
.
changedFiles
=
state
.
changedFiles
.
filter
(
f
=>
f
.
path
!==
path
);
state
.
stagedFiles
=
state
.
stagedFiles
.
filter
(
f
=>
f
.
path
!==
path
);
}
else
{
state
.
changedFiles
=
state
.
changedFiles
.
concat
(
entry
);
}
...
...
app/assets/javascripts/pages/admin/services/edit/index.js
0 → 100644
View file @
97559bbb
import
IntegrationSettingsForm
from
'
~/integrations/integration_settings_form
'
;
import
initAlertsSettings
from
'
~/alerts_service_settings
'
;
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
const
integrationSettingsForm
=
new
IntegrationSettingsForm
(
'
.js-integration-settings-form
'
);
integrationSettingsForm
.
init
();
initAlertsSettings
(
document
.
querySelector
(
'
.js-alerts-service-settings
'
));
});
app/assets/javascripts/pages/groups/settings/ci_cd/show/index.js
View file @
97559bbb
import
initSettingsPanels
from
'
~/settings_panels
'
;
import
AjaxVariableList
from
'
~/ci_variable_list/ajax_variable_list
'
;
import
initVariableList
from
'
~/ci_variable_list
'
;
import
DueDateSelectors
from
'
~/due_date_select
'
;
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
// Initialize expandable settings panels
initSettingsPanels
();
...
...
@@ -5,9 +4,7 @@
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
// Initialize expandable settings panels
initSettingsPanels
();
// eslint-disable-next-line no-new
new
DueDateSelectors
();
if
(
gon
.
features
.
newVariablesUi
)
{
initVariableList
();
...
...
app/assets/javascripts/pages/groups/settings/repository/show/index.js
0 → 100644
View file @
97559bbb
import
initSettingsPanels
from
'
~/settings_panels
'
;
import
DueDateSelectors
from
'
~/due_date_select
'
;
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
// Initialize expandable settings panels
initSettingsPanels
();
new
DueDateSelectors
();
// eslint-disable-line no-new
});
app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js
View file @
97559bbb
...
...
@@ -3,7 +3,6 @@
import
AjaxVariableList
from
'
~/ci_variable_list/ajax_variable_list
'
;
import
registrySettingsApp
from
'
~/registry/settings/registry_settings_bundle
'
;
import
initVariableList
from
'
~/ci_variable_list
'
;
import
DueDateSelectors
from
'
~/due_date_select
'
;
import
initDeployKeys
from
'
~/deploy_keys
'
;
document
.
addEventListener
(
'
DOMContentLoaded
'
,
()
=>
{
...
...
@@ -41,9 +40,6 @@
autoDevOpsExtraSettings
.
classList
.
toggle
(
'
hidden
'
,
!
target
.
checked
);
});
// eslint-disable-next-line no-new
new
DueDateSelectors
();
registrySettingsApp
();
initDeployKeys
();
});
app/controllers/groups/deploy_tokens_controller.rb
View file @
97559bbb
...
...
@@ -7,6 +7,6 @@
@token
=
@group
.
deploy_tokens
.
find
(
params
[
:id
])
@token
.
revoke!
redirect_to
group_settings_
ci_cd
_path
(
@group
,
anchor:
'js-deploy-tokens'
)
redirect_to
group_settings_
repository
_path
(
@group
,
anchor:
'js-deploy-tokens'
)
end
end
app/controllers/groups/settings/ci_cd_controller.rb
View file @
97559bbb
...
...
@@ -8,5 +8,4 @@
before_action
:authorize_update_max_artifacts_size!
,
only:
[
:update
]
before_action
do
push_frontend_feature_flag
(
:new_variables_ui
,
@group
,
default_enabled:
true
)
push_frontend_feature_flag
(
:ajax_new_deploy_token
,
@group
)
end
...
...
@@ -12,5 +11,5 @@
end
before_action
:define_variables
,
only:
[
:show
,
:create_deploy_token
]
before_action
:define_variables
,
only:
[
:show
]
def
show
end
...
...
@@ -42,34 +41,7 @@
redirect_to
group_settings_ci_cd_path
end
def
create_deploy_token
result
=
Groups
::
DeployTokens
::
CreateService
.
new
(
@group
,
current_user
,
deploy_token_params
).
execute
@new_deploy_token
=
result
[
:deploy_token
]
if
result
[
:status
]
==
:success
respond_to
do
|
format
|
format
.
json
do
# IMPORTANT: It's a security risk to expose the token value more than just once here!
json
=
API
::
Entities
::
DeployTokenWithToken
.
represent
(
@new_deploy_token
).
as_json
render
json:
json
,
status:
result
[
:http_status
]
end
format
.
html
do
flash
.
now
[
:notice
]
=
s_
(
'DeployTokens|Your new group deploy token has been created.'
)
render
:show
end
end
else
respond_to
do
|
format
|
format
.
json
{
render
json:
{
message:
result
[
:message
]
},
status:
result
[
:http_status
]
}
format
.
html
do
flash
.
now
[
:alert
]
=
result
[
:message
]
render
:show
end
end
end
end
private
def
define_variables
define_ci_variables
...
...
@@ -72,8 +44,7 @@
private
def
define_variables
define_ci_variables
define_deploy_token_variables
end
def
define_ci_variables
...
...
@@ -83,12 +54,6 @@
.
map
{
|
variable
|
variable
.
present
(
current_user:
current_user
)
}
end
def
define_deploy_token_variables
@deploy_tokens
=
@group
.
deploy_tokens
.
active
@new_deploy_token
=
DeployToken
.
new
end
def
authorize_admin_group!
return
render_404
unless
can?
(
current_user
,
:admin_group
,
group
)
end
...
...
@@ -112,10 +77,6 @@
def
update_group_params
params
.
require
(
:group
).
permit
(
:max_artifacts_size
)
end
def
deploy_token_params
params
.
require
(
:deploy_token
).
permit
(
:name
,
:expires_at
,
:read_repository
,
:read_registry
,
:write_registry
,
:username
)
end
end
end
end
app/controllers/groups/settings/repository_controller.rb
0 → 100644
View file @
97559bbb
# frozen_string_literal: true
module
Groups
module
Settings
class
RepositoryController
<
Groups
::
ApplicationController
skip_cross_project_access_check
:show
before_action
:authorize_admin_group!
before_action
:define_deploy_token_variables
before_action
do
push_frontend_feature_flag
(
:ajax_new_deploy_token
,
@group
)
end
def
create_deploy_token
result
=
Groups
::
DeployTokens
::
CreateService
.
new
(
@group
,
current_user
,
deploy_token_params
).
execute
@new_deploy_token
=
result
[
:deploy_token
]
if
result
[
:status
]
==
:success
respond_to
do
|
format
|
format
.
json
do
# IMPORTANT: It's a security risk to expose the token value more than just once here!
json
=
API
::
Entities
::
DeployTokenWithToken
.
represent
(
@new_deploy_token
).
as_json
render
json:
json
,
status:
result
[
:http_status
]
end
format
.
html
do
flash
.
now
[
:notice
]
=
s_
(
'DeployTokens|Your new group deploy token has been created.'
)
render
:show
end
end
else
respond_to
do
|
format
|
format
.
json
{
render
json:
{
message:
result
[
:message
]
},
status:
result
[
:http_status
]
}
format
.
html
do
flash
.
now
[
:alert
]
=
result
[
:message
]
render
:show
end
end
end
end
private
def
define_deploy_token_variables
@deploy_tokens
=
@group
.
deploy_tokens
.
active
@new_deploy_token
=
DeployToken
.
new
end
def
deploy_token_params
params
.
require
(
:deploy_token
).
permit
(
:name
,
:expires_at
,
:read_repository
,
:read_registry
,
:write_registry
,
:username
)
end
end
end
end
app/controllers/projects/deploy_tokens_controller.rb
View file @
97559bbb
...
...
@@ -7,6 +7,6 @@
@token
=
@project
.
deploy_tokens
.
find
(
params
[
:id
])
@token
.
revoke!
redirect_to
project_settings_
ci_cd
_path
(
project
,
anchor:
'js-deploy-tokens'
)
redirect_to
project_settings_
repository
_path
(
project
,
anchor:
'js-deploy-tokens'
)
end
end
app/controllers/projects/merge_requests_controller.rb
View file @
97559bbb
...
...
@@ -26,6 +26,7 @@
push_frontend_feature_flag
(
:code_navigation
,
@project
)
push_frontend_feature_flag
(
:widget_visibility_polling
,
@project
,
default_enabled:
true
)
push_frontend_feature_flag
(
:merge_ref_head_comments
,
@project
)
push_frontend_feature_flag
(
:diff_compare_with_head
,
@project
)
end
before_action
do
...
...
app/controllers/projects/settings/ci_cd_controller.rb
View file @
97559bbb
...
...
@@ -48,33 +48,6 @@
redirect_to
namespace_project_settings_ci_cd_path
end
def
create_deploy_token
result
=
Projects
::
DeployTokens
::
CreateService
.
new
(
@project
,
current_user
,
deploy_token_params
).
execute
@new_deploy_token
=
result
[
:deploy_token
]
if
result
[
:status
]
==
:success
respond_to
do
|
format
|
format
.
json
do
# IMPORTANT: It's a security risk to expose the token value more than just once here!
json
=
API
::
Entities
::
DeployTokenWithToken
.
represent
(
@new_deploy_token
).
as_json
render
json:
json
,
status:
result
[
:http_status
]
end
format
.
html
do
flash
.
now
[
:notice
]
=
s_
(
'DeployTokens|Your new project deploy token has been created.'
)
render
:show
end
end
else
respond_to
do
|
format
|
format
.
json
{
render
json:
{
message:
result
[
:message
]
},
status:
result
[
:http_status
]
}
format
.
html
do
flash
.
now
[
:alert
]
=
result
[
:message
]
render
:show
end
end
end
end
private
def
update_params
...
...
@@ -93,10 +66,6 @@
end
end
def
deploy_token_params
params
.
require
(
:deploy_token
).
permit
(
:name
,
:expires_at
,
:read_repository
,
:read_registry
,
:write_registry
,
:username
)
end
def
run_autodevops_pipeline
(
service
)
return
unless
service
.
run_auto_devops_pipeline?
...
...
@@ -116,7 +85,6 @@
def
define_variables
define_runners_variables
define_ci_variables
define_deploy_token_variables
define_triggers_variables
define_badges_variables
define_auto_devops_variables
...
...
@@ -168,12 +136,6 @@
@auto_devops
=
@project
.
auto_devops
||
ProjectAutoDevops
.
new
end
def
define_deploy_token_variables
@deploy_tokens
=
@project
.
deploy_tokens
.
active
@new_deploy_token
=
DeployToken
.
new
end
def
define_deploy_keys
@deploy_keys
=
DeployKeysPresenter
.
new
(
@project
,
current_user:
current_user
)
end
...
...
app/controllers/projects/settings/repository_controller.rb
View file @
97559bbb
...
...
@@ -4,7 +4,10 @@
module
Settings
class
RepositoryController
<
Projects
::
ApplicationController
before_action
:authorize_admin_project!
before_action
:remote_mirror
,
only:
[
:show
]
before_action
:define_variables
,
only:
[
:create_deploy_token
]
before_action
do
push_frontend_feature_flag
(
:ajax_new_deploy_token
,
@project
)
end
def
show
render_show
...
...
@@ -24,6 +27,33 @@
redirect_to
project_settings_repository_path
(
project
)
end
def
create_deploy_token
result
=
Projects
::
DeployTokens
::
CreateService
.
new
(
@project
,
current_user
,
deploy_token_params
).
execute
@new_deploy_token
=
result
[
:deploy_token
]
if
result
[
:status
]
==
:success
respond_to
do
|
format
|
format
.
json
do
# IMPORTANT: It's a security risk to expose the token value more than just once here!
json
=
API
::
Entities
::
DeployTokenWithToken
.
represent
(
@new_deploy_token
).
as_json
render
json:
json
,
status:
result
[
:http_status
]
end
format
.
html
do
flash
.
now
[
:notice
]
=
s_
(
'DeployTokens|Your new project deploy token has been created.'
)
render
:show
end
end
else
respond_to
do
|
format
|
format
.
json
{
render
json:
{
message:
result
[
:message
]
},
status:
result
[
:http_status
]
}
format
.
html
do
flash
.
now
[
:alert
]
=
result
[
:message
]
render
:show
end
end
end
end
private
def
render_show
...
...
@@ -27,5 +57,12 @@
private
def
render_show
define_variables
render
'show'
end
def
define_variables
define_deploy_token_variables
define_protected_refs
remote_mirror
...
...
@@ -30,7 +67,5 @@
define_protected_refs
remote_mirror
render
'show'
end
# rubocop: disable CodeReuse/ActiveRecord
...
...
@@ -51,6 +86,10 @@
@remote_mirror
=
project
.
remote_mirrors
.
first_or_initialize
end
def
deploy_token_params
params
.
require
(
:deploy_token
).
permit
(
:name
,
:expires_at
,
:read_repository
,
:read_registry
,
:write_registry
,
:username
)
end
def
access_levels_options
{
create_access_levels:
levels_for_dropdown
,
...
...
@@ -74,6 +113,12 @@
{
open_branches:
ProtectableDropdown
.
new
(
@project
,
:branches
).
hash
}
end
def
define_deploy_token_variables
@deploy_tokens
=
@project
.
deploy_tokens
.
active
@new_deploy_token
||=
DeployToken
.
new
end
def
load_gon_index
gon
.
push
(
protectable_tags_for_dropdown
)
gon
.
push
(
protectable_branches_for_dropdown
)
...
...
app/helpers/analytics/navbar_helper.rb
0 → 100644
View file @
97559bbb
# frozen_string_literal: true
module
Analytics
module
NavbarHelper
class
NavbarSubItem
attr_reader
:title
,
:path
,
:link
,
:link_to_options
def
initialize
(
title
:,
path
:,
link
:,
link_to_options:
{})
@title
=
title
@path
=
path
@link
=
link
@link_to_options
=
link_to_options
.
merge
(
title:
title
)
end
end
def
project_analytics_navbar_links
(
project
,
current_user
)
[
cycle_analytics_navbar_link
(
project
,
current_user
),
repository_analytics_navbar_link
(
project
,
current_user
),
ci_cd_analytics_navbar_link
(
project
,
current_user
)
].
compact
end
def
group_analytics_navbar_links
(
group
,
current_user
)
[]
end
private
def
navbar_sub_item
(
args
)
NavbarSubItem
.
new
(
args
)
end
def
cycle_analytics_navbar_link
(
project
,
current_user
)
return
unless
project_nav_tab?
(
:cycle_analytics
)
navbar_sub_item
(
title:
_
(
'Value Stream'
),
path:
'cycle_analytics#show'
,
link:
project_cycle_analytics_path
(
project
),
link_to_options:
{
class:
'shortcuts-project-cycle-analytics'
}
)
end
def
repository_analytics_navbar_link
(
project
,
current_user
)
return
if
project
.
empty_repo?
navbar_sub_item
(
title:
_
(
'Repository'
),
path:
'graphs#charts'
,
link:
charts_project_graph_path
(
project
,
current_ref
),
link_to_options:
{
class:
'shortcuts-repository-charts'
}
)
end
def
ci_cd_analytics_navbar_link
(
project
,
current_user
)
return
unless
project_nav_tab?
(
:pipelines
)
return
unless
project
.
feature_available?
(
:builds
,
current_user
)
||
!
project
.
empty_repo?
navbar_sub_item
(
title:
_
(
'CI / CD'
),
path:
'pipelines#charts'
,
link:
charts_project_pipelines_path
(
project
)
)
end
end
end
Analytics
::
NavbarHelper
.
prepend_if_ee
(
'EE::Analytics::NavbarHelper'
)
app/helpers/analytics_navbar_helper.rb
deleted
100644 → 0
View file @
cdd0ddf7
# frozen_string_literal: true
module
AnalyticsNavbarHelper
class
NavbarSubItem
attr_reader
:title
,
:path
,
:link
,
:link_to_options
def
initialize
(
title
:,
path
:,
link
:,
link_to_options:
{})
@title
=
title
@path
=
path
@link
=
link
@link_to_options
=
link_to_options
.
merge
(
title:
title
)
end
end
def
project_analytics_navbar_links
(
project
,
current_user
)
[
cycle_analytics_navbar_link
(
project
,
current_user
),
repository_analytics_navbar_link
(
project
,
current_user
),
ci_cd_analytics_navbar_link
(
project
,
current_user
)
].
compact
end
def
group_analytics_navbar_links
(
group
,
current_user
)
[]
end
private
def
navbar_sub_item
(
args
)
NavbarSubItem
.
new
(
args
)
end
def
cycle_analytics_navbar_link
(
project
,
current_user
)
return
unless
project_nav_tab?
(
:cycle_analytics
)
navbar_sub_item
(
title:
_
(
'Value Stream'
),
path:
'cycle_analytics#show'
,
link:
project_cycle_analytics_path
(
project
),
link_to_options:
{
class:
'shortcuts-project-cycle-analytics'
}
)
end
def
repository_analytics_navbar_link
(
project
,
current_user
)
return
if
project
.
empty_repo?
navbar_sub_item
(
title:
_
(
'Repository'
),
path:
'graphs#charts'
,
link:
charts_project_graph_path
(
project
,
current_ref
),
link_to_options:
{
class:
'shortcuts-repository-charts'
}
)
end
def
ci_cd_analytics_navbar_link
(
project
,
current_user
)
return
unless
project_nav_tab?
(
:pipelines
)
return
unless
project
.
feature_available?
(
:builds
,
current_user
)
||
!
project
.
empty_repo?
navbar_sub_item
(
title:
_
(
'CI / CD'
),
path:
'pipelines#charts'
,
link:
charts_project_pipelines_path
(
project
)
)
end
end
AnalyticsNavbarHelper
.
prepend_if_ee
(
'EE::AnalyticsNavbarHelper'
)
app/helpers/ci_variables_helper.rb
View file @
97559bbb
...
...
@@ -7,7 +7,7 @@
def
create_deploy_token_path
(
entity
,
opts
=
{})
if
entity
.
is_a?
(
Group
)
create_deploy_token_group_settings_
ci_cd
_path
(
entity
,
opts
)
create_deploy_token_group_settings_
repository
_path
(
entity
,
opts
)
else
# TODO: change this path to 'create_deploy_token_project_settings_ci_cd_path'
# See MR comment for more detail: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27059#note_311585356
...
...
app/helpers/explore_helper.rb
View file @
97559bbb
...
...
@@ -52,7 +52,7 @@
end
def
public_visibility_restricted?
Gitlab
::
CurrentSettings
.
restricted_visibility_levels
.
include?
Gitlab
::
VisibilityLevel
::
PUBLIC
Gitlab
::
CurrentSettings
.
restricted_visibility_levels
&
.
include?
Gitlab
::
VisibilityLevel
::
PUBLIC
end
private
...
...
app/helpers/groups_helper.rb
View file @
97559bbb
...
...
@@ -15,6 +15,7 @@
groups#projects
groups#edit
badges#index
repository#show
ci_cd#show
integrations#index
integrations#edit
...
...
app/models/merge_request.rb
View file @
97559bbb
...
...
@@ -163,7 +163,7 @@
state_machine
:merge_status
,
initial: :unchecked
do
event
:mark_as_unchecked
do
transition
[
:can_be_merged
,
:checking
,
:unchecked
]
=>
:unchecked
transition
[
:cannot_be_merged
,
:cannot_be_merged_recheck
]
=>
:cannot_be_merged_recheck
transition
[
:cannot_be_merged
,
:cannot_be_merged_rechecking
,
:cannot_be_merged_recheck
]
=>
:cannot_be_merged_recheck
end
event
:mark_as_checking
do
...
...
@@ -200,7 +200,7 @@
# rubocop: enable CodeReuse/ServiceClass
def
check_state?
(
merge_status
)
[
:unchecked
,
:cannot_be_merged_recheck
,
:checking
].
include?
(
merge_status
.
to_sym
)
[
:unchecked
,
:cannot_be_merged_recheck
,
:checking
,
:cannot_be_merged_rechecking
].
include?
(
merge_status
.
to_sym
)
end
end
...
...
app/models/project.rb
View file @
97559bbb
...
...
@@ -2402,7 +2402,7 @@
end
def
deploy_token_create_url
(
opts
=
{})
Gitlab
::
Routing
.
url_helpers
.
create_deploy_token_project_settings_
ci_cd
_path
(
self
,
opts
)
Gitlab
::
Routing
.
url_helpers
.
create_deploy_token_project_settings_
repository
_path
(
self
,
opts
)
end
def
deploy_token_revoke_url_for
(
token
)
...
...
Prev
1
2
3
4
Next
Write
Preview