diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-12 03:10:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-12 03:10:03 +0300 |
commit | 65a27e88f0d422cd19bf3c250762a9b100d56ef1 (patch) | |
tree | 5f5e8f73bde40e45443ed72bb58ac55b2a093527 /app | |
parent | ab82d93f5ba566b67dd1300da1cafe3ecdd13122 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/ci/ci_variable_list/components/ci_variable_shared.vue | 3 | ||||
-rw-r--r-- | app/assets/javascripts/ci/ci_variable_list/utils.js | 10 | ||||
-rw-r--r-- | app/assets/javascripts/ci/common/private/jobs_filtered_search/app.vue (renamed from app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/common/private/jobs_filtered_search/constants.js (renamed from app/assets/javascripts/jobs/components/filtered_search/constants.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/common/private/jobs_filtered_search/tokens/job_runner_type_token.vue (renamed from app/assets/javascripts/jobs/components/filtered_search/tokens/job_runner_type_token.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/common/private/jobs_filtered_search/tokens/job_status_token.vue (renamed from app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/common/private/jobs_filtered_search/utils.js (renamed from app/assets/javascripts/jobs/components/filtered_search/utils.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/constants.js | 12 | ||||
-rw-r--r-- | app/assets/javascripts/ci/inherited_ci_variables/components/inherited_ci_variables_app.vue | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/empty_state.vue (renamed from app/assets/javascripts/jobs/components/job/empty_state.vue) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/environments_block.vue (renamed from app/assets/javascripts/jobs/components/job/environments_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/erased_block.vue (renamed from app/assets/javascripts/jobs/components/job/erased_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/job_log_controllers.vue (renamed from app/assets/javascripts/jobs/components/job/job_log_controllers.vue) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/collapsible_section.vue (renamed from app/assets/javascripts/jobs/components/log/collapsible_section.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/duration_badge.vue (renamed from app/assets/javascripts/jobs/components/log/duration_badge.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/line.vue (renamed from app/assets/javascripts/jobs/components/log/line.vue) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/line_header.vue (renamed from app/assets/javascripts/jobs/components/log/line_header.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/line_number.vue (renamed from app/assets/javascripts/jobs/components/log/line_number.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/log.vue (renamed from app/assets/javascripts/jobs/components/log/log.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/log/utils.js | 12 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/manual_variables_form.vue (renamed from app/assets/javascripts/jobs/components/job/manual_variables_form.vue) | 12 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/artifacts_block.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/artifacts_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/commit_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/job_container_item.vue) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/job_retry_forward_deployment_modal.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/job_retry_forward_deployment_modal.vue) | 12 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/job_sidebar_retry_button.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/job_sidebar_retry_button.vue) | 6 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/jobs_container.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/sidebar.vue) | 5 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/sidebar_header.vue) | 19 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/stages_dropdown.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue (renamed from app/assets/javascripts/jobs/components/job/sidebar/trigger_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/stuck_block.vue (renamed from app/assets/javascripts/jobs/components/job/stuck_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/components/unmet_prerequisites_block.vue (renamed from app/assets/javascripts/jobs/components/job/unmet_prerequisites_block.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/graphql/fragments/ci_job.fragment.graphql (renamed from app/assets/javascripts/jobs/components/job/graphql/fragments/ci_job.fragment.graphql) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/graphql/fragments/ci_variable.fragment.graphql (renamed from app/assets/javascripts/jobs/components/job/graphql/fragments/ci_variable.fragment.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/graphql/mutations/job_play_with_variables.mutation.graphql (renamed from app/assets/javascripts/jobs/components/job/graphql/mutations/job_play_with_variables.mutation.graphql) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/graphql/mutations/job_retry_with_variables.mutation.graphql (renamed from app/assets/javascripts/jobs/components/job/graphql/mutations/job_retry_with_variables.mutation.graphql) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/graphql/queries/get_job.query.graphql (renamed from app/assets/javascripts/jobs/components/job/graphql/queries/get_job.query.graphql) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/index.js (renamed from app/assets/javascripts/jobs/index.js) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/job_app.vue (renamed from app/assets/javascripts/jobs/components/job/job_app.vue) | 22 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/actions.js (renamed from app/assets/javascripts/jobs/store/actions.js) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/getters.js (renamed from app/assets/javascripts/jobs/store/getters.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/index.js (renamed from app/assets/javascripts/jobs/store/index.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/mutation_types.js (renamed from app/assets/javascripts/jobs/store/mutation_types.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/mutations.js (renamed from app/assets/javascripts/jobs/store/mutations.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/state.js (renamed from app/assets/javascripts/jobs/store/state.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/utils.js (renamed from app/assets/javascripts/jobs/store/utils.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/job_details/utils.js | 22 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/job_cells/actions_cell.vue (renamed from app/assets/javascripts/jobs/components/table/cells/actions_cell.vue) | 14 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/job_cells/duration_cell.vue (renamed from app/assets/javascripts/jobs/components/table/cells/duration_cell.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/job_cells/job_cell.vue (renamed from app/assets/javascripts/jobs/components/table/cells/job_cell.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/job_cells/pipeline_cell.vue (renamed from app/assets/javascripts/jobs/components/table/cells/pipeline_cell.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/jobs_table.vue (renamed from app/assets/javascripts/jobs/components/table/jobs_table.vue) | 10 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/jobs_table_empty_state.vue (renamed from app/assets/javascripts/jobs/components/table/jobs_table_empty_state.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/components/jobs_table_tabs.vue (renamed from app/assets/javascripts/jobs/components/table/jobs_table_tabs.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/constants.js (renamed from app/assets/javascripts/jobs/components/table/constants.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/event_hub.js (renamed from app/assets/javascripts/jobs/components/table/event_hub.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/cache_config.js (renamed from app/assets/javascripts/jobs/components/table/graphql/cache_config.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/fragments/job.fragment.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/fragments/job.fragment.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/mutations/job_cancel.mutation.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/mutations/job_cancel.mutation.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/mutations/job_play.mutation.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/mutations/job_play.mutation.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/mutations/job_retry.mutation.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/mutations/job_retry.mutation.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/mutations/job_unschedule.mutation.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/mutations/job_unschedule.mutation.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/queries/get_jobs.query.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/graphql/queries/get_jobs_count.query.graphql (renamed from app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs_count.query.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/index.js (renamed from app/assets/javascripts/jobs/components/table/index.js) | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/jobs_page/jobs_page_app.vue (renamed from app/assets/javascripts/jobs/components/table/jobs_table_app.vue) | 10 | ||||
-rw-r--r-- | app/assets/javascripts/ci/mixins/delayed_job_mixin.js (renamed from app/assets/javascripts/jobs/mixins/delayed_job_mixin.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_details/graph/components/job_item.vue | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue | 6 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_mini_graph/legacy_job_item.vue | 4 | ||||
-rw-r--r-- | app/assets/javascripts/jobs/constants.js | 40 | ||||
-rw-r--r-- | app/assets/javascripts/jobs/utils.js | 53 | ||||
-rw-r--r-- | app/assets/javascripts/pages/admin/jobs/components/constants.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/pages/admin/jobs/components/table/admin_jobs_table_app.vue | 10 | ||||
-rw-r--r-- | app/assets/javascripts/pages/projects/jobs/index/index.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/pages/projects/jobs/show/index.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/security_configuration/utils.js | 5 | ||||
-rw-r--r-- | app/assets/javascripts/super_sidebar/constants.js | 2 | ||||
-rw-r--r-- | app/graphql/types/label_type.rb | 3 | ||||
-rw-r--r-- | app/graphql/types/merge_request_type.rb | 2 | ||||
-rw-r--r-- | app/presenters/projects/security/configuration_presenter.rb | 3 | ||||
-rw-r--r-- | app/services/service_desk_settings/update_service.rb | 7 | ||||
-rw-r--r-- | app/validators/json_schemas/pinned_nav_items.json | 7 |
86 files changed, 162 insertions, 183 deletions
diff --git a/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_shared.vue b/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_shared.vue index 9786f25ed87..3d5ed327dc7 100644 --- a/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_shared.vue +++ b/app/assets/javascripts/ci/ci_variable_list/components/ci_variable_shared.vue @@ -2,7 +2,8 @@ import { createAlert } from '~/alert'; import { __ } from '~/locale'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; -import { mapEnvironmentNames, reportMessageToSentry } from '../utils'; +import { reportMessageToSentry } from '~/ci/utils'; +import { mapEnvironmentNames } from '../utils'; import { ADD_MUTATION_ACTION, DELETE_MUTATION_ACTION, diff --git a/app/assets/javascripts/ci/ci_variable_list/utils.js b/app/assets/javascripts/ci/ci_variable_list/utils.js index eeca69274ce..1faa97a5f73 100644 --- a/app/assets/javascripts/ci/ci_variable_list/utils.js +++ b/app/assets/javascripts/ci/ci_variable_list/utils.js @@ -1,4 +1,3 @@ -import * as Sentry from '@sentry/browser'; import { uniq } from 'lodash'; import { allEnvironments } from './constants'; @@ -49,12 +48,3 @@ export const convertEnvironmentScope = (environmentScope = '') => { export const mapEnvironmentNames = (nodes = []) => { return nodes.map((env) => env.name); }; - -export const reportMessageToSentry = (component, message, context) => { - Sentry.withScope((scope) => { - // eslint-disable-next-line @gitlab/require-i18n-strings - scope.setContext('Vue data', context); - scope.setTag('component', component); - Sentry.captureMessage(message); - }); -}; diff --git a/app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue b/app/assets/javascripts/ci/common/private/jobs_filtered_search/app.vue index 86ccdb2c87b..86ccdb2c87b 100644 --- a/app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue +++ b/app/assets/javascripts/ci/common/private/jobs_filtered_search/app.vue diff --git a/app/assets/javascripts/jobs/components/filtered_search/constants.js b/app/assets/javascripts/ci/common/private/jobs_filtered_search/constants.js index 86b8290864c..86b8290864c 100644 --- a/app/assets/javascripts/jobs/components/filtered_search/constants.js +++ b/app/assets/javascripts/ci/common/private/jobs_filtered_search/constants.js diff --git a/app/assets/javascripts/jobs/components/filtered_search/tokens/job_runner_type_token.vue b/app/assets/javascripts/ci/common/private/jobs_filtered_search/tokens/job_runner_type_token.vue index 5bd3693b4d9..5bd3693b4d9 100644 --- a/app/assets/javascripts/jobs/components/filtered_search/tokens/job_runner_type_token.vue +++ b/app/assets/javascripts/ci/common/private/jobs_filtered_search/tokens/job_runner_type_token.vue diff --git a/app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue b/app/assets/javascripts/ci/common/private/jobs_filtered_search/tokens/job_status_token.vue index aad86ded80a..aad86ded80a 100644 --- a/app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue +++ b/app/assets/javascripts/ci/common/private/jobs_filtered_search/tokens/job_status_token.vue diff --git a/app/assets/javascripts/jobs/components/filtered_search/utils.js b/app/assets/javascripts/ci/common/private/jobs_filtered_search/utils.js index 43c0da72d3d..43c0da72d3d 100644 --- a/app/assets/javascripts/jobs/components/filtered_search/utils.js +++ b/app/assets/javascripts/ci/common/private/jobs_filtered_search/utils.js diff --git a/app/assets/javascripts/ci/constants.js b/app/assets/javascripts/ci/constants.js new file mode 100644 index 00000000000..7cc41a8731a --- /dev/null +++ b/app/assets/javascripts/ci/constants.js @@ -0,0 +1,12 @@ +import { __ } from '~/locale'; + +export const forwardDeploymentFailureModalId = 'forward-deployment-failure'; + +export const JOB_GRAPHQL_ERRORS = { + jobMutationErrorText: __('There was an error running the job. Please try again.'), + jobQueryErrorText: __('There was an error fetching the job.'), +}; + +export const SUCCESS_STATUS = 'SUCCESS'; +export const PASSED_STATUS = 'passed'; +export const MANUAL_STATUS = 'manual'; diff --git a/app/assets/javascripts/ci/inherited_ci_variables/components/inherited_ci_variables_app.vue b/app/assets/javascripts/ci/inherited_ci_variables/components/inherited_ci_variables_app.vue index 27ee1b794f6..f02d59af1d9 100644 --- a/app/assets/javascripts/ci/inherited_ci_variables/components/inherited_ci_variables_app.vue +++ b/app/assets/javascripts/ci/inherited_ci_variables/components/inherited_ci_variables_app.vue @@ -3,7 +3,7 @@ import { produce } from 'immer'; import { s__ } from '~/locale'; import { createAlert } from '~/alert'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; -import { reportMessageToSentry } from '~/ci/ci_variable_list/utils'; +import { reportMessageToSentry } from '~/ci/utils'; import CiVariableTable from '~/ci/ci_variable_list/components/ci_variable_table.vue'; import getInheritedCiVariables from '../graphql/queries/inherited_ci_variables.query.graphql'; diff --git a/app/assets/javascripts/jobs/components/job/empty_state.vue b/app/assets/javascripts/ci/job_details/components/empty_state.vue index d0a39025807..5756d4a71df 100644 --- a/app/assets/javascripts/jobs/components/job/empty_state.vue +++ b/app/assets/javascripts/ci/job_details/components/empty_state.vue @@ -1,6 +1,6 @@ <script> import { GlLink } from '@gitlab/ui'; -import ManualVariablesForm from '~/jobs/components/job/manual_variables_form.vue'; +import ManualVariablesForm from '~/ci/job_details/components/manual_variables_form.vue'; export default { components: { diff --git a/app/assets/javascripts/jobs/components/job/environments_block.vue b/app/assets/javascripts/ci/job_details/components/environments_block.vue index 4046e1ade82..4046e1ade82 100644 --- a/app/assets/javascripts/jobs/components/job/environments_block.vue +++ b/app/assets/javascripts/ci/job_details/components/environments_block.vue diff --git a/app/assets/javascripts/jobs/components/job/erased_block.vue b/app/assets/javascripts/ci/job_details/components/erased_block.vue index a815689659e..a815689659e 100644 --- a/app/assets/javascripts/jobs/components/job/erased_block.vue +++ b/app/assets/javascripts/ci/job_details/components/erased_block.vue diff --git a/app/assets/javascripts/jobs/components/job/job_log_controllers.vue b/app/assets/javascripts/ci/job_details/components/job_log_controllers.vue index 78204103feb..419efcba46d 100644 --- a/app/assets/javascripts/jobs/components/job/job_log_controllers.vue +++ b/app/assets/javascripts/ci/job_details/components/job_log_controllers.vue @@ -3,9 +3,9 @@ import { GlTooltipDirective, GlLink, GlButton, GlSearchBoxByClick } from '@gitla import { scrollToElement, backOff } from '~/lib/utils/common_utils'; import { numberToHumanSize } from '~/lib/utils/number_utils'; import { __, s__, sprintf } from '~/locale'; +import { compactJobLog } from '~/ci/job_details/utils'; import HelpPopover from '~/vue_shared/components/help_popover.vue'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; -import { compactJobLog } from '../../utils'; export default { i18n: { diff --git a/app/assets/javascripts/jobs/components/log/collapsible_section.vue b/app/assets/javascripts/ci/job_details/components/log/collapsible_section.vue index 39c612bc600..39c612bc600 100644 --- a/app/assets/javascripts/jobs/components/log/collapsible_section.vue +++ b/app/assets/javascripts/ci/job_details/components/log/collapsible_section.vue diff --git a/app/assets/javascripts/jobs/components/log/duration_badge.vue b/app/assets/javascripts/ci/job_details/components/log/duration_badge.vue index 54b76fd9edd..54b76fd9edd 100644 --- a/app/assets/javascripts/jobs/components/log/duration_badge.vue +++ b/app/assets/javascripts/ci/job_details/components/log/duration_badge.vue diff --git a/app/assets/javascripts/jobs/components/log/line.vue b/app/assets/javascripts/ci/job_details/components/log/line.vue index f254a93866f..fa4a12b3dd3 100644 --- a/app/assets/javascripts/jobs/components/log/line.vue +++ b/app/assets/javascripts/ci/job_details/components/log/line.vue @@ -1,7 +1,7 @@ <!-- eslint-disable vue/multi-word-component-names --> <script> import { getLocationHash } from '~/lib/utils/url_utility'; -import { linkRegex } from '../../utils'; +import { linkRegex } from './utils'; import LineNumber from './line_number.vue'; export default { diff --git a/app/assets/javascripts/jobs/components/log/line_header.vue b/app/assets/javascripts/ci/job_details/components/log/line_header.vue index e647ab4ac0b..e647ab4ac0b 100644 --- a/app/assets/javascripts/jobs/components/log/line_header.vue +++ b/app/assets/javascripts/ci/job_details/components/log/line_header.vue diff --git a/app/assets/javascripts/jobs/components/log/line_number.vue b/app/assets/javascripts/ci/job_details/components/log/line_number.vue index 7ca9154d2fe..7ca9154d2fe 100644 --- a/app/assets/javascripts/jobs/components/log/line_number.vue +++ b/app/assets/javascripts/ci/job_details/components/log/line_number.vue diff --git a/app/assets/javascripts/jobs/components/log/log.vue b/app/assets/javascripts/ci/job_details/components/log/log.vue index fb6a6a58074..fb6a6a58074 100644 --- a/app/assets/javascripts/jobs/components/log/log.vue +++ b/app/assets/javascripts/ci/job_details/components/log/log.vue diff --git a/app/assets/javascripts/ci/job_details/components/log/utils.js b/app/assets/javascripts/ci/job_details/components/log/utils.js new file mode 100644 index 00000000000..1ccecf3eb53 --- /dev/null +++ b/app/assets/javascripts/ci/job_details/components/log/utils.js @@ -0,0 +1,12 @@ +/** + * capture anything starting with http:// or https:// + * https?:\/\/ + * + * up until a disallowed character or whitespace + * [^"<>()\\^`{|}\s]+ + * + * and a disallowed character or whitespace, including non-ending chars .,:;!? + * [^"<>()\\^`{|}\s.,:;!?] + */ +export const linkRegex = /(https?:\/\/[^"<>()\\^`{|}\s]+[^"<>()\\^`{|}\s.,:;!?])/g; +export default { linkRegex }; diff --git a/app/assets/javascripts/jobs/components/job/manual_variables_form.vue b/app/assets/javascripts/ci/job_details/components/manual_variables_form.vue index 356d65e1d14..1232ffffb57 100644 --- a/app/assets/javascripts/jobs/components/job/manual_variables_form.vue +++ b/app/assets/javascripts/ci/job_details/components/manual_variables_form.vue @@ -14,16 +14,16 @@ import { fetchPolicies } from '~/lib/graphql'; import { createAlert } from '~/alert'; import { TYPENAME_CI_BUILD, TYPENAME_COMMIT_STATUS } from '~/graphql_shared/constants'; import { convertToGraphQLId } from '~/graphql_shared/utils'; -import { JOB_GRAPHQL_ERRORS } from '~/jobs/constants'; +import { JOB_GRAPHQL_ERRORS } from '~/ci/constants'; import { helpPagePath } from '~/helpers/help_page_helper'; import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated import { s__ } from '~/locale'; -import { reportMessageToSentry } from '~/jobs/utils'; -import GetJob from './graphql/queries/get_job.query.graphql'; -import playJobWithVariablesMutation from './graphql/mutations/job_play_with_variables.mutation.graphql'; -import retryJobWithVariablesMutation from './graphql/mutations/job_retry_with_variables.mutation.graphql'; +import { reportMessageToSentry } from '~/ci/utils'; +import GetJob from '../graphql/queries/get_job.query.graphql'; +import playJobWithVariablesMutation from '../graphql/mutations/job_play_with_variables.mutation.graphql'; +import retryJobWithVariablesMutation from '../graphql/mutations/job_retry_with_variables.mutation.graphql'; -// This component is a port of ~/jobs/components/job/legacy_manual_variables_form.vue +// This component is a port of ~/ci/job_details/components/legacy_manual_variables_form.vue // It is meant to fetch/update the job information via GraphQL instead of REST API. export default { diff --git a/app/assets/javascripts/jobs/components/job/sidebar/artifacts_block.vue b/app/assets/javascripts/ci/job_details/components/sidebar/artifacts_block.vue index 4c81a9bd033..4c81a9bd033 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/artifacts_block.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/artifacts_block.vue diff --git a/app/assets/javascripts/jobs/components/job/sidebar/commit_block.vue b/app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue index 7f25ca8a94d..7f25ca8a94d 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/commit_block.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue diff --git a/app/assets/javascripts/jobs/components/job/sidebar/job_container_item.vue b/app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue index 097ab3b4cf6..572544db526 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/job_container_item.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue @@ -1,6 +1,6 @@ <script> import { GlLink, GlIcon, GlTooltipDirective } from '@gitlab/ui'; -import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin'; +import delayedJobMixin from '~/ci/mixins/delayed_job_mixin'; import { sprintf } from '~/locale'; import CiIcon from '~/vue_shared/components/ci_icon.vue'; diff --git a/app/assets/javascripts/jobs/components/job/sidebar/job_retry_forward_deployment_modal.vue b/app/assets/javascripts/ci/job_details/components/sidebar/job_retry_forward_deployment_modal.vue index a3f1a2c4be8..58e49c71830 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/job_retry_forward_deployment_modal.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/job_retry_forward_deployment_modal.vue @@ -1,6 +1,6 @@ <script> import { GlLink, GlModal } from '@gitlab/ui'; -import { JOB_RETRY_FORWARD_DEPLOYMENT_MODAL } from '~/jobs/constants'; +import { __, s__ } from '~/locale'; export default { name: 'JobRetryForwardDeploymentModal', @@ -9,7 +9,15 @@ export default { GlModal, }, i18n: { - ...JOB_RETRY_FORWARD_DEPLOYMENT_MODAL, + cancel: __('Cancel'), + info: s__( + `Jobs|You're about to retry a job that failed because it attempted to deploy code that is older than the latest deployment. + Retrying this job could result in overwriting the environment with the older source code.`, + ), + areYouSure: s__('Jobs|Are you sure you want to proceed?'), + moreInfo: __('More information'), + primaryText: __('Retry job'), + title: s__('Jobs|Are you sure you want to retry this job?'), }, inject: { retryOutdatedJobDocsUrl: { diff --git a/app/assets/javascripts/jobs/components/job/sidebar/job_sidebar_retry_button.vue b/app/assets/javascripts/ci/job_details/components/sidebar/job_sidebar_retry_button.vue index f8486bf16f3..26676123dc3 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/job_sidebar_retry_button.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/job_sidebar_retry_button.vue @@ -2,12 +2,14 @@ import { GlButton, GlDisclosureDropdown, GlModalDirective } from '@gitlab/ui'; // eslint-disable-next-line no-restricted-imports import { mapGetters } from 'vuex'; -import { JOB_SIDEBAR_COPY } from '~/jobs/constants'; +import { s__ } from '~/locale'; export default { name: 'JobSidebarRetryButton', i18n: { - ...JOB_SIDEBAR_COPY, + retryJobLabel: s__('Job|Retry'), + runAgainJobButtonLabel: s__('Job|Run again'), + updateVariables: s__('Job|Update CI/CD variables'), }, components: { GlButton, diff --git a/app/assets/javascripts/jobs/components/job/sidebar/jobs_container.vue b/app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue index df64b6422c7..df64b6422c7 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/jobs_container.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue diff --git a/app/assets/javascripts/jobs/components/job/sidebar/sidebar.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue index 530109f9dfd..4711d5b00e3 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/sidebar.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue @@ -2,7 +2,7 @@ import { isEmpty } from 'lodash'; // eslint-disable-next-line no-restricted-imports import { mapActions, mapGetters, mapState } from 'vuex'; -import { JOB_SIDEBAR_COPY, forwardDeploymentFailureModalId } from '~/jobs/constants'; +import { forwardDeploymentFailureModalId } from '~/ci/constants'; import ArtifactsBlock from './artifacts_block.vue'; import CommitBlock from './commit_block.vue'; import JobsContainer from './jobs_container.vue'; @@ -14,9 +14,6 @@ import TriggerBlock from './trigger_block.vue'; export default { name: 'JobSidebar', - i18n: { - ...JOB_SIDEBAR_COPY, - }, borderTopClass: ['gl-border-t-solid', 'gl-border-t-1', 'gl-border-t-gray-100'], forwardDeploymentFailureModalId, components: { diff --git a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue index 0ba34eafa58..0ba34eafa58 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue diff --git a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_header.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue index 4ffb8ded8ba..d4de53f9807 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_header.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue @@ -5,20 +5,23 @@ import { mapActions } from 'vuex'; import { createAlert } from '~/alert'; import { TYPENAME_COMMIT_STATUS } from '~/graphql_shared/constants'; import { convertToGraphQLId } from '~/graphql_shared/utils'; +import { __, s__ } from '~/locale'; import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue'; -import { - JOB_GRAPHQL_ERRORS, - JOB_SIDEBAR_COPY, - forwardDeploymentFailureModalId, - PASSED_STATUS, -} from '~/jobs/constants'; -import GetJob from '../graphql/queries/get_job.query.graphql'; +import { JOB_GRAPHQL_ERRORS, forwardDeploymentFailureModalId, PASSED_STATUS } from '~/ci/constants'; +import GetJob from '../../graphql/queries/get_job.query.graphql'; import JobSidebarRetryButton from './job_sidebar_retry_button.vue'; export default { name: 'SidebarHeader', i18n: { - ...JOB_SIDEBAR_COPY, + cancelJobButtonLabel: s__('Job|Cancel'), + debug: __('Debug'), + eraseLogButtonLabel: s__('Job|Erase job log and artifacts'), + eraseLogConfirmText: s__('Job|Are you sure you want to erase this job log and artifacts?'), + newIssue: __('New issue'), + retryJobLabel: s__('Job|Retry'), + toggleSidebar: __('Toggle Sidebar'), + runAgainJobButtonLabel: s__('Job|Run again'), }, forwardDeploymentFailureModalId, directives: { diff --git a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue index 09335476008..09335476008 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue diff --git a/app/assets/javascripts/jobs/components/job/sidebar/stages_dropdown.vue b/app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue index 3fee1427256..3fee1427256 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/stages_dropdown.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue diff --git a/app/assets/javascripts/jobs/components/job/sidebar/trigger_block.vue b/app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue index c9172fe0322..c9172fe0322 100644 --- a/app/assets/javascripts/jobs/components/job/sidebar/trigger_block.vue +++ b/app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue diff --git a/app/assets/javascripts/jobs/components/job/stuck_block.vue b/app/assets/javascripts/ci/job_details/components/stuck_block.vue index 8c73f09daea..8c73f09daea 100644 --- a/app/assets/javascripts/jobs/components/job/stuck_block.vue +++ b/app/assets/javascripts/ci/job_details/components/stuck_block.vue diff --git a/app/assets/javascripts/jobs/components/job/unmet_prerequisites_block.vue b/app/assets/javascripts/ci/job_details/components/unmet_prerequisites_block.vue index c9747ca9f02..c9747ca9f02 100644 --- a/app/assets/javascripts/jobs/components/job/unmet_prerequisites_block.vue +++ b/app/assets/javascripts/ci/job_details/components/unmet_prerequisites_block.vue diff --git a/app/assets/javascripts/jobs/components/job/graphql/fragments/ci_job.fragment.graphql b/app/assets/javascripts/ci/job_details/graphql/fragments/ci_job.fragment.graphql index f4a0b10672e..7fb887b2dd4 100644 --- a/app/assets/javascripts/jobs/components/job/graphql/fragments/ci_job.fragment.graphql +++ b/app/assets/javascripts/ci/job_details/graphql/fragments/ci_job.fragment.graphql @@ -1,4 +1,4 @@ -#import "~/jobs/components/job/graphql/fragments/ci_variable.fragment.graphql" +#import "~/ci/job_details/graphql/fragments/ci_variable.fragment.graphql" fragment BaseCiJob on CiJob { id diff --git a/app/assets/javascripts/jobs/components/job/graphql/fragments/ci_variable.fragment.graphql b/app/assets/javascripts/ci/job_details/graphql/fragments/ci_variable.fragment.graphql index 0479df7bc4c..0479df7bc4c 100644 --- a/app/assets/javascripts/jobs/components/job/graphql/fragments/ci_variable.fragment.graphql +++ b/app/assets/javascripts/ci/job_details/graphql/fragments/ci_variable.fragment.graphql diff --git a/app/assets/javascripts/jobs/components/job/graphql/mutations/job_play_with_variables.mutation.graphql b/app/assets/javascripts/ci/job_details/graphql/mutations/job_play_with_variables.mutation.graphql index 520deef5136..5d8a7b4c6f6 100644 --- a/app/assets/javascripts/jobs/components/job/graphql/mutations/job_play_with_variables.mutation.graphql +++ b/app/assets/javascripts/ci/job_details/graphql/mutations/job_play_with_variables.mutation.graphql @@ -1,4 +1,4 @@ -#import "~/jobs/components/job/graphql/fragments/ci_job.fragment.graphql" +#import "~/ci/job_details/graphql/fragments/ci_job.fragment.graphql" mutation playJobWithVariables($id: CiBuildID!, $variables: [CiVariableInput!]) { jobPlay(input: { id: $id, variables: $variables }) { diff --git a/app/assets/javascripts/jobs/components/job/graphql/mutations/job_retry_with_variables.mutation.graphql b/app/assets/javascripts/ci/job_details/graphql/mutations/job_retry_with_variables.mutation.graphql index e35d603ea71..cd66a30ce63 100644 --- a/app/assets/javascripts/jobs/components/job/graphql/mutations/job_retry_with_variables.mutation.graphql +++ b/app/assets/javascripts/ci/job_details/graphql/mutations/job_retry_with_variables.mutation.graphql @@ -1,4 +1,4 @@ -#import "~/jobs/components/job/graphql/fragments/ci_job.fragment.graphql" +#import "~/ci/job_details/graphql/fragments/ci_job.fragment.graphql" mutation retryJobWithVariables($id: CiBuildID!, $variables: [CiVariableInput!]) { jobRetry(input: { id: $id, variables: $variables }) { diff --git a/app/assets/javascripts/jobs/components/job/graphql/queries/get_job.query.graphql b/app/assets/javascripts/ci/job_details/graphql/queries/get_job.query.graphql index 95e3521091d..a521ec2bb72 100644 --- a/app/assets/javascripts/jobs/components/job/graphql/queries/get_job.query.graphql +++ b/app/assets/javascripts/ci/job_details/graphql/queries/get_job.query.graphql @@ -1,4 +1,4 @@ -#import "~/jobs/components/job/graphql/fragments/ci_job.fragment.graphql" +#import "~/ci/job_details/graphql/fragments/ci_job.fragment.graphql" query getJob($fullPath: ID!, $id: JobID!) { project(fullPath: $fullPath) { diff --git a/app/assets/javascripts/jobs/index.js b/app/assets/javascripts/ci/job_details/index.js index 8cd69f25218..5a1ecf2fff3 100644 --- a/app/assets/javascripts/jobs/index.js +++ b/app/assets/javascripts/ci/job_details/index.js @@ -3,7 +3,7 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import createDefaultClient from '~/lib/graphql'; import { parseBoolean } from '~/lib/utils/common_utils'; -import JobApp from './components/job/job_app.vue'; +import JobApp from './job_app.vue'; import createStore from './store'; Vue.use(VueApollo); diff --git a/app/assets/javascripts/jobs/components/job/job_app.vue b/app/assets/javascripts/ci/job_details/job_app.vue index 52030a0f830..ede517b2d94 100644 --- a/app/assets/javascripts/jobs/components/job/job_app.vue +++ b/app/assets/javascripts/ci/job_details/job_app.vue @@ -4,20 +4,20 @@ import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils'; import { throttle, isEmpty } from 'lodash'; // eslint-disable-next-line no-restricted-imports import { mapGetters, mapState, mapActions } from 'vuex'; -import LogTopBar from 'ee_else_ce/jobs/components/job/job_log_controllers.vue'; +import LogTopBar from 'ee_else_ce/ci/job_details/components/job_log_controllers.vue'; import SafeHtml from '~/vue_shared/directives/safe_html'; import { isScrolledToBottom } from '~/lib/utils/scroll_utils'; import { __, sprintf } from '~/locale'; import CiHeader from '~/vue_shared/components/header_ci_component.vue'; -import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin'; -import Log from '~/jobs/components/log/log.vue'; -import { MANUAL_STATUS } from '~/jobs/constants'; -import EmptyState from './empty_state.vue'; -import EnvironmentsBlock from './environments_block.vue'; -import ErasedBlock from './erased_block.vue'; -import StuckBlock from './stuck_block.vue'; -import UnmetPrerequisitesBlock from './unmet_prerequisites_block.vue'; -import Sidebar from './sidebar/sidebar.vue'; +import delayedJobMixin from '~/ci/mixins/delayed_job_mixin'; +import Log from '~/ci/job_details/components/log/log.vue'; +import { MANUAL_STATUS } from '~/ci/constants'; +import EmptyState from './components/empty_state.vue'; +import EnvironmentsBlock from './components/environments_block.vue'; +import ErasedBlock from './components/erased_block.vue'; +import StuckBlock from './components/stuck_block.vue'; +import UnmetPrerequisitesBlock from './components/unmet_prerequisites_block.vue'; +import Sidebar from './components/sidebar/sidebar.vue'; export default { name: 'JobPageApp', @@ -33,7 +33,7 @@ export default { UnmetPrerequisitesBlock, Sidebar, GlLoadingIcon, - SharedRunner: () => import('ee_component/jobs/components/shared_runner_limit_block.vue'), + SharedRunner: () => import('ee_component/ci/runner/components/shared_runner_limit_block.vue'), GlAlert, }, directives: { diff --git a/app/assets/javascripts/jobs/store/actions.js b/app/assets/javascripts/ci/job_details/store/actions.js index b348478ccda..33d83689e61 100644 --- a/app/assets/javascripts/jobs/store/actions.js +++ b/app/assets/javascripts/ci/job_details/store/actions.js @@ -12,7 +12,7 @@ import { scrollUp, } from '~/lib/utils/scroll_utils'; import { __ } from '~/locale'; -import { reportToSentry } from '../utils'; +import { reportToSentry } from '~/ci/utils'; import * as types from './mutation_types'; export const init = ({ dispatch }, { endpoint, logState, pagePath }) => { diff --git a/app/assets/javascripts/jobs/store/getters.js b/app/assets/javascripts/ci/job_details/store/getters.js index a0f9db7409d..a0f9db7409d 100644 --- a/app/assets/javascripts/jobs/store/getters.js +++ b/app/assets/javascripts/ci/job_details/store/getters.js diff --git a/app/assets/javascripts/jobs/store/index.js b/app/assets/javascripts/ci/job_details/store/index.js index b9d76765d8d..b9d76765d8d 100644 --- a/app/assets/javascripts/jobs/store/index.js +++ b/app/assets/javascripts/ci/job_details/store/index.js diff --git a/app/assets/javascripts/jobs/store/mutation_types.js b/app/assets/javascripts/ci/job_details/store/mutation_types.js index 4915a826b84..4915a826b84 100644 --- a/app/assets/javascripts/jobs/store/mutation_types.js +++ b/app/assets/javascripts/ci/job_details/store/mutation_types.js diff --git a/app/assets/javascripts/jobs/store/mutations.js b/app/assets/javascripts/ci/job_details/store/mutations.js index b7d7006ee61..b7d7006ee61 100644 --- a/app/assets/javascripts/jobs/store/mutations.js +++ b/app/assets/javascripts/ci/job_details/store/mutations.js diff --git a/app/assets/javascripts/jobs/store/state.js b/app/assets/javascripts/ci/job_details/store/state.js index dfff65c364d..dfff65c364d 100644 --- a/app/assets/javascripts/jobs/store/state.js +++ b/app/assets/javascripts/ci/job_details/store/state.js diff --git a/app/assets/javascripts/jobs/store/utils.js b/app/assets/javascripts/ci/job_details/store/utils.js index bc76901026d..bc76901026d 100644 --- a/app/assets/javascripts/jobs/store/utils.js +++ b/app/assets/javascripts/ci/job_details/store/utils.js diff --git a/app/assets/javascripts/ci/job_details/utils.js b/app/assets/javascripts/ci/job_details/utils.js new file mode 100644 index 00000000000..44182a20c4c --- /dev/null +++ b/app/assets/javascripts/ci/job_details/utils.js @@ -0,0 +1,22 @@ +export const compactJobLog = (jobLog) => { + const compactedLog = []; + + jobLog.forEach((obj) => { + // push header section line + if (obj.line && obj.isHeader) { + compactedLog.push(obj.line); + } + + // push lines within section header + if (obj.lines?.length > 0) { + compactedLog.push(...obj.lines); + } + + // push lines from plain log + if (!obj.lines && obj.content.length > 0) { + compactedLog.push(obj); + } + }); + + return compactedLog; +}; diff --git a/app/assets/javascripts/jobs/components/table/cells/actions_cell.vue b/app/assets/javascripts/ci/jobs_page/components/job_cells/actions_cell.vue index d97f6f6ff8c..609f2790869 100644 --- a/app/assets/javascripts/jobs/components/table/cells/actions_cell.vue +++ b/app/assets/javascripts/ci/jobs_page/components/job_cells/actions_cell.vue @@ -7,6 +7,7 @@ import { GlSprintf, GlTooltipDirective, } from '@gitlab/ui'; +import { reportMessageToSentry } from '~/ci/utils'; import GlCountdown from '~/vue_shared/components/gl_countdown.vue'; import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated import { @@ -23,13 +24,12 @@ import { PLAY_JOB_CONFIRMATION_MESSAGE, RUN_JOB_NOW_HEADER_TITLE, FILE_TYPE_ARCHIVE, -} from '../constants'; -import eventHub from '../event_hub'; -import cancelJobMutation from '../graphql/mutations/job_cancel.mutation.graphql'; -import playJobMutation from '../graphql/mutations/job_play.mutation.graphql'; -import retryJobMutation from '../graphql/mutations/job_retry.mutation.graphql'; -import unscheduleJobMutation from '../graphql/mutations/job_unschedule.mutation.graphql'; -import { reportMessageToSentry } from '../../../utils'; +} from '../../constants'; +import eventHub from '../../event_hub'; +import cancelJobMutation from '../../graphql/mutations/job_cancel.mutation.graphql'; +import playJobMutation from '../../graphql/mutations/job_play.mutation.graphql'; +import retryJobMutation from '../../graphql/mutations/job_retry.mutation.graphql'; +import unscheduleJobMutation from '../../graphql/mutations/job_unschedule.mutation.graphql'; export default { ACTIONS_DOWNLOAD_ARTIFACTS, diff --git a/app/assets/javascripts/jobs/components/table/cells/duration_cell.vue b/app/assets/javascripts/ci/jobs_page/components/job_cells/duration_cell.vue index dbf1dfe7a29..dbf1dfe7a29 100644 --- a/app/assets/javascripts/jobs/components/table/cells/duration_cell.vue +++ b/app/assets/javascripts/ci/jobs_page/components/job_cells/duration_cell.vue diff --git a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue b/app/assets/javascripts/ci/jobs_page/components/job_cells/job_cell.vue index b435eb283fd..b435eb283fd 100644 --- a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue +++ b/app/assets/javascripts/ci/jobs_page/components/job_cells/job_cell.vue diff --git a/app/assets/javascripts/jobs/components/table/cells/pipeline_cell.vue b/app/assets/javascripts/ci/jobs_page/components/job_cells/pipeline_cell.vue index 18d68ee8a29..18d68ee8a29 100644 --- a/app/assets/javascripts/jobs/components/table/cells/pipeline_cell.vue +++ b/app/assets/javascripts/ci/jobs_page/components/job_cells/pipeline_cell.vue diff --git a/app/assets/javascripts/jobs/components/table/jobs_table.vue b/app/assets/javascripts/ci/jobs_page/components/jobs_table.vue index 474131363b8..9a66e4698df 100644 --- a/app/assets/javascripts/jobs/components/table/jobs_table.vue +++ b/app/assets/javascripts/ci/jobs_page/components/jobs_table.vue @@ -4,11 +4,11 @@ import { s__ } from '~/locale'; import CiBadgeLink from '~/vue_shared/components/ci_badge_link.vue'; import ProjectCell from '~/pages/admin/jobs/components/table/cell/project_cell.vue'; import RunnerCell from '~/pages/admin/jobs/components/table/cells/runner_cell.vue'; -import ActionsCell from './cells/actions_cell.vue'; -import DurationCell from './cells/duration_cell.vue'; -import JobCell from './cells/job_cell.vue'; -import PipelineCell from './cells/pipeline_cell.vue'; -import { DEFAULT_FIELDS } from './constants'; +import { DEFAULT_FIELDS } from '../constants'; +import ActionsCell from './job_cells/actions_cell.vue'; +import DurationCell from './job_cells/duration_cell.vue'; +import JobCell from './job_cells/job_cell.vue'; +import PipelineCell from './job_cells/pipeline_cell.vue'; export default { i18n: { diff --git a/app/assets/javascripts/jobs/components/table/jobs_table_empty_state.vue b/app/assets/javascripts/ci/jobs_page/components/jobs_table_empty_state.vue index fcdd52b719c..fcdd52b719c 100644 --- a/app/assets/javascripts/jobs/components/table/jobs_table_empty_state.vue +++ b/app/assets/javascripts/ci/jobs_page/components/jobs_table_empty_state.vue diff --git a/app/assets/javascripts/jobs/components/table/jobs_table_tabs.vue b/app/assets/javascripts/ci/jobs_page/components/jobs_table_tabs.vue index 464b500c66e..464b500c66e 100644 --- a/app/assets/javascripts/jobs/components/table/jobs_table_tabs.vue +++ b/app/assets/javascripts/ci/jobs_page/components/jobs_table_tabs.vue diff --git a/app/assets/javascripts/jobs/components/table/constants.js b/app/assets/javascripts/ci/jobs_page/constants.js index 1b572e60c58..1b572e60c58 100644 --- a/app/assets/javascripts/jobs/components/table/constants.js +++ b/app/assets/javascripts/ci/jobs_page/constants.js diff --git a/app/assets/javascripts/jobs/components/table/event_hub.js b/app/assets/javascripts/ci/jobs_page/event_hub.js index e31806ad199..e31806ad199 100644 --- a/app/assets/javascripts/jobs/components/table/event_hub.js +++ b/app/assets/javascripts/ci/jobs_page/event_hub.js diff --git a/app/assets/javascripts/jobs/components/table/graphql/cache_config.js b/app/assets/javascripts/ci/jobs_page/graphql/cache_config.js index 5390c023da4..5390c023da4 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/cache_config.js +++ b/app/assets/javascripts/ci/jobs_page/graphql/cache_config.js diff --git a/app/assets/javascripts/jobs/components/table/graphql/fragments/job.fragment.graphql b/app/assets/javascripts/ci/jobs_page/graphql/fragments/job.fragment.graphql index 3038216fdfc..3038216fdfc 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/fragments/job.fragment.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/fragments/job.fragment.graphql diff --git a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_cancel.mutation.graphql b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_cancel.mutation.graphql index 20935514d51..20935514d51 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_cancel.mutation.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_cancel.mutation.graphql diff --git a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_play.mutation.graphql b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_play.mutation.graphql index c94b045ac40..c94b045ac40 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_play.mutation.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_play.mutation.graphql diff --git a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_retry.mutation.graphql b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_retry.mutation.graphql index 6e51f9a20fa..6e51f9a20fa 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_retry.mutation.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_retry.mutation.graphql diff --git a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_unschedule.mutation.graphql b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_unschedule.mutation.graphql index 8be8c42f3c3..8be8c42f3c3 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/mutations/job_unschedule.mutation.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/mutations/job_unschedule.mutation.graphql diff --git a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql b/app/assets/javascripts/ci/jobs_page/graphql/queries/get_jobs.query.graphql index 69719011079..69719011079 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/queries/get_jobs.query.graphql diff --git a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs_count.query.graphql b/app/assets/javascripts/ci/jobs_page/graphql/queries/get_jobs_count.query.graphql index a4e02ae721a..a4e02ae721a 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs_count.query.graphql +++ b/app/assets/javascripts/ci/jobs_page/graphql/queries/get_jobs_count.query.graphql diff --git a/app/assets/javascripts/jobs/components/table/index.js b/app/assets/javascripts/ci/jobs_page/index.js index 88da1169e01..7e99157289b 100644 --- a/app/assets/javascripts/jobs/components/table/index.js +++ b/app/assets/javascripts/ci/jobs_page/index.js @@ -1,7 +1,7 @@ import { GlToast } from '@gitlab/ui'; import Vue from 'vue'; import VueApollo from 'vue-apollo'; -import JobsTableApp from '~/jobs/components/table/jobs_table_app.vue'; +import JobsTableApp from '~/ci/jobs_page/jobs_page_app.vue'; import createDefaultClient from '~/lib/graphql'; import { parseBoolean } from '~/lib/utils/common_utils'; import cacheConfig from './graphql/cache_config'; diff --git a/app/assets/javascripts/jobs/components/table/jobs_table_app.vue b/app/assets/javascripts/ci/jobs_page/jobs_page_app.vue index 09fa006cb88..c801b35e868 100644 --- a/app/assets/javascripts/jobs/components/table/jobs_table_app.vue +++ b/app/assets/javascripts/ci/jobs_page/jobs_page_app.vue @@ -4,13 +4,13 @@ import { __ } from '~/locale'; import { createAlert } from '~/alert'; import { setUrlParams, updateHistory, queryToObject } from '~/lib/utils/url_utility'; import JobsSkeletonLoader from '~/pages/admin/jobs/components/jobs_skeleton_loader.vue'; -import JobsFilteredSearch from '../filtered_search/jobs_filtered_search.vue'; -import { validateQueryString } from '../filtered_search/utils'; +import JobsFilteredSearch from '~/ci/common/private/jobs_filtered_search/app.vue'; +import { validateQueryString } from '~/ci/common/private/jobs_filtered_search/utils'; import GetJobs from './graphql/queries/get_jobs.query.graphql'; import GetJobsCount from './graphql/queries/get_jobs_count.query.graphql'; -import JobsTable from './jobs_table.vue'; -import JobsTableEmptyState from './jobs_table_empty_state.vue'; -import JobsTableTabs from './jobs_table_tabs.vue'; +import JobsTable from './components/jobs_table.vue'; +import JobsTableEmptyState from './components/jobs_table_empty_state.vue'; +import JobsTableTabs from './components/jobs_table_tabs.vue'; import { RAW_TEXT_WARNING } from './constants'; export default { diff --git a/app/assets/javascripts/jobs/mixins/delayed_job_mixin.js b/app/assets/javascripts/ci/mixins/delayed_job_mixin.js index 7b17dc7f693..7b17dc7f693 100644 --- a/app/assets/javascripts/jobs/mixins/delayed_job_mixin.js +++ b/app/assets/javascripts/ci/mixins/delayed_job_mixin.js diff --git a/app/assets/javascripts/ci/pipeline_details/graph/components/job_item.vue b/app/assets/javascripts/ci/pipeline_details/graph/components/job_item.vue index bab05d0c232..4298052d1c0 100644 --- a/app/assets/javascripts/ci/pipeline_details/graph/components/job_item.vue +++ b/app/assets/javascripts/ci/pipeline_details/graph/components/job_item.vue @@ -1,7 +1,7 @@ <script> import { GlBadge, GlForm, GlFormCheckbox, GlLink, GlModal, GlTooltipDirective } from '@gitlab/ui'; import { reportToSentry } from '~/ci/utils'; -import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin'; +import delayedJobMixin from '~/ci/mixins/delayed_job_mixin'; import { helpPagePath } from '~/helpers/help_page_helper'; import { BV_HIDE_TOOLTIP } from '~/lib/utils/constants'; import { __, s__, sprintf } from '~/locale'; diff --git a/app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue b/app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue index 7a09dd27ad8..81b6152347d 100644 --- a/app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue +++ b/app/assets/javascripts/ci/pipeline_details/jobs/jobs_app.vue @@ -3,9 +3,9 @@ import { GlIntersectionObserver, GlLoadingIcon, GlSkeletonLoader } from '@gitlab import produce from 'immer'; import { createAlert } from '~/alert'; import { __ } from '~/locale'; -import eventHub from '~/jobs/components/table/event_hub'; -import JobsTable from '~/jobs/components/table/jobs_table.vue'; -import { JOBS_TAB_FIELDS } from '~/jobs/components/table/constants'; +import eventHub from '~/ci/jobs_page/event_hub'; +import JobsTable from '~/ci/jobs_page/components/jobs_table.vue'; +import { JOBS_TAB_FIELDS } from '~/ci/jobs_page/constants'; import getPipelineJobs from './graphql/queries/get_pipeline_jobs.query.graphql'; export default { diff --git a/app/assets/javascripts/ci/pipeline_mini_graph/legacy_job_item.vue b/app/assets/javascripts/ci/pipeline_mini_graph/legacy_job_item.vue index 27917d029b3..6da4ff2b0c2 100644 --- a/app/assets/javascripts/ci/pipeline_mini_graph/legacy_job_item.vue +++ b/app/assets/javascripts/ci/pipeline_mini_graph/legacy_job_item.vue @@ -3,9 +3,9 @@ import { GlTooltipDirective, GlLink } from '@gitlab/ui'; import ActionComponent from '~/ci/common/private/job_action_component.vue'; import JobNameComponent from '~/ci/common/private/job_name_component.vue'; import { ICONS } from '~/ci/pipeline_details/constants'; -import delayedJobMixin from '~/jobs/mixins/delayed_job_mixin'; +import delayedJobMixin from '~/ci/mixins/delayed_job_mixin'; import { s__, sprintf } from '~/locale'; -import { reportToSentry } from '../utils'; +import { reportToSentry } from '~/ci/utils'; /** * Renders the badge for the pipeline graph and the job's dropdown. diff --git a/app/assets/javascripts/jobs/constants.js b/app/assets/javascripts/jobs/constants.js deleted file mode 100644 index 40b3de7edd9..00000000000 --- a/app/assets/javascripts/jobs/constants.js +++ /dev/null @@ -1,40 +0,0 @@ -import { __, s__ } from '~/locale'; - -const cancel = __('Cancel'); -const moreInfo = __('More information'); - -export const forwardDeploymentFailureModalId = 'forward-deployment-failure'; - -export const JOB_SIDEBAR_COPY = { - cancel, - cancelJobButtonLabel: s__('Job|Cancel'), - debug: __('Debug'), - eraseLogButtonLabel: s__('Job|Erase job log and artifacts'), - eraseLogConfirmText: s__('Job|Are you sure you want to erase this job log and artifacts?'), - newIssue: __('New issue'), - retryJobLabel: s__('Job|Retry'), - toggleSidebar: __('Toggle Sidebar'), - runAgainJobButtonLabel: s__('Job|Run again'), - updateVariables: s__('Job|Update CI/CD variables'), -}; - -export const JOB_GRAPHQL_ERRORS = { - jobMutationErrorText: __('There was an error running the job. Please try again.'), - jobQueryErrorText: __('There was an error fetching the job.'), -}; - -export const JOB_RETRY_FORWARD_DEPLOYMENT_MODAL = { - cancel, - info: s__( - `Jobs|You're about to retry a job that failed because it attempted to deploy code that is older than the latest deployment. - Retrying this job could result in overwriting the environment with the older source code.`, - ), - areYouSure: s__('Jobs|Are you sure you want to proceed?'), - moreInfo, - primaryText: __('Retry job'), - title: s__('Jobs|Are you sure you want to retry this job?'), -}; - -export const SUCCESS_STATUS = 'SUCCESS'; -export const PASSED_STATUS = 'passed'; -export const MANUAL_STATUS = 'manual'; diff --git a/app/assets/javascripts/jobs/utils.js b/app/assets/javascripts/jobs/utils.js deleted file mode 100644 index b3b16f5a52b..00000000000 --- a/app/assets/javascripts/jobs/utils.js +++ /dev/null @@ -1,53 +0,0 @@ -import * as Sentry from '@sentry/browser'; - -/** - * capture anything starting with http:// or https:// - * https?:\/\/ - * - * up until a disallowed character or whitespace - * [^"<>()\\^`{|}\s]+ - * - * and a disallowed character or whitespace, including non-ending chars .,:;!? - * [^"<>()\\^`{|}\s.,:;!?] - */ -export const linkRegex = /(https?:\/\/[^"<>()\\^`{|}\s]+[^"<>()\\^`{|}\s.,:;!?])/g; -export default { linkRegex }; - -export const reportToSentry = (component, failureType) => { - Sentry.withScope((scope) => { - scope.setTag('component', component); - Sentry.captureException(failureType); - }); -}; - -export const reportMessageToSentry = (component, message, context) => { - Sentry.withScope((scope) => { - // eslint-disable-next-line @gitlab/require-i18n-strings - scope.setContext('Vue data', context); - scope.setTag('component', component); - Sentry.captureMessage(message); - }); -}; - -export const compactJobLog = (jobLog) => { - const compactedLog = []; - - jobLog.forEach((obj) => { - // push header section line - if (obj.line && obj.isHeader) { - compactedLog.push(obj.line); - } - - // push lines within section header - if (obj.lines?.length > 0) { - compactedLog.push(...obj.lines); - } - - // push lines from plain log - if (!obj.lines && obj.content.length > 0) { - compactedLog.push(obj); - } - }); - - return compactedLog; -}; diff --git a/app/assets/javascripts/pages/admin/jobs/components/constants.js b/app/assets/javascripts/pages/admin/jobs/components/constants.js index 4af8cb355fc..ff0efdb1f5b 100644 --- a/app/assets/javascripts/pages/admin/jobs/components/constants.js +++ b/app/assets/javascripts/pages/admin/jobs/components/constants.js @@ -1,5 +1,5 @@ import { s__, __ } from '~/locale'; -import { RAW_TEXT_WARNING } from '~/jobs/components/table/constants'; +import { RAW_TEXT_WARNING } from '~/ci/jobs_page/constants'; export const JOBS_COUNT_ERROR_MESSAGE = __('There was an error fetching the number of jobs.'); export const JOBS_FETCH_ERROR_MSG = __('There was an error fetching the jobs.'); diff --git a/app/assets/javascripts/pages/admin/jobs/components/table/admin_jobs_table_app.vue b/app/assets/javascripts/pages/admin/jobs/components/table/admin_jobs_table_app.vue index dc161d65e61..d9e1284b035 100644 --- a/app/assets/javascripts/pages/admin/jobs/components/table/admin_jobs_table_app.vue +++ b/app/assets/javascripts/pages/admin/jobs/components/table/admin_jobs_table_app.vue @@ -1,11 +1,11 @@ <script> import { GlAlert, GlIntersectionObserver, GlLoadingIcon } from '@gitlab/ui'; import { setUrlParams, updateHistory, queryToObject } from '~/lib/utils/url_utility'; -import { validateQueryString } from '~/jobs/components/filtered_search/utils'; -import JobsTable from '~/jobs/components/table/jobs_table.vue'; -import JobsTableTabs from '~/jobs/components/table/jobs_table_tabs.vue'; -import JobsFilteredSearch from '~/jobs/components/filtered_search/jobs_filtered_search.vue'; -import JobsTableEmptyState from '~/jobs/components/table/jobs_table_empty_state.vue'; +import { validateQueryString } from '~/ci/common/private/jobs_filtered_search/utils'; +import JobsTable from '~/ci/jobs_page/components/jobs_table.vue'; +import JobsTableTabs from '~/ci/jobs_page/components/jobs_table_tabs.vue'; +import JobsFilteredSearch from '~/ci/common/private/jobs_filtered_search/app.vue'; +import JobsTableEmptyState from '~/ci/jobs_page/components/jobs_table_empty_state.vue'; import { createAlert } from '~/alert'; import { TOKEN_TYPE_STATUS, diff --git a/app/assets/javascripts/pages/projects/jobs/index/index.js b/app/assets/javascripts/pages/projects/jobs/index/index.js index eb3a24f38a8..9b5ad804750 100644 --- a/app/assets/javascripts/pages/projects/jobs/index/index.js +++ b/app/assets/javascripts/pages/projects/jobs/index/index.js @@ -1,3 +1,3 @@ -import initJobsTable from '~/jobs/components/table'; +import initJobsPage from '~/ci/jobs_page'; -initJobsTable(); +initJobsPage(); diff --git a/app/assets/javascripts/pages/projects/jobs/show/index.js b/app/assets/javascripts/pages/projects/jobs/show/index.js index 6fef057dee0..cd83f2b7b64 100644 --- a/app/assets/javascripts/pages/projects/jobs/show/index.js +++ b/app/assets/javascripts/pages/projects/jobs/show/index.js @@ -1,3 +1,3 @@ -import initJobDetails from '~/jobs'; +import initJobDetails from '~/ci/job_details'; initJobDetails(); diff --git a/app/assets/javascripts/security_configuration/utils.js b/app/assets/javascripts/security_configuration/utils.js index 72e6d870e13..7f0caf1af46 100644 --- a/app/assets/javascripts/security_configuration/utils.js +++ b/app/assets/javascripts/security_configuration/utils.js @@ -1,5 +1,6 @@ import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { SCANNER_NAMES_MAP } from '~/security_configuration/components/constants'; +import { REPORT_TYPE_DAST } from '~/vue_shared/security_reports/constants'; /** * This function takes in 3 arrays of objects, securityFeatures and features. @@ -29,6 +30,10 @@ export const augmentFeatures = (securityFeatures, features = []) => { augmented.secondary = { ...augmented.secondary, ...featuresByType[feature.secondary.type] }; } + if (augmented.type === REPORT_TYPE_DAST && !augmented.onDemandAvailable) { + delete augmented.badge; + } + if (augmented.badge && augmented.metaInfoPath) { augmented.badge.badgeHref = augmented.metaInfoPath; } diff --git a/app/assets/javascripts/super_sidebar/constants.js b/app/assets/javascripts/super_sidebar/constants.js index 82ebdc90a90..0abc459bc52 100644 --- a/app/assets/javascripts/super_sidebar/constants.js +++ b/app/assets/javascripts/super_sidebar/constants.js @@ -33,7 +33,7 @@ export const TRACKING_UNKNOWN_PANEL = 'nav_panel_unknown'; export const CLICK_MENU_ITEM_ACTION = 'click_menu_item'; export const CLICK_PINNED_MENU_ITEM_ACTION = 'click_pinned_menu_item'; -export const PANELS_WITH_PINS = ['group', 'project']; +export const PANELS_WITH_PINS = ['group', 'project', 'organization']; export const USER_MENU_TRACKING_DEFAULTS = { 'data-track-property': 'nav_user_menu', diff --git a/app/graphql/types/label_type.rb b/app/graphql/types/label_type.rb index 4848ee30950..d4fac949c93 100644 --- a/app/graphql/types/label_type.rb +++ b/app/graphql/types/label_type.rb @@ -18,6 +18,9 @@ module Types description: 'Description of the label (Markdown rendered as HTML for caching).' field :id, GraphQL::Types::ID, null: false, description: 'Label ID.' + field :lock_on_merge, GraphQL::Types::Boolean, null: false, + description: 'Indicates this label is locked for merge requests ' \ + 'that have been merged.' field :text_color, GraphQL::Types::String, null: false, description: 'Text color of the label.' field :title, GraphQL::Types::String, null: false, diff --git a/app/graphql/types/merge_request_type.rb b/app/graphql/types/merge_request_type.rb index 4ea12df940d..4fd2b245de9 100644 --- a/app/graphql/types/merge_request_type.rb +++ b/app/graphql/types/merge_request_type.rb @@ -185,6 +185,8 @@ module Types description: 'Users from whom a review has been requested.' field :subscribed, GraphQL::Types::Boolean, method: :subscribed?, null: false, complexity: 5, description: 'Indicates if the currently logged in user is subscribed to this merge request.' + field :supports_lock_on_merge, GraphQL::Types::Boolean, null: false, method: :supports_lock_on_merge?, + description: 'Indicates if the merge request supports locked labels.' field :task_completion_status, Types::TaskCompletionStatus, null: false, description: Types::TaskCompletionStatus.description field :time_estimate, GraphQL::Types::Int, null: false, diff --git a/app/presenters/projects/security/configuration_presenter.rb b/app/presenters/projects/security/configuration_presenter.rb index 8a6569e7bf3..e1e729d28e3 100644 --- a/app/presenters/projects/security/configuration_presenter.rb +++ b/app/presenters/projects/security/configuration_presenter.rb @@ -83,7 +83,8 @@ module Projects configuration_path: scan.configuration_path, available: scan.available?, can_enable_by_merge_request: scan.can_enable_by_merge_request?, - meta_info_path: scan.meta_info_path + meta_info_path: scan.meta_info_path, + on_demand_available: scan.on_demand_available? } end diff --git a/app/services/service_desk_settings/update_service.rb b/app/services/service_desk_settings/update_service.rb index 61cb6fce11f..182022beb1d 100644 --- a/app/services/service_desk_settings/update_service.rb +++ b/app/services/service_desk_settings/update_service.rb @@ -2,12 +2,19 @@ module ServiceDeskSettings class UpdateService < BaseService + include ::ServiceDesk::CustomEmails::Logger + def execute settings = ServiceDeskSetting.safe_find_or_create_by!(project_id: project.id) params[:project_key] = nil if params[:project_key].blank? + # We want to know when custom email got enabled + write_log_message = params[:custom_email_enabled].present? && !settings.custom_email_enabled? + if settings.update(params) + log_info if write_log_message + ServiceResponse.success else ServiceResponse.error(message: settings.errors.full_messages.to_sentence) diff --git a/app/validators/json_schemas/pinned_nav_items.json b/app/validators/json_schemas/pinned_nav_items.json index 60dee5cc463..aaeb2fe8bda 100644 --- a/app/validators/json_schemas/pinned_nav_items.json +++ b/app/validators/json_schemas/pinned_nav_items.json @@ -16,6 +16,13 @@ "type": "string" }, "uniqueItems": true + }, + "organization": { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true } }, "additionalProperties": false |