diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bbf8265da85..936b9410a60 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -99,7 +99,7 @@ variables: GIT_SUBMODULE_STRATEGY: "none" GET_SOURCES_ATTEMPTS: "3" DEBIAN_VERSION: "bullseye" - CHROME_VERSION: "103" + CHROME_VERSION: "106" DOCKER_VERSION: "20.10.14" RUBY_VERSION: "2.7" GO_VERSION: "1.18" diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 3c9a4b09b9b..2bb47c77ba5 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -2,7 +2,7 @@ # project here: https://gitlab.com/gitlab-org/gitlab/-/project_members # As described in https://docs.gitlab.com/ee/user/project/code_owners.html -* @gitlab-org/maintainers/rails-backend @gitlab-org/maintainers/frontend @gitlab-org/maintainers/database @gl-quality/qe-maintainers @gitlab-org/delivery @gitlab-org/maintainers/cicd-templates @nolith @jacobvosmaer-gitlab @gitlab-org/tw-leadership +* @gitlab-org/maintainers/rails-backend @gitlab-org/maintainers/frontend @gitlab-org/maintainers/database @gl-quality/qe-maintainers @gl-quality/tooling-maintainers @gitlab-org/delivery @gitlab-org/maintainers/cicd-templates @nolith @jacobvosmaer-gitlab @gitlab-org/tw-leadership CODEOWNERS @gitlab-org/development-leaders @gitlab-org/tw-leadership docs/CODEOWNERS @gitlab-org/development-leaders @gitlab-org/tw-leadership diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 0dbe58d1e10..4d120de277a 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -88,17 +88,6 @@ update-assets-compile-test-cache: - echo -n "${GITLAB_ASSETS_HASH}" > "cached-assets-hash.txt" artifacts: {} # This job's purpose is only to update the cache. -# TODO: Remove this as it's duplicating update-assets-compile-*-cache -update-yarn-cache: - extends: - - .default-retry - - .default-utils-before_script - - .yarn-cache-push - - .shared:rules:update-cache - stage: prepare - script: - - yarn_install_script - update-storybook-yarn-cache: extends: - .default-retry diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 2c75c9a5a0f..d461183a2ca 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -219,23 +219,16 @@ - *node-modules-cache - *assets-tmp-cache -# TODO: Remove this as it's duplicating .assets-compile-cache-push -.yarn-cache-push: - cache: - - *node-modules-cache-push - .assets-compile-cache: cache: - *ruby-gems-cache - *node-modules-cache - - *assets-cache - *assets-tmp-cache .assets-compile-cache-push: cache: - *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache` - *node-modules-cache-push - - *assets-cache-push - *assets-tmp-cache-push .storybook-yarn-cache: @@ -245,7 +238,7 @@ .storybook-yarn-cache-push: cache: - - *node-modules-cache # We don't push this cache as it's already rebuilt by `update-yarn-cache` + - *node-modules-cache # We don't push this cache as it's already rebuilt by `update-assets-compile-*-cache` - *storybook-node-modules-cache-push .use-pg11: diff --git a/.gitlab/ci/review-apps/qa.gitlab-ci.yml b/.gitlab/ci/review-apps/qa.gitlab-ci.yml index c631161aa08..69ce028987a 100644 --- a/.gitlab/ci/review-apps/qa.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/qa.gitlab-ci.yml @@ -25,7 +25,7 @@ include: - cd qa && bundle install .review-qa-base: - image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.33-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 + image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-${RUBY_VERSION}:bundler-2.3-git-2.36-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 extends: - .use-docker-in-docker - .bundle-base diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index db0ceae2868..41d61f16d4c 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -856,6 +856,8 @@ .frontend:rules:minimal-default-rules: rules: + - <<: *if-merge-request-approved + when: never - <<: *if-automated-merge-request when: never - <<: *if-security-merge-request @@ -930,14 +932,16 @@ - <<: *if-merge-request-labels-run-all-jest - <<: *if-merge-request-labels-frontend-and-feature-flag - <<: *if-merge-request - changes: ["{package.json,yarn.lock}"] + changes: *frontend-dependency-patterns - <<: *if-merge-request changes: [".gitlab/ci/rules.gitlab-ci.yml", ".gitlab/ci/frontend.gitlab-ci.yml"] - <<: *if-automated-merge-request changes: *code-backstage-patterns - <<: *if-security-merge-request changes: *code-backstage-patterns - - <<: *if-default-branch-refs + - <<: *if-merge-request-not-approved + when: never + - <<: *if-default-refs changes: *code-backstage-patterns .frontend:rules:jest:minimal: @@ -950,7 +954,7 @@ - <<: *if-merge-request-labels-frontend-and-feature-flag when: never - <<: *if-merge-request - changes: ["{package.json,yarn.lock}"] + changes: *frontend-dependency-patterns when: never - <<: *if-merge-request changes: [".gitlab/ci/rules.gitlab-ci.yml", ".gitlab/ci/frontend.gitlab-ci.yml"] @@ -964,18 +968,24 @@ - <<: *if-merge-request-labels-as-if-foss - <<: *if-merge-request-labels-run-all-jest - <<: *if-merge-request - changes: ["{package.json,yarn.lock}"] + changes: *frontend-dependency-patterns - <<: *if-security-merge-request changes: *code-backstage-patterns + - <<: *if-merge-request-not-approved + when: never + - <<: *if-merge-request + changes: *frontend-patterns-for-as-if-foss .frontend:rules:jest:minimal:as-if-foss: rules: - !reference [".strict-ee-only-rules", rules] - !reference [".frontend:rules:minimal-default-rules", rules] + - <<: *if-merge-request-labels-as-if-foss + when: never - <<: *if-merge-request-labels-run-all-jest when: never - <<: *if-merge-request - changes: ["{package.json,yarn.lock}"] + changes: *frontend-dependency-patterns when: never - <<: *if-fork-merge-request when: never diff --git a/.rubocop_todo/rails/lexically_scoped_action_filter.yml b/.rubocop_todo/rails/lexically_scoped_action_filter.yml index 9edc8f7ce58..dde0da13d3c 100644 --- a/.rubocop_todo/rails/lexically_scoped_action_filter.yml +++ b/.rubocop_todo/rails/lexically_scoped_action_filter.yml @@ -1,15 +1,13 @@ --- Rails/LexicallyScopedActionFilter: - # Offense count: 73 - # Temporarily disabled due to too many offenses - Enabled: false + Details: grace period Exclude: - 'app/controllers/admin/groups_controller.rb' + - 'app/controllers/admin/hooks_controller.rb' - 'app/controllers/clusters/base_controller.rb' - 'app/controllers/clusters/clusters_controller.rb' - 'app/controllers/concerns/enforces_two_factor_authentication.rb' - 'app/controllers/concerns/integrations/actions.rb' - - 'app/controllers/concerns/multiple_boards_actions.rb' - 'app/controllers/concerns/oauth_applications.rb' - 'app/controllers/concerns/spammable_actions/captcha_check/html_format_actions_support.rb' - 'app/controllers/confirmations_controller.rb' @@ -17,14 +15,17 @@ Rails/LexicallyScopedActionFilter: - 'app/controllers/groups/group_members_controller.rb' - 'app/controllers/groups/milestones_controller.rb' - 'app/controllers/groups/runners_controller.rb' + - 'app/controllers/groups/settings/repository_controller.rb' - 'app/controllers/groups/uploads_controller.rb' - 'app/controllers/groups_controller.rb' - 'app/controllers/import/base_controller.rb' - 'app/controllers/oauth/applications_controller.rb' - 'app/controllers/passwords_controller.rb' + - 'app/controllers/projects/analytics/cycle_analytics/stages_controller.rb' - 'app/controllers/projects/badges_controller.rb' - 'app/controllers/projects/branches_controller.rb' - 'app/controllers/projects/environments_controller.rb' + - 'app/controllers/projects/hooks_controller.rb' - 'app/controllers/projects/incidents_controller.rb' - 'app/controllers/projects/issue_links_controller.rb' - 'app/controllers/projects/issues_controller.rb' @@ -36,6 +37,8 @@ Rails/LexicallyScopedActionFilter: - 'app/controllers/projects/project_members_controller.rb' - 'app/controllers/projects/prometheus/alerts_controller.rb' - 'app/controllers/projects/releases_controller.rb' + - 'app/controllers/projects/settings/integration_hook_logs_controller.rb' + - 'app/controllers/projects/settings/merge_requests_controller.rb' - 'app/controllers/projects/snippets_controller.rb' - 'app/controllers/projects/tags_controller.rb' - 'app/controllers/projects/todos_controller.rb' diff --git a/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue b/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue index 449b9d31dcb..346a038000e 100644 --- a/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue +++ b/app/assets/javascripts/ci_variable_list/components/ci_variable_modal.vue @@ -297,6 +297,7 @@ export default { data-testid="pipeline-form-ci-variable-value" data-qa-selector="ci_variable_value_field" class="gl-font-monospace!" + spellcheck="false" /> diff --git a/app/assets/javascripts/ci_variable_list/components/legacy_ci_variable_modal.vue b/app/assets/javascripts/ci_variable_list/components/legacy_ci_variable_modal.vue index f49cd476cb2..fa90e0e3e6c 100644 --- a/app/assets/javascripts/ci_variable_list/components/legacy_ci_variable_modal.vue +++ b/app/assets/javascripts/ci_variable_list/components/legacy_ci_variable_modal.vue @@ -275,6 +275,7 @@ export default { data-testid="pipeline-form-ci-variable-value" data-qa-selector="ci_variable_value_field" class="gl-font-monospace!" + spellcheck="false" /> diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index bc49464a560..7bc75127876 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -471,8 +471,14 @@ export default { }, fetchData(toggleTree = true) { this.fetchDiffFilesMeta() - .then(({ real_size = 0 }) => { - this.diffFilesLength = parseInt(real_size, 10) || 0; + .then((data) => { + let realSize = 0; + + if (data) { + realSize = data.real_size; + } + + this.diffFilesLength = parseInt(realSize, 10) || 0; if (toggleTree) { this.setTreeDisplay(); } diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 5234be44b05..c73012527a2 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -5,7 +5,7 @@ import { historyPushState, scrollToElement, } from '~/lib/utils/common_utils'; -import { createAlert } from '~/flash'; +import { createAlert, VARIANT_WARNING } from '~/flash'; import { diffViewerModes } from '~/ide/constants'; import axios from '~/lib/utils/axios_utils'; @@ -229,9 +229,17 @@ export const fetchDiffFilesMeta = ({ commit, state }) => { return data; }) - .catch(() => worker.terminate()); -}; + .catch((error) => { + worker.terminate(); + if (error.response.status === httpStatusCodes.NOT_FOUND) { + createAlert({ + message: __('Building your merge request. Wait a few moments, then refresh this page.'), + variant: VARIANT_WARNING, + }); + } + }); +}; export const fetchCoverageFiles = ({ commit, state }) => { const coveragePoll = new Poll({ resource: { diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue new file mode 100644 index 00000000000..2a1de2ae4a7 --- /dev/null +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/delete_modal.vue @@ -0,0 +1,61 @@ + + + diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue index 7a000aca0f2..4553dd3421b 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue @@ -2,6 +2,7 @@ import { GlDropdown, GlDropdownItem, + GlFormCheckbox, GlIcon, GlSprintf, GlTooltipDirective, @@ -26,6 +27,7 @@ export default { components: { GlDropdown, GlDropdownItem, + GlFormCheckbox, GlIcon, GlSprintf, GlTruncate, @@ -45,6 +47,11 @@ export default { type: Object, required: true, }, + selected: { + type: Boolean, + default: false, + required: false, + }, }, computed: { packageType() { @@ -90,7 +97,15 @@ export default {