diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..b8e239e404 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,72 @@ +# `build_from_dir` can't find Dockerfile when `.dockerignore` is "*" +# See https://github.com/swipely/docker-api/issues/484 +# Ignore all folders except qa/, config/initializers and the root of lib/ since +# the files we need to build the QA image are in these folders. +# Following are the files we need: +# - ./config/initializers/0_inject_enterprise_edition_module.rb +# - ./lib/gitlab.rb +# - ./qa/ +# - ./INSTALLATION_TYPE +# - ./VERSION + +/app/ +/bin/ +/builds/ +/changelogs/ +/config/environments/ +/config/helpers/ +/config/knative/ +/config/locales/ +/config/prometheus/ +/config/routes/ +/danger/ +/db/ +/doc/ +/docker/ +/ee/ +/fixtures/ +/templates/ +/lint/ +/lib/api/ +/lib/assets/ +/lib/backup/ +/lib/banzai/ +/lib/bitbucket/ +/lib/server/ +/lib/constraints/ +/lib/registry/ +/lib/policy/ +/lib/feature/ +/lib/flowdock/ +/lib/generators/ +/lib/gitaly/ +/lib/gitlab/ +/lib/api/ +/lib/token/ +/lib/mattermost/ +/lib/teams/ +/lib/storage/ +/lib/auth/ +/lib/peek/ +/lib/prometheus/ +/lib/quality/ +/lib/rouge/ +/lib/flaky/ +/lib/zip/ +/lib/sentry/ +/lib/serializers/ +/lib/support/ +/lib/check/ +/lib/tasks/ +/locale/ +/log/ +/modules/ +/plugins/ +/public/ +/rubocop/ +/scripts/ +/shared/ +/spec/ +/symbol/ +/tmp/ +/vendor/ diff --git a/.eslintrc.yml b/.eslintrc.yml index 2612fd3371..95cbc602d5 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -10,12 +10,15 @@ plugins: - import - html - "@gitlab/i18n" + - "@gitlab/vue-i18n" settings: import/resolver: webpack: config: './config/webpack.config.js' rules: "@gitlab/i18n/no-non-i18n-strings": error + "@gitlab/vue-i18n/no-bare-strings": error + "@gitlab/vue-i18n/no-bare-attribute-strings": error import/no-commonjs: error no-underscore-dangle: - error @@ -36,9 +39,6 @@ rules: vue/use-v-on-exact: off overrides: files: - # Vue is temporarily being disabled until the autofix errors are resolved - # Follow up issue https://gitlab.com/gitlab-org/gitlab-ce/issues/57969 - - '*.vue' - '**/spec/**/*' rules: "@gitlab/i18n/no-non-i18n-strings": off diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5b39304444..f926cbc293 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.21-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.29" +image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33" variables: RAILS_ENV: "test" @@ -29,7 +29,6 @@ stages: - qa - post-test - pages - - post-cleanup include: - local: .gitlab/ci/global.gitlab-ci.yml diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index b865b212ac..dae3c349ff 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -1,16 +1,20 @@ # Backend Maintainers are the default for all ruby files -*.rb @ashmckenzie @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @mayra-cabrera @nick.thomas @rspeicher @rymai @reprazent @smcgivern @tkuah -*.rake @ashmckenzie @ayufan @dbalexandre @DouweM @dzaporozhets @godfat @grzesiek @mkozono @mayra-cabrera @nick.thomas @rspeicher @rymai @reprazent @smcgivern @tkuah +*.rb @gitlab-org/maintainers/rails-backend +*.rake @gitlab-org/maintainers/rails-backend # Technical writing team are the default reviewers for everything in `doc/` /doc/ @axil @marcia @eread @mikelewis # Frontend maintainers should see everything in `app/assets/` -app/assets/ @ClemMakesApps @fatihacet @filipa @iamphill @mikegreiling @timzallmann @kushalpandya @pslaughter -*.scss @annabeldunstone @ClemMakesApps @fatihacet @filipa @iamphill @mikegreiling @timzallmann @kushalpandya @pslaughter +app/assets/ @ClemMakesApps @fatihacet @filipa @mikegreiling @timzallmann @kushalpandya @pslaughter +*.scss @annabeldunstone @ClemMakesApps @fatihacet @filipa @mikegreiling @timzallmann @kushalpandya @pslaughter -# Someone from the database team should review changes in `db/` -db/ @abrandl @NikolayS +# Maintainers from the Database team should review changes in `db/` +db/ @gl-database +lib/gitlab/background_migration/ @gl-database +lib/gitlab/database/ @gl-database +lib/gitlab/sql/ @gl-database +/ee/db/ @gl-database # Feature specific owners /ee/lib/gitlab/code_owners/ @reprazent diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 5bc109f2b7..39ae62a43c 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -15,7 +15,7 @@ review-docs-deploy-manual: extends: - .review-docs - .no-docs-and-no-qa - stage: build + stage: review script: - gem install gitlab --no-document - ./$SCRIPT_NAME deploy @@ -28,20 +28,20 @@ review-docs-deploy-manual: # Useful to preview the docs changes live. review-docs-deploy: <<: *review-docs - stage: post-test + stage: review script: - gem install gitlab --no-document - ./$SCRIPT_NAME deploy only: - - /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ce - - /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ee + - /(^docs[\/-].+|.+-docs$)/@gitlab-org/gitlab-ce + - /(^docs[\/-].+|.+-docs$)/@gitlab-org/gitlab-ee except: - /(^qa[\/-].*|.*-qa$)/ # Cleanup remote environment of gitlab-docs review-docs-cleanup: <<: *review-docs - stage: post-cleanup + stage: review environment: name: review-docs/$CI_COMMIT_REF_SLUG action: stop @@ -62,7 +62,6 @@ docs lint: before_script: [] script: - scripts/lint-doc.sh - - scripts/lint-changelog-yaml - mv doc/ /tmp/gitlab-docs/content/$DOCS_GITLAB_REPO_SUFFIX - cd /tmp/gitlab-docs # Lint Markdown diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index b3e7c85385..5c3278fcf5 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -8,14 +8,14 @@ .use-pg: &use-pg services: - - name: postgres:9.6.11 + - name: postgres:9.6.14 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine .gitlab:assets:compile-metadata: <<: *assets-compile-cache extends: .dedicated-no-docs-pull-cache-job - image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-git-2.21-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.29-docker-18.06.1 + image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-git-2.22-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.33-docker-18.06.1 dependencies: - setup-test-env services: @@ -73,7 +73,7 @@ gitlab:assets:compile pull-cache: refs: - master@gitlab-org/gitlab-ce - master@gitlab-org/gitlab-ee - - /(^docs[\/-].*|.*-docs$)/ + - /(^docs[\/-].+|.+-docs$)/ .compile-assets-metadata: extends: .dedicated-runner @@ -111,38 +111,7 @@ compile-assets pull-cache: refs: - master@gitlab-org/gitlab-ce - master@gitlab-org/gitlab-ee - - /(^docs[\/-].*|.*-docs$)/ - -gitlab:ui:visual: - extends: .dedicated-runner - before_script: [] - allow_failure: true - dependencies: - - compile-assets - - compile-assets pull-cache - script: - # Remove node modules from GitLab that may conflict with gitlab-ui - - rm -r node_modules - - git clone https://gitlab.com/gitlab-org/gitlab-ui.git - - cp public/assets/application-*.css gitlab-ui/styles/application.css - - cd gitlab-ui - - yarn install - - CSS_URL=./application.css yarn test - only: - changes: - - app/assets/stylesheets/*.scss - - app/assets/stylesheets/**/*.scss - - app/assets/stylesheets/**/**/*.scss - except: - refs: - - /(^docs[\/-].*|.*-docs$)/ - - master - variables: - - $CI_COMMIT_MESSAGE =~ /\[skip visual\]/i - artifacts: - paths: - - gitlab-ui/tests/__image_snapshots__/ - when: always + - /(^docs[\/-].+|.+-docs$)/ karma: extends: .dedicated-no-docs-pull-cache-job @@ -168,8 +137,9 @@ karma: paths: - chrome_debug.log - coverage-javascript/ -# reports: -# junit: junit_karma.xml + - tmp/tests/frontend/ + reports: + junit: junit_karma.xml jest: extends: .dedicated-no-docs-and-no-qa-pull-cache-job @@ -181,7 +151,7 @@ jest: script: - scripts/gitaly-test-spawn - date - - bundle exec rake karma:fixtures + - bundle exec rake frontend:fixtures - date - yarn jest --ci --coverage artifacts: @@ -191,8 +161,9 @@ jest: paths: - coverage-frontend/ - junit_jest.xml -# reports: -# junit: junit_jest.xml + - tmp/tests/frontend/ + reports: + junit: junit_jest.xml cache: key: jest paths: @@ -237,15 +208,15 @@ qa:selectors: qa-frontend-node:8: <<: *qa-frontend-node - image: node:8-alpine + image: node:carbon qa-frontend-node:10: <<: *qa-frontend-node - image: node:10-alpine + image: node:dubnium qa-frontend-node:latest: <<: *qa-frontend-node - image: node:alpine + image: node:latest allow_failure: true lint:javascript:report: diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 4da7f40476..78ef346d41 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -31,12 +31,12 @@ .no-docs: except: refs: - - /(^docs[\/-].*|.*-docs$)/ + - /(^docs[\/-].+|.+-docs$)/ .no-docs-and-no-qa: except: refs: - - /(^docs[\/-].*|.*-docs$)/ + - /(^docs[\/-].+|.+-docs$)/ - /(^qa[\/-].*|.*-qa$)/ .dedicated-no-docs-pull-cache-job: diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml index ffe5dbdc31..9923732e58 100644 --- a/.gitlab/ci/memory.gitlab-ci.yml +++ b/.gitlab/ci/memory.gitlab-ci.yml @@ -33,7 +33,7 @@ memory-on-boot: NODE_OPTIONS: --max_old_space_size=3584 script: # Both bootsnap and derailed monkey-patch Kernel#require, which leads to circular dependency - - DISABLE_BOOTSNAP=true PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> 'tmp/memory_on_boot.txt' + - ENABLE_BOOTSNAP=false PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> 'tmp/memory_on_boot.txt' - scripts/generate-memory-metrics-on-boot tmp/memory_on_boot.txt >> 'tmp/memory_on_boot_metrics.txt' artifacts: paths: diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index ee9e467886..dcc681294d 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -1,7 +1,6 @@ -package-and-qa: +.package-and-qa-base: image: ruby:2.6-alpine stage: review # So even if review-deploy failed we can still run this - when: manual before_script: [] dependencies: [] cache: {} @@ -13,5 +12,18 @@ package-and-qa: - install_gitlab_gem - ./scripts/trigger-build omnibus only: - - /.+/@gitlab-org/gitlab-ce - - /.+/@gitlab-org/gitlab-ee + - branches@gitlab-org/gitlab-ce + - branches@gitlab-org/gitlab-ee + +package-and-qa: + extends: .package-and-qa-base + when: manual + except: + - /(^qa[\/-].*|.*-qa$)/ + +package-and-qa-always: + extends: .package-and-qa-base + allow_failure: true + only: + - /(^qa[\/-].*|.*-qa$)/@gitlab-org/gitlab-ce + - /(^qa[\/-].*|.*-qa$)/@gitlab-org/gitlab-ee diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index c7a51beeee..50476b43dd 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -1,12 +1,12 @@ .use-pg: &use-pg services: - - name: postgres:9.6.11 + - name: postgres:9.6.14 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine .use-pg-10: &use-pg-10 services: - - name: postgres:10.7 + - name: postgres:10.9 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine @@ -80,8 +80,8 @@ - rspec_profiling/ - tmp/capybara/ - tmp/memory_test/ -# reports: -# junit: junit_rspec.xml + reports: + junit: junit_rspec.xml .rspec-metadata-pg: &rspec-metadata-pg <<: *rspec-metadata @@ -90,7 +90,7 @@ .rspec-metadata-pg-10: &rspec-metadata-pg-10 <<: *rspec-metadata <<: *use-pg-10 - image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.21-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.29" + image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.33" # DB migration, rollback, and seed jobs .db-migrate-reset: &db-migrate-reset @@ -207,7 +207,7 @@ downtime_check: - master - tags - /^[\d-]+-stable(-ee)?$/ - - /(^docs[\/-].*|.*-docs$)/ + - /(^docs[\/-].+|.+-docs$)/ - /(^qa[\/-].*|.*-qa$)/ dependencies: - setup-test-env @@ -223,6 +223,7 @@ ee_compat_check: - /^security-/ - branches@gitlab-org/gitlab-ee - branches@gitlab/gitlab-ee + - /(^docs[\/-].+|.+-docs$)/ retry: 0 artifacts: name: "${CI_JOB_NAME}_${CI_COMIT_REF_NAME}_${CI_COMMIT_SHA}" diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index e3a77574d7..3cbfa32d9a 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -7,7 +7,8 @@ except: refs: - master - - /(^docs[\/-].*|.*-docs$)/ + - /^\d+-\d+-auto-deploy-\d+$/ + - /(^docs[\/-].+|.+-docs$)/ .review-schedules-only: &review-schedules-only only: @@ -20,7 +21,7 @@ except: refs: - tags - - /(^docs[\/-].*|.*-docs$)/ + - /(^docs[\/-].+|.+-docs$)/ .review-base: &review-base extends: .dedicated-runner @@ -49,7 +50,7 @@ build-qa-image: <<: *review-docker stage: test script: - - time docker build --cache-from ${LATEST_QA_IMAGE} --tag ${QA_IMAGE} ./qa/ + - time docker build --cache-from ${LATEST_QA_IMAGE} --tag ${QA_IMAGE} --file ./qa/Dockerfile ./ - echo "${CI_JOB_TOKEN}" | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY} - time docker push ${QA_IMAGE} @@ -101,8 +102,7 @@ schedule:review-build-cng: - install_tiller - install_external_dns - download_chart - - deploy || display_deployment_debug - - wait_for_review_app_to_be_accessible + - deploy || (display_deployment_debug && exit 1) - add_license artifacts: paths: [review_app_url.txt] @@ -117,17 +117,21 @@ schedule:review-deploy: <<: *review-schedules-only review-stop: - <<: *review-base + <<: *review-only + extends: .single-script-job-dedicated-runner + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base stage: review when: manual allow_failure: true variables: - GIT_DEPTH: "1" + SCRIPT_NAME: review_apps/review-apps.sh environment: <<: *review-environment action: stop script: - - source scripts/review_apps/review-apps.sh + - wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/utils.sh + - source utils.sh + - source $(basename $SCRIPT_NAME) - delete .review-qa-base: &review-qa-base @@ -261,6 +265,7 @@ danger-review: except: refs: - master + - /^\d+-\d+-auto-deploy-\d+$/ - /^[\d-]+-stable(-ee)?$/ variables: - $CI_COMMIT_REF_NAME =~ /^ce-to-ee-.*/ diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml index 2454ea8565..4c97a4feb1 100644 --- a/.gitlab/ci/test-metadata.gitlab-ci.yml +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -39,6 +39,7 @@ update-tests-metadata: policy: push script: - retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document + - echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} - scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec_*_pg_node_*.json - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH' - rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json @@ -70,7 +71,7 @@ flaky-examples-check: except: refs: - master - - /(^docs[\/-].*|.*-docs$)/ + - /(^docs[\/-].+|.+-docs$)/ - /(^qa[\/-].*|.*-qa$)/ artifacts: expire_in: 30d diff --git a/.gitlab/ci/yaml.gitlab-ci.yml b/.gitlab/ci/yaml.gitlab-ci.yml index 401318d2df..b7aa418d8f 100644 --- a/.gitlab/ci/yaml.gitlab-ci.yml +++ b/.gitlab/ci/yaml.gitlab-ci.yml @@ -6,4 +6,4 @@ lint-ci-gitlab: dependencies: [] image: sdesbure/yamllint:latest script: - - yamllint .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates + - yamllint .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates changelogs diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md index b7db5a33fa..0cac769bd5 100644 --- a/.gitlab/issue_templates/Feature Flag Roll Out.md +++ b/.gitlab/issue_templates/Feature Flag Roll Out.md @@ -39,5 +39,6 @@ If applicable, any groups/projects that are happy to have this feature turned on - [ ] Cross post chatops slack command to `#support_gitlab-com` and in your team channel - [ ] Announce on the issue that the flag has been enabled - [ ] Remove feature flag and add changelog entry +- [ ] After the flag removal is deployed, [clean up the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) by running chatops command in `#production` channel /label ~"feature flag" diff --git a/.gitlab/issue_templates/Feature proposal.md b/.gitlab/issue_templates/Feature proposal.md index 8a49715e0e..2ba6b68a53 100644 --- a/.gitlab/issue_templates/Feature proposal.md +++ b/.gitlab/issue_templates/Feature proposal.md @@ -26,7 +26,7 @@ Add all known Documentation Requirements here, per https://docs.gitlab.com/ee/de ### Testing - + ### What does success look like, and how can we measure that? diff --git a/.gitlab/issue_templates/Security Release.md b/.gitlab/issue_templates/Security Release.md index ae469d3b12..3e60274623 100644 --- a/.gitlab/issue_templates/Security Release.md +++ b/.gitlab/issue_templates/Security Release.md @@ -1,7 +1,7 @@ ## Releases tasks @@ -12,9 +12,9 @@ Set the title to: `Security Release: 11.4.X, 11.3.X, and 11.2.X` ## Version issues: -* 11.4.X: {release task link} -* 11.3.X: {release task link} -* 11.2.X: {release task link} +* 12.2.X: {release task link} +* 12.1.X: {release task link} +* 12.0.X: {release task link} ## Security Issues: @@ -34,9 +34,9 @@ Set the title to: `Security Release: 11.4.X, 11.3.X, and 11.2.X` | Version | MR | |---------|----| -| 11.4 | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | -| 11.3 | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | -| 11.2 | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | +| 12.2 | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | +| 12.1 | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | +| 12.0 | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | | master | {https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/ link} | @@ -48,9 +48,9 @@ Set the title to: `Security Release: 11.4.X, 11.3.X, and 11.2.X` | Version | MR | |---------|----| -| 11.4| {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | -| 11.3 | {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | -| 11.2 | {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | +| 12.2 | {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | +| 12.1 | {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | +| 12.0 | {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | | master | {https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/ link} | diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 7857afb66c..3e634de4f0 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -17,7 +17,7 @@ Set the title to: `Description of the original issue` #### Backports -- [ ] Once the MR is ready to be merged, create MRs targeting the last 3 releases, plus the current RC if between the 7th and 22nd of the month. +- [ ] Once the MR is ready to be merged, create MRs targeting the latest 3 stable branches - [ ] At this point, it might be easy to squash the commits from the MR into one - You can use the script `bin/secpick` instead of the following steps, to help you cherry-picking. See the [secpick documentation] - [ ] Create each MR targeting the stable branch `X-Y-stable`, using the "Security Release" merge request template. diff --git a/.gitlab/issue_templates/Test plan.md b/.gitlab/issue_templates/Test plan.md index 3aedd5859d..f194adebc8 100644 --- a/.gitlab/issue_templates/Test plan.md +++ b/.gitlab/issue_templates/Test plan.md @@ -89,7 +89,7 @@ New end-to-end and integration tests (Selenium and API) should be added to the Please note if automated tests already exist. -When adding new automated tests, please keep [testing levels](https://docs.gitlab.com/ce/development/testing_guide/testing_levels.html) +When adding new automated tests, please keep [testing levels](https://docs.gitlab.com/ee/development/testing_guide/testing_levels.html) in mind. --> diff --git a/.gitlab/merge_request_templates/Database changes.md b/.gitlab/merge_request_templates/Database changes.md index 3f45717449..2077997a0c 100644 --- a/.gitlab/merge_request_templates/Database changes.md +++ b/.gitlab/merge_request_templates/Database changes.md @@ -39,20 +39,11 @@ When adding tables: - [ ] Ordered columns based on the [Ordering Table Columns](https://docs.gitlab.com/ee/development/ordering_table_columns.html#ordering-table-columns) guidelines - [ ] Added foreign keys to any columns pointing to data in other tables -- [ ] Added indexes for fields that are used in statements such as WHERE, ORDER BY, GROUP BY, and JOINs +- [ ] Added indexes for fields that are used in statements such as `WHERE`, `ORDER BY`, `GROUP BY`, and `JOIN`s When removing columns, tables, indexes or other structures: - [ ] Removed these in a post-deployment migration - [ ] Made sure the application no longer uses (or ignores) these structures -## General checklist - -- [ ] [Changelog entry](https://docs.gitlab.com/ee/development/changelog.html) added, if necessary -- [ ] [Documentation created/updated](https://docs.gitlab.com/ee/development/documentation/) -- [ ] [Tests added for this feature/bug](https://docs.gitlab.com/ee/development/testing_guide/index.html) -- [ ] Conforms to the [code review guidelines](https://docs.gitlab.com/ee/development/code_review.html) -- [ ] Conforms to the [merge request performance guidelines](https://docs.gitlab.com/ee/development/merge_request_performance_guidelines.html) -- [ ] Conforms to the [style guides](https://docs.gitlab.com/ee/development/contributing/style_guides.html) - -/label ~database +/label ~database ~"database::review pending" diff --git a/.haml-lint.yml b/.haml-lint.yml index 0412b24a48..399fa9656a 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -118,7 +118,6 @@ linters: - Lint/ParenthesesAsGroupedExpression - Lint/RedundantWithIndex - Lint/SafeNavigationConsistency - - Lint/Syntax - Metrics/BlockNesting - Naming/VariableName - Performance/RedundantMatch @@ -155,6 +154,9 @@ linters: enabled: true style: space + Syntax: + enabled: true + Indentation: enabled: true character: space # or tab diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 61805c2d8d..d29cb8aa0b 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -7,517 +7,517 @@ # versions of Haml-Lint, may require this file to be generated again. linters: - # Offense count: 2075 NoPlainNodes: enabled: true exclude: - - "app/views/admin/abuse_reports/_abuse_report.html.haml" - - "app/views/admin/abuse_reports/index.html.haml" - - "app/views/admin/appearances/_form.html.haml" - - "app/views/admin/application_settings/_abuse.html.haml" - - "app/views/admin/application_settings/_diff_limits.html.haml" - - "app/views/admin/application_settings/_gitaly.html.haml" - - "app/views/admin/application_settings/_influx.html.haml" - - "app/views/admin/application_settings/_ip_limits.html.haml" - - "app/views/admin/application_settings/_logging.html.haml" - - "app/views/admin/application_settings/_performance.html.haml" - - "app/views/admin/application_settings/_plantuml.html.haml" - - "app/views/admin/application_settings/_prometheus.html.haml" - - "app/views/admin/application_settings/_realtime.html.haml" - - "app/views/admin/application_settings/_repository_check.html.haml" - - "app/views/admin/application_settings/_repository_storage.html.haml" - - "app/views/admin/application_settings/_signin.html.haml" - - "app/views/admin/application_settings/_signup.html.haml" - - "app/views/admin/application_settings/_spam.html.haml" - - "app/views/admin/application_settings/_terminal.html.haml" - - "app/views/admin/application_settings/_usage.html.haml" - - "app/views/admin/application_settings/_visibility_and_access.html.haml" - - "app/views/admin/applications/_delete_form.html.haml" - - "app/views/admin/applications/_form.html.haml" - - "app/views/admin/applications/edit.html.haml" - - "app/views/admin/applications/index.html.haml" - - "app/views/admin/applications/new.html.haml" - - "app/views/admin/applications/show.html.haml" - - "app/views/admin/background_jobs/show.html.haml" - - "app/views/admin/broadcast_messages/index.html.haml" - - "app/views/admin/dashboard/index.html.haml" - - "app/views/admin/deploy_keys/new.html.haml" - - "app/views/admin/groups/show.html.haml" - - "app/views/admin/health_check/show.html.haml" - - "app/views/admin/hook_logs/_index.html.haml" - - "app/views/admin/hook_logs/show.html.haml" - - "app/views/admin/hooks/_form.html.haml" - - "app/views/admin/hooks/edit.html.haml" - - "app/views/admin/hooks/index.html.haml" - - "app/views/admin/labels/_form.html.haml" - - "app/views/admin/logs/show.html.haml" - - "app/views/admin/projects/_projects.html.haml" - - "app/views/admin/projects/show.html.haml" - - "app/views/admin/requests_profiles/index.html.haml" - - "app/views/admin/runners/_runner.html.haml" - - "app/views/admin/runners/index.html.haml" - - "app/views/admin/runners/show.html.haml" - - "app/views/admin/services/_form.html.haml" - - "app/views/admin/services/index.html.haml" - - "app/views/admin/spam_logs/_spam_log.html.haml" - - "app/views/admin/spam_logs/index.html.haml" - - "app/views/admin/system_info/show.html.haml" - - "app/views/admin/users/_access_levels.html.haml" - - "app/views/admin/users/_form.html.haml" - - "app/views/admin/users/_head.html.haml" - - "app/views/admin/users/_profile.html.haml" - - "app/views/admin/users/_projects.html.haml" - - "app/views/admin/users/new.html.haml" - - "app/views/admin/users/projects.html.haml" - - "app/views/admin/users/show.html.haml" - - "app/views/clusters/clusters/_cluster.html.haml" - - "app/views/clusters/clusters/_form.html.haml" - - "app/views/clusters/clusters/_gcp_signup_offer_banner.html.haml" - - "app/views/clusters/clusters/gcp/_form.html.haml" - - "app/views/clusters/clusters/new.html.haml" - - "app/views/dashboard/milestones/index.html.haml" - - "app/views/dashboard/projects/_blank_state_admin_welcome.html.haml" - - "app/views/dashboard/projects/_blank_state_welcome.html.haml" - - "app/views/dashboard/projects/_zero_authorized_projects.html.haml" - - "app/views/dashboard/snippets/index.html.haml" - - "app/views/dashboard/todos/_todo.html.haml" - - "app/views/dashboard/todos/index.html.haml" - - "app/views/devise/confirmations/almost_there.haml" - - "app/views/devise/mailer/_confirmation_instructions_account.html.haml" - - "app/views/devise/mailer/_confirmation_instructions_secondary.html.haml" - - "app/views/devise/mailer/email_changed.html.haml" - - "app/views/devise/mailer/password_change.html.haml" - - "app/views/devise/mailer/reset_password_instructions.html.haml" - - "app/views/devise/mailer/unlock_instructions.html.haml" - - "app/views/devise/passwords/edit.html.haml" - - "app/views/devise/sessions/_new_base.html.haml" - - "app/views/devise/sessions/_new_crowd.html.haml" - - "app/views/devise/sessions/_new_ldap.html.haml" - - "app/views/devise/sessions/new.html.haml" - - "app/views/devise/sessions/two_factor.html.haml" - - "app/views/devise/shared/_omniauth_box.html.haml" - - "app/views/devise/shared/_sign_in_link.html.haml" - - "app/views/devise/shared/_signup_box.html.haml" - - "app/views/devise/shared/_tabs_normal.html.haml" - - "app/views/discussions/_discussion.html.haml" - - "app/views/discussions/_headline.html.haml" - - "app/views/discussions/_notes.html.haml" - - "app/views/discussions/_resolve_all.html.haml" - - "app/views/doorkeeper/applications/_delete_form.html.haml" - - "app/views/doorkeeper/authorized_applications/_delete_form.html.haml" - - "app/views/errors/encoding.html.haml" - - "app/views/errors/git_not_found.html.haml" - - "app/views/errors/omniauth_error.html.haml" - - "app/views/errors/precondition_failed.html.haml" - - "app/views/events/_commit.html.haml" - - "app/views/events/_event_push.atom.haml" - - "app/views/events/event/_push.html.haml" - - "app/views/groups/_create_chat_team.html.haml" - - "app/views/groups/_group_admin_settings.html.haml" - - "app/views/groups/group_members/_new_group_member.html.haml" - - "app/views/groups/group_members/index.html.haml" - - "app/views/groups/labels/edit.html.haml" - - "app/views/groups/labels/new.html.haml" - - "app/views/groups/milestones/edit.html.haml" - - "app/views/groups/milestones/index.html.haml" - - "app/views/groups/milestones/new.html.haml" - - "app/views/groups/projects.html.haml" - - "app/views/groups/runners/edit.html.haml" - - "app/views/groups/settings/_advanced.html.haml" - - "app/views/groups/settings/_lfs.html.haml" - - "app/views/help/_shortcuts.html.haml" - - "app/views/help/index.html.haml" - - "app/views/help/instance_configuration.html.haml" - - "app/views/help/instance_configuration/_gitlab_ci.html.haml" - - "app/views/help/instance_configuration/_gitlab_pages.html.haml" - - "app/views/help/instance_configuration/_ssh_info.html.haml" - - "app/views/help/ui.html.haml" - - "app/views/import/bitbucket/status.html.haml" - - "app/views/import/bitbucket_server/status.html.haml" - - "app/views/instance_statistics/cohorts/_cohorts_table.html.haml" - - "app/views/instance_statistics/cohorts/_usage_ping.html.haml" - - "app/views/invites/show.html.haml" - - "app/views/layouts/_mailer.html.haml" - - "app/views/layouts/header/_default.html.haml" - - "app/views/layouts/header/_new_dropdown.haml" - - "app/views/layouts/mailer/devise.html.haml" - - "app/views/layouts/nav/sidebar/_profile.html.haml" - - "app/views/layouts/notify.html.haml" - - "app/views/notify/_failed_builds.html.haml" - - "app/views/notify/_reassigned_issuable_email.html.haml" - - "app/views/notify/_removal_notification.html.haml" - - "app/views/notify/autodevops_disabled_email.html.haml" - - "app/views/notify/changed_milestone_email.html.haml" - - "app/views/notify/import_issues_csv_email.html.haml" - - "app/views/notify/issue_moved_email.html.haml" - - "app/views/notify/member_access_denied_email.html.haml" - - "app/views/notify/member_invite_accepted_email.html.haml" - - "app/views/notify/member_invite_declined_email.html.haml" - - "app/views/notify/member_invited_email.html.haml" - - "app/views/notify/new_gpg_key_email.html.haml" - - "app/views/notify/new_mention_in_issue_email.html.haml" - - "app/views/notify/new_ssh_key_email.html.haml" - - "app/views/notify/new_user_email.html.haml" - - "app/views/notify/pages_domain_disabled_email.html.haml" - - "app/views/notify/pages_domain_enabled_email.html.haml" - - "app/views/notify/pages_domain_verification_failed_email.html.haml" - - "app/views/notify/pages_domain_verification_succeeded_email.html.haml" - - "app/views/notify/pipeline_failed_email.html.haml" - - "app/views/notify/pipeline_success_email.html.haml" - - "app/views/notify/project_was_exported_email.html.haml" - - "app/views/notify/project_was_moved_email.html.haml" - - "app/views/notify/project_was_not_exported_email.html.haml" - - "app/views/notify/push_to_merge_request_email.html.haml" - - "app/views/notify/remote_mirror_update_failed_email.html.haml" - - "app/views/notify/removed_milestone_issue_email.html.haml" - - "app/views/notify/removed_milestone_merge_request_email.html.haml" - - "app/views/notify/repository_push_email.html.haml" - - "app/views/peek/views/_gc.html.haml" - - "app/views/peek/views/_redis.html.haml" - - "app/views/peek/views/_sidekiq.html.haml" - - "app/views/profiles/_event_table.html.haml" - - "app/views/profiles/active_sessions/_active_session.html.haml" - - "app/views/profiles/active_sessions/index.html.haml" - - "app/views/profiles/audit_log.html.haml" - - "app/views/profiles/chat_names/_chat_name.html.haml" - - "app/views/profiles/chat_names/index.html.haml" - - "app/views/profiles/chat_names/new.html.haml" - - "app/views/profiles/emails/index.html.haml" - - "app/views/profiles/gpg_keys/_key.html.haml" - - "app/views/profiles/gpg_keys/index.html.haml" - - "app/views/profiles/keys/_key.html.haml" - - "app/views/profiles/keys/_key_details.html.haml" - - "app/views/profiles/keys/index.html.haml" - - "app/views/profiles/notifications/show.html.haml" - - "app/views/profiles/passwords/edit.html.haml" - - "app/views/profiles/personal_access_tokens/index.html.haml" - - "app/views/profiles/preferences/show.html.haml" - - "app/views/profiles/show.html.haml" - - "app/views/profiles/two_factor_auths/_codes.html.haml" - - "app/views/profiles/two_factor_auths/codes.html.haml" - - "app/views/profiles/two_factor_auths/create.html.haml" - - "app/views/profiles/two_factor_auths/show.html.haml" - - "app/views/projects/_bitbucket_import_modal.html.haml" - - "app/views/projects/_customize_workflow.html.haml" - - "app/views/projects/_deletion_failed.html.haml" - - "app/views/projects/_fork_suggestion.html.haml" - - "app/views/projects/_gitlab_import_modal.html.haml" - - "app/views/projects/_home_panel.html.haml" - - "app/views/projects/_import_project_pane.html.haml" - - "app/views/projects/_issuable_by_email.html.haml" - - "app/views/projects/_md_preview.html.haml" - - "app/views/projects/_new_project_fields.html.haml" - - "app/views/projects/_readme.html.haml" - - "app/views/projects/artifacts/_tree_file.html.haml" - - "app/views/projects/artifacts/browse.html.haml" - - "app/views/projects/blame/_age_map_legend.html.haml" - - "app/views/projects/blame/show.html.haml" - - "app/views/projects/blob/_editor.html.haml" - - "app/views/projects/blob/_header_content.html.haml" - - "app/views/projects/blob/_new_dir.html.haml" - - "app/views/projects/blob/_remove.html.haml" - - "app/views/projects/blob/_render_error.html.haml" - - "app/views/projects/blob/_template_selectors.html.haml" - - "app/views/projects/blob/_upload.html.haml" - - "app/views/projects/blob/edit.html.haml" - - "app/views/projects/blob/new.html.haml" - - "app/views/projects/blob/preview.html.haml" - - "app/views/projects/blob/viewers/_empty.html.haml" - - "app/views/projects/blob/viewers/_stl.html.haml" - - "app/views/projects/branches/_branch.html.haml" - - "app/views/projects/branches/_commit.html.haml" - - "app/views/projects/branches/_delete_protected_modal.html.haml" - - "app/views/projects/branches/new.html.haml" - - "app/views/projects/ci/builds/_build.html.haml" - - "app/views/projects/ci/lints/_create.html.haml" - - "app/views/projects/commit/_change.html.haml" - - "app/views/projects/commits/_commit.html.haml" - - "app/views/projects/commits/_inline_commit.html.haml" - - "app/views/projects/compare/_form.html.haml" - - "app/views/projects/compare/index.html.haml" - - "app/views/projects/cycle_analytics/_empty_stage.html.haml" - - "app/views/projects/cycle_analytics/_no_access.html.haml" - - "app/views/projects/cycle_analytics/_overview.html.haml" - - "app/views/projects/cycle_analytics/show.html.haml" - - "app/views/projects/deploy_keys/_form.html.haml" - - "app/views/projects/deploy_keys/_index.html.haml" - - "app/views/projects/deploy_keys/edit.html.haml" - - "app/views/projects/deploy_tokens/_revoke_modal.html.haml" - - "app/views/projects/deploy_tokens/_table.html.haml" - - "app/views/projects/deployments/_deployment.html.haml" - - "app/views/projects/diffs/_file_header.html.haml" - - "app/views/projects/diffs/_replaced_image_diff.html.haml" - - "app/views/projects/diffs/_stats.html.haml" - - "app/views/projects/empty.html.haml" - - "app/views/projects/environments/show.html.haml" - - "app/views/projects/forks/error.html.haml" - - "app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml" - - "app/views/projects/graphs/charts.html.haml" - - "app/views/projects/hook_logs/_index.html.haml" - - "app/views/projects/hook_logs/show.html.haml" - - "app/views/projects/hooks/_index.html.haml" - - "app/views/projects/hooks/edit.html.haml" - - "app/views/projects/imports/new.html.haml" - - "app/views/projects/imports/show.html.haml" - - "app/views/projects/issues/_issue.html.haml" - - "app/views/projects/issues/_new_branch.html.haml" - - "app/views/projects/issues/import_csv/_modal.html.haml" - - "app/views/projects/issues/show.html.haml" - - "app/views/projects/jobs/_header.html.haml" - - "app/views/projects/jobs/_table.html.haml" - - "app/views/projects/jobs/index.html.haml" - - "app/views/projects/labels/edit.html.haml" - - "app/views/projects/labels/new.html.haml" - - "app/views/projects/mattermosts/_no_teams.html.haml" - - "app/views/projects/mattermosts/_team_selection.html.haml" - - "app/views/projects/mattermosts/new.html.haml" - - "app/views/projects/merge_requests/_commits.html.haml" - - "app/views/projects/merge_requests/_discussion.html.haml" - - "app/views/projects/merge_requests/_how_to_merge.html.haml" - - "app/views/projects/merge_requests/_merge_request.html.haml" - - "app/views/projects/merge_requests/_mr_title.html.haml" - - "app/views/projects/merge_requests/conflicts/_commit_stats.html.haml" - - "app/views/projects/merge_requests/conflicts/_file_actions.html.haml" - - "app/views/projects/merge_requests/conflicts/_submit_form.html.haml" - - "app/views/projects/merge_requests/conflicts/components/_diff_file_editor.html.haml" - - "app/views/projects/merge_requests/conflicts/components/_inline_conflict_lines.html.haml" - - "app/views/projects/merge_requests/conflicts/show.html.haml" - - "app/views/projects/merge_requests/creations/_diffs.html.haml" - - "app/views/projects/merge_requests/creations/_new_compare.html.haml" - - "app/views/projects/merge_requests/creations/_new_submit.html.haml" - - "app/views/projects/merge_requests/diffs/_different_base.html.haml" - - "app/views/projects/merge_requests/diffs/_diffs.html.haml" - - "app/views/projects/merge_requests/diffs/_version_controls.html.haml" - - "app/views/projects/merge_requests/invalid.html.haml" - - "app/views/projects/merge_requests/widget/open/_error.html.haml" - - "app/views/projects/mirrors/_regenerate_public_ssh_key_confirm_modal.html.haml" - - "app/views/projects/mirrors/_ssh_host_keys.html.haml" - - "app/views/projects/new.html.haml" - - "app/views/projects/no_repo.html.haml" - - "app/views/projects/pages/_access.html.haml" - - "app/views/projects/pages/_destroy.haml" - - "app/views/projects/pages/_https_only.html.haml" - - "app/views/projects/pages/_list.html.haml" - - "app/views/projects/pages/_no_domains.html.haml" - - "app/views/projects/pages/_use.html.haml" - - "app/views/projects/pages/show.html.haml" - - "app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml" - - "app/views/projects/pipelines/_info.html.haml" - - "app/views/projects/pipelines/charts/_pipelines.haml" - - "app/views/projects/protected_branches/shared/_branches_list.html.haml" - - "app/views/projects/protected_branches/shared/_create_protected_branch.html.haml" - - "app/views/projects/protected_branches/shared/_dropdown.html.haml" - - "app/views/projects/protected_branches/shared/_index.html.haml" - - "app/views/projects/protected_branches/shared/_matching_branch.html.haml" - - "app/views/projects/protected_branches/shared/_protected_branch.html.haml" - - "app/views/projects/protected_branches/show.html.haml" - - "app/views/projects/protected_tags/shared/_create_protected_tag.html.haml" - - "app/views/projects/protected_tags/shared/_dropdown.html.haml" - - "app/views/projects/protected_tags/shared/_index.html.haml" - - "app/views/projects/protected_tags/shared/_matching_tag.html.haml" - - "app/views/projects/protected_tags/shared/_protected_tag.html.haml" - - "app/views/projects/protected_tags/shared/_tags_list.html.haml" - - "app/views/projects/protected_tags/show.html.haml" - - "app/views/projects/registry/repositories/_tag.html.haml" - - "app/views/projects/repositories/_feed.html.haml" - - "app/views/projects/runners/_shared_runners.html.haml" - - "app/views/projects/runners/edit.html.haml" - - "app/views/projects/services/_form.html.haml" - - "app/views/projects/services/_index.html.haml" - - "app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml" - - "app/views/projects/services/mattermost_slash_commands/_help.html.haml" - - "app/views/projects/services/prometheus/_metrics.html.haml" - - "app/views/projects/services/slack_slash_commands/_help.html.haml" - - "app/views/projects/settings/ci_cd/_badge.html.haml" - - "app/views/projects/settings/ci_cd/_form.html.haml" - - "app/views/projects/stage/_stage.html.haml" - - "app/views/projects/tags/index.html.haml" - - "app/views/projects/tags/new.html.haml" - - "app/views/projects/tags/releases/edit.html.haml" - - "app/views/projects/tree/_tree_row.html.haml" - - "app/views/projects/tree/_truncated_notice_tree_row.html.haml" - - "app/views/projects/triggers/_content.html.haml" - - "app/views/projects/triggers/_form.html.haml" - - "app/views/projects/triggers/_index.html.haml" - - "app/views/projects/triggers/_trigger.html.haml" - - "app/views/projects/triggers/edit.html.haml" - - "app/views/projects/wikis/_new.html.haml" - - "app/views/projects/wikis/_pages_wiki_page.html.haml" - - "app/views/projects/wikis/edit.html.haml" - - "app/views/projects/wikis/history.html.haml" - - "app/views/repository_check_mailer/notify.html.haml" - - "app/views/search/_form.html.haml" - - "app/views/search/results/_issue.html.haml" - - "app/views/search/results/_note.html.haml" - - "app/views/search/results/_snippet_blob.html.haml" - - "app/views/search/results/_snippet_title.html.haml" - - "app/views/shared/_auto_devops_implicitly_enabled_banner.html.haml" - - "app/views/shared/_commit_message_container.html.haml" - - "app/views/shared/_confirm_modal.html.haml" - - "app/views/shared/_delete_label_modal.html.haml" - - "app/views/shared/_group_form.html.haml" - - "app/views/shared/_group_tips.html.haml" - - "app/views/shared/_milestone_expired.html.haml" - - "app/views/shared/_no_password.html.haml" - - "app/views/shared/_no_ssh.html.haml" - - "app/views/shared/_outdated_browser.html.haml" - - "app/views/shared/_personal_access_tokens_created_container.html.haml" - - "app/views/shared/_personal_access_tokens_table.html.haml" - - "app/views/shared/_ping_consent.html.haml" - - "app/views/shared/_project_limit.html.haml" - - "app/views/shared/_service_settings.html.haml" - - "app/views/shared/boards/components/_board.html.haml" - - "app/views/shared/boards/components/_sidebar.html.haml" - - "app/views/shared/boards/components/sidebar/_due_date.html.haml" - - "app/views/shared/boards/components/sidebar/_labels.html.haml" - - "app/views/shared/boards/components/sidebar/_milestone.html.haml" - - "app/views/shared/empty_states/_priority_labels.html.haml" - - "app/views/shared/hook_logs/_content.html.haml" - - "app/views/shared/issuable/_assignees.html.haml" - - "app/views/shared/issuable/_board_create_list_dropdown.html.haml" - - "app/views/shared/issuable/_bulk_update_sidebar.html.haml" - - "app/views/shared/issuable/_close_reopen_report_toggle.html.haml" - - "app/views/shared/issuable/_form.html.haml" - - "app/views/shared/issuable/_search_bar.html.haml" - - "app/views/shared/issuable/_sidebar.html.haml" - - "app/views/shared/issuable/form/_default_templates.html.haml" - - "app/views/shared/issuable/form/_issue_assignee.html.haml" - - "app/views/shared/issuable/form/_template_selector.html.haml" - - "app/views/shared/issuable/form/_title.html.haml" - - "app/views/shared/labels/_form.html.haml" - - "app/views/shared/members/_member.html.haml" - - "app/views/shared/milestones/_form_dates.html.haml" - - "app/views/shared/milestones/_issuable.html.haml" - - "app/views/shared/milestones/_milestone.html.haml" - - "app/views/shared/milestones/_sidebar.html.haml" - - "app/views/shared/milestones/_top.html.haml" - - "app/views/shared/notes/_hints.html.haml" - - "app/views/shared/notes/_note.html.haml" - - "app/views/shared/notifications/_button.html.haml" - - "app/views/shared/notifications/_custom_notifications.html.haml" - - "app/views/shared/notifications/_new_button.html.haml" - - "app/views/shared/notifications/_notification_dropdown.html.haml" - - "app/views/shared/plugins/_index.html.haml" - - "app/views/shared/projects/_dropdown.html.haml" - - "app/views/shared/projects/_list.html.haml" - - "app/views/shared/projects/_project.html.haml" - - "app/views/shared/runners/_runner_description.html.haml" - - "app/views/shared/runners/show.html.haml" - - "app/views/shared/snippets/_embed.html.haml" - - "app/views/shared/snippets/_header.html.haml" - - "app/views/shared/snippets/_snippet.html.haml" - - "app/views/shared/tokens/_scopes_list.html.haml" - - "app/views/shared/web_hooks/_form.html.haml" - - "app/views/shared/web_hooks/_test_button.html.haml" - - "app/views/u2f/_authenticate.html.haml" - - "app/views/u2f/_register.html.haml" - - "app/views/users/_deletion_guidance.html.haml" - - "ee/app/views/admin/_namespace_plan_info.html.haml" - - "ee/app/views/admin/application_settings/_elasticsearch_form.html.haml" - - "ee/app/views/admin/application_settings/_slack.html.haml" - - "ee/app/views/admin/application_settings/_snowplow.html.haml" - - "ee/app/views/admin/application_settings/_templates.html.haml" - - "ee/app/views/admin/audit_logs/index.html.haml" - - "ee/app/views/admin/dashboard/stats.html.haml" - - "ee/app/views/admin/emails/show.html.haml" - - "ee/app/views/admin/geo/nodes/edit.html.haml" - - "ee/app/views/admin/geo/nodes/new.html.haml" - - "ee/app/views/admin/geo/projects/_registry_failed.html.haml" - - "ee/app/views/admin/geo/projects/_registry_never.html.haml" - - "ee/app/views/admin/licenses/_breakdown.html.haml" - - "ee/app/views/admin/licenses/_upload_trial_license.html.haml" - - "ee/app/views/admin/licenses/missing.html.haml" - - "ee/app/views/admin/licenses/new.html.haml" - - "ee/app/views/admin/licenses/show.html.haml" - - "ee/app/views/admin/monitoring/ee/_nav.html.haml" - - "ee/app/views/admin/projects/_shared_runner_status.html.haml" - - "ee/app/views/admin/push_rules/show.html.haml" - - "ee/app/views/admin/users/_limits.html.haml" - - "ee/app/views/admin/users/_user_detail_note.html.haml" - - "ee/app/views/dashboard/projects/_blank_state_ee_trial.html.haml" - - "ee/app/views/errors/kerberos_denied.html.haml" - - "ee/app/views/groups/analytics/show.html.haml" - - "ee/app/views/groups/audit_events/index.html.haml" - - "ee/app/views/groups/ee/_settings_nav.html.haml" - - "ee/app/views/groups/epics/_epic.html.haml" - - "ee/app/views/groups/group_members/_ldap_sync.html.haml" - - "ee/app/views/groups/group_members/_sync_button.html.haml" - - "ee/app/views/groups/hooks/_project_hook.html.haml" - - "ee/app/views/groups/hooks/index.html.haml" - - "ee/app/views/groups/ldap_group_links/index.html.haml" - - "ee/app/views/groups/pipeline_quota/index.html.haml" - - "ee/app/views/jira_connect/subscriptions/index.html.haml" - - "ee/app/views/layouts/jira_connect.html.haml" - - "ee/app/views/layouts/nav/ee/_epic_link.html.haml" - - "ee/app/views/layouts/nav/ee/admin/_new_monitoring_sidebar.html.haml" - - "ee/app/views/layouts/service_desk.html.haml" - - "ee/app/views/ldap_group_links/_form.html.haml" - - "ee/app/views/ldap_group_links/_ldap_group_link.html.haml" - - "ee/app/views/ldap_group_links/_ldap_group_links.html.haml" - - "ee/app/views/ldap_group_links/_ldap_group_links_show.html.haml" - - "ee/app/views/ldap_group_links/_ldap_group_links_synchronizations.html.haml" - - "ee/app/views/namespaces/_shared_runner_status.html.haml" - - "ee/app/views/namespaces/_shared_runners_minutes_setting.html.haml" - - "ee/app/views/namespaces/pipelines_quota/_extra_shared_runners_minutes_quota.html.haml" - - "ee/app/views/namespaces/pipelines_quota/_list.haml" - - "ee/app/views/notify/approved_merge_request_email.html.haml" - - "ee/app/views/notify/epic_status_changed_email.html.haml" - - "ee/app/views/notify/issues_csv_email.html.haml" - - "ee/app/views/notify/new_review_email.html.haml" - - "ee/app/views/notify/prometheus_alert_fired_email.html.haml" - - "ee/app/views/notify/send_admin_notification.html.haml" - - "ee/app/views/notify/send_unsubscribed_notification.html.haml" - - "ee/app/views/notify/unapproved_merge_request_email.html.haml" - - "ee/app/views/oauth/geo_auth/error.html.haml" - - "ee/app/views/profiles/pipeline_quota/index.haml" - - "ee/app/views/projects/audit_events/index.html.haml" - - "ee/app/views/projects/blob/_owners.html.haml" - - "ee/app/views/projects/commits/_mirror_status.html.haml" - - "ee/app/views/projects/feature_flags/_configure_feature_flags_modal.html.haml" - - "ee/app/views/projects/issues/_issue_weight.html.haml" - - "ee/app/views/projects/issues/_related_issues.html.haml" - - "ee/app/views/projects/issues/export_csv/_modal.html.haml" - - "ee/app/views/projects/jobs/_shared_runner_limit_warning.html.haml" - - "ee/app/views/projects/merge_requests/_approvals_count.html.haml" - - "ee/app/views/projects/merge_requests/widget/open/_geo.html.haml" - - "ee/app/views/projects/mirrors/_mirrored_repositories_count.html.haml" - - "ee/app/views/projects/protected_branches/ee/_create_protected_branch.html.haml" - - "ee/app/views/projects/protected_branches/ee/_dropdown.html.haml" - - "ee/app/views/projects/protected_branches/ee/_fallback_update_protected_branch.html.haml" - - "ee/app/views/projects/protected_tags/_protected_tag_extra_create_access_levels.haml" - - "ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml" - - "ee/app/views/projects/push_rules/_index.html.haml" - - "ee/app/views/projects/services/gitlab_slack_application/_help.html.haml" - - "ee/app/views/projects/services/gitlab_slack_application/_slack_integration_form.html.haml" - - "ee/app/views/projects/services/prometheus/_metrics.html.haml" - - "ee/app/views/projects/settings/slacks/edit.html.haml" - - "ee/app/views/shared/_additional_email_text.html.haml" - - "ee/app/views/shared/_geo_info_modal.html.haml" - - "ee/app/views/shared/_mirror_update_button.html.haml" - - "ee/app/views/shared/_shared_runners_minutes_limit.html.haml" - - "ee/app/views/shared/audit_events/_event_table.html.haml" - - "ee/app/views/shared/boards/components/_list_weight.html.haml" - - "ee/app/views/shared/boards/components/sidebar/_epic.html.haml" - - "ee/app/views/shared/ee/_import_form.html.haml" - - "ee/app/views/shared/epic/_search_bar.html.haml" - - "ee/app/views/shared/issuable/_approvals.html.haml" - - "ee/app/views/shared/issuable/_board_create_list_dropdown.html.haml" - - "ee/app/views/shared/issuable/_filter_weight.html.haml" - - "ee/app/views/shared/issuable/_sidebar_item_epic.haml" - - "ee/app/views/shared/members/ee/_ldap_tag.html.haml" - - "ee/app/views/shared/members/ee/_override_member_buttons.html.haml" - - "ee/app/views/shared/members/ee/_sso_badge.html.haml" - - "ee/app/views/shared/milestones/_burndown.html.haml" - - "ee/app/views/shared/milestones/_weight.html.haml" - - "ee/app/views/shared/promotions/_promote_audit_events.html.haml" - - "ee/app/views/shared/promotions/_promote_burndown_charts.html.haml" - - "ee/app/views/shared/promotions/_promote_csv_export.html.haml" - - "ee/app/views/shared/promotions/_promote_issue_weights.html.haml" - - "ee/app/views/shared/promotions/_promote_repository_features.html.haml" - - "ee/app/views/shared/promotions/_promote_servicedesk.html.haml" - - "ee/app/views/shared/push_rules/_form.html.haml" - - "ee/app/views/unsubscribes/show.html.haml" - - "ee/app/views/admin/users/_auditor_access_level_radio.html.haml" - - "ee/app/views/admin/users/_auditor_user_badge.html.haml" - - "ee/app/views/projects/protected_branches/_update_protected_branch.html.haml" + - 'app/views/admin/abuse_reports/_abuse_report.html.haml' + - 'app/views/admin/abuse_reports/index.html.haml' + - 'app/views/admin/appearances/_form.html.haml' + - 'app/views/admin/application_settings/_abuse.html.haml' + - 'app/views/admin/application_settings/_diff_limits.html.haml' + - 'app/views/admin/application_settings/_gitaly.html.haml' + - 'app/views/admin/application_settings/_influx.html.haml' + - 'app/views/admin/application_settings/_ip_limits.html.haml' + - 'app/views/admin/application_settings/_logging.html.haml' + - 'app/views/admin/application_settings/_performance.html.haml' + - 'app/views/admin/application_settings/_plantuml.html.haml' + - 'app/views/admin/application_settings/_prometheus.html.haml' + - 'app/views/admin/application_settings/_realtime.html.haml' + - 'app/views/admin/application_settings/_repository_check.html.haml' + - 'app/views/admin/application_settings/_repository_storage.html.haml' + - 'app/views/admin/application_settings/_signin.html.haml' + - 'app/views/admin/application_settings/_signup.html.haml' + - 'app/views/admin/application_settings/_spam.html.haml' + - 'app/views/admin/application_settings/_terminal.html.haml' + - 'app/views/admin/application_settings/_usage.html.haml' + - 'app/views/admin/application_settings/_visibility_and_access.html.haml' + - 'app/views/admin/applications/_delete_form.html.haml' + - 'app/views/admin/applications/_form.html.haml' + - 'app/views/admin/applications/edit.html.haml' + - 'app/views/admin/applications/index.html.haml' + - 'app/views/admin/applications/new.html.haml' + - 'app/views/admin/applications/show.html.haml' + - 'app/views/admin/background_jobs/show.html.haml' + - 'app/views/admin/broadcast_messages/index.html.haml' + - 'app/views/admin/dashboard/index.html.haml' + - 'app/views/admin/deploy_keys/new.html.haml' + - 'app/views/admin/groups/show.html.haml' + - 'app/views/admin/health_check/show.html.haml' + - 'app/views/admin/hook_logs/_index.html.haml' + - 'app/views/admin/hook_logs/show.html.haml' + - 'app/views/admin/hooks/_form.html.haml' + - 'app/views/admin/hooks/edit.html.haml' + - 'app/views/admin/hooks/index.html.haml' + - 'app/views/admin/labels/_form.html.haml' + - 'app/views/admin/logs/show.html.haml' + - 'app/views/admin/projects/_projects.html.haml' + - 'app/views/admin/projects/show.html.haml' + - 'app/views/admin/requests_profiles/index.html.haml' + - 'app/views/admin/runners/_runner.html.haml' + - 'app/views/admin/runners/index.html.haml' + - 'app/views/admin/runners/show.html.haml' + - 'app/views/admin/services/_form.html.haml' + - 'app/views/admin/services/index.html.haml' + - 'app/views/admin/spam_logs/_spam_log.html.haml' + - 'app/views/admin/spam_logs/index.html.haml' + - 'app/views/admin/system_info/show.html.haml' + - 'app/views/admin/users/_access_levels.html.haml' + - 'app/views/admin/users/_form.html.haml' + - 'app/views/admin/users/_head.html.haml' + - 'app/views/admin/users/_profile.html.haml' + - 'app/views/admin/users/_projects.html.haml' + - 'app/views/admin/users/new.html.haml' + - 'app/views/admin/users/projects.html.haml' + - 'app/views/admin/users/show.html.haml' + - 'app/views/clusters/clusters/_cluster.html.haml' + - 'app/views/clusters/clusters/_form.html.haml' + - 'app/views/clusters/clusters/_gcp_signup_offer_banner.html.haml' + - 'app/views/clusters/clusters/gcp/_form.html.haml' + - 'app/views/clusters/clusters/new.html.haml' + - 'app/views/dashboard/milestones/index.html.haml' + - 'app/views/dashboard/projects/_blank_state_admin_welcome.html.haml' + - 'app/views/dashboard/projects/_blank_state_welcome.html.haml' + - 'app/views/dashboard/projects/_zero_authorized_projects.html.haml' + - 'app/views/dashboard/snippets/index.html.haml' + - 'app/views/dashboard/todos/_todo.html.haml' + - 'app/views/dashboard/todos/index.html.haml' + - 'app/views/devise/confirmations/almost_there.haml' + - 'app/views/devise/mailer/_confirmation_instructions_account.html.haml' + - 'app/views/devise/mailer/_confirmation_instructions_secondary.html.haml' + - 'app/views/devise/mailer/email_changed.html.haml' + - 'app/views/devise/mailer/password_change.html.haml' + - 'app/views/devise/mailer/reset_password_instructions.html.haml' + - 'app/views/devise/mailer/unlock_instructions.html.haml' + - 'app/views/devise/passwords/edit.html.haml' + - 'app/views/devise/sessions/_new_base.html.haml' + - 'app/views/devise/sessions/_new_crowd.html.haml' + - 'app/views/devise/sessions/_new_ldap.html.haml' + - 'app/views/devise/sessions/new.html.haml' + - 'app/views/devise/sessions/two_factor.html.haml' + - 'app/views/devise/shared/_omniauth_box.html.haml' + - 'app/views/devise/shared/_sign_in_link.html.haml' + - 'app/views/devise/shared/_signup_box.html.haml' + - 'app/views/devise/shared/_tabs_normal.html.haml' + - 'app/views/discussions/_discussion.html.haml' + - 'app/views/discussions/_headline.html.haml' + - 'app/views/discussions/_notes.html.haml' + - 'app/views/discussions/_resolve_all.html.haml' + - 'app/views/doorkeeper/applications/_delete_form.html.haml' + - 'app/views/doorkeeper/authorized_applications/_delete_form.html.haml' + - 'app/views/errors/encoding.html.haml' + - 'app/views/errors/git_not_found.html.haml' + - 'app/views/errors/omniauth_error.html.haml' + - 'app/views/errors/precondition_failed.html.haml' + - 'app/views/events/_commit.html.haml' + - 'app/views/events/_event_push.atom.haml' + - 'app/views/events/event/_push.html.haml' + - 'app/views/groups/_create_chat_team.html.haml' + - 'app/views/groups/_group_admin_settings.html.haml' + - 'app/views/groups/group_members/_new_group_member.html.haml' + - 'app/views/groups/group_members/index.html.haml' + - 'app/views/groups/labels/edit.html.haml' + - 'app/views/groups/labels/new.html.haml' + - 'app/views/groups/milestones/edit.html.haml' + - 'app/views/groups/milestones/index.html.haml' + - 'app/views/groups/milestones/new.html.haml' + - 'app/views/groups/projects.html.haml' + - 'app/views/groups/runners/edit.html.haml' + - 'app/views/groups/settings/_advanced.html.haml' + - 'app/views/groups/settings/_lfs.html.haml' + - 'app/views/help/_shortcuts.html.haml' + - 'app/views/help/index.html.haml' + - 'app/views/help/instance_configuration.html.haml' + - 'app/views/help/instance_configuration/_gitlab_ci.html.haml' + - 'app/views/help/instance_configuration/_gitlab_pages.html.haml' + - 'app/views/help/instance_configuration/_ssh_info.html.haml' + - 'app/views/help/ui.html.haml' + - 'app/views/import/bitbucket/status.html.haml' + - 'app/views/import/bitbucket_server/status.html.haml' + - 'app/views/instance_statistics/cohorts/_cohorts_table.html.haml' + - 'app/views/instance_statistics/cohorts/_usage_ping.html.haml' + - 'app/views/invites/show.html.haml' + - 'app/views/layouts/_mailer.html.haml' + - 'app/views/layouts/header/_default.html.haml' + - 'app/views/layouts/header/_new_dropdown.haml' + - 'app/views/layouts/mailer/devise.html.haml' + - 'app/views/layouts/nav/sidebar/_profile.html.haml' + - 'app/views/layouts/notify.html.haml' + - 'app/views/notify/_failed_builds.html.haml' + - 'app/views/notify/_reassigned_issuable_email.html.haml' + - 'app/views/notify/_removal_notification.html.haml' + - 'app/views/notify/autodevops_disabled_email.html.haml' + - 'app/views/notify/changed_milestone_email.html.haml' + - 'app/views/notify/import_issues_csv_email.html.haml' + - 'app/views/notify/issue_moved_email.html.haml' + - 'app/views/notify/member_access_denied_email.html.haml' + - 'app/views/notify/member_invite_accepted_email.html.haml' + - 'app/views/notify/member_invite_declined_email.html.haml' + - 'app/views/notify/member_invited_email.html.haml' + - 'app/views/notify/new_gpg_key_email.html.haml' + - 'app/views/notify/new_mention_in_issue_email.html.haml' + - 'app/views/notify/new_ssh_key_email.html.haml' + - 'app/views/notify/new_user_email.html.haml' + - 'app/views/notify/pages_domain_disabled_email.html.haml' + - 'app/views/notify/pages_domain_enabled_email.html.haml' + - 'app/views/notify/pages_domain_verification_failed_email.html.haml' + - 'app/views/notify/pages_domain_verification_succeeded_email.html.haml' + - 'app/views/notify/pipeline_failed_email.html.haml' + - 'app/views/notify/pipeline_success_email.html.haml' + - 'app/views/notify/project_was_exported_email.html.haml' + - 'app/views/notify/project_was_moved_email.html.haml' + - 'app/views/notify/project_was_not_exported_email.html.haml' + - 'app/views/notify/push_to_merge_request_email.html.haml' + - 'app/views/notify/remote_mirror_update_failed_email.html.haml' + - 'app/views/notify/removed_milestone_issue_email.html.haml' + - 'app/views/notify/removed_milestone_merge_request_email.html.haml' + - 'app/views/notify/repository_push_email.html.haml' + - 'app/views/peek/views/_gc.html.haml' + - 'app/views/peek/views/_redis.html.haml' + - 'app/views/peek/views/_sidekiq.html.haml' + - 'app/views/profiles/_event_table.html.haml' + - 'app/views/profiles/active_sessions/_active_session.html.haml' + - 'app/views/profiles/active_sessions/index.html.haml' + - 'app/views/profiles/audit_log.html.haml' + - 'app/views/profiles/chat_names/_chat_name.html.haml' + - 'app/views/profiles/chat_names/index.html.haml' + - 'app/views/profiles/chat_names/new.html.haml' + - 'app/views/profiles/emails/index.html.haml' + - 'app/views/profiles/gpg_keys/_key.html.haml' + - 'app/views/profiles/gpg_keys/index.html.haml' + - 'app/views/profiles/keys/_key.html.haml' + - 'app/views/profiles/keys/_key_details.html.haml' + - 'app/views/profiles/keys/index.html.haml' + - 'app/views/profiles/notifications/show.html.haml' + - 'app/views/profiles/passwords/edit.html.haml' + - 'app/views/profiles/personal_access_tokens/index.html.haml' + - 'app/views/profiles/preferences/show.html.haml' + - 'app/views/profiles/show.html.haml' + - 'app/views/profiles/two_factor_auths/_codes.html.haml' + - 'app/views/profiles/two_factor_auths/codes.html.haml' + - 'app/views/profiles/two_factor_auths/create.html.haml' + - 'app/views/profiles/two_factor_auths/show.html.haml' + - 'app/views/projects/_bitbucket_import_modal.html.haml' + - 'app/views/projects/_customize_workflow.html.haml' + - 'app/views/projects/_deletion_failed.html.haml' + - 'app/views/projects/_fork_suggestion.html.haml' + - 'app/views/projects/_gitlab_import_modal.html.haml' + - 'app/views/projects/_home_panel.html.haml' + - 'app/views/projects/_import_project_pane.html.haml' + - 'app/views/projects/_issuable_by_email.html.haml' + - 'app/views/projects/_md_preview.html.haml' + - 'app/views/projects/_new_project_fields.html.haml' + - 'app/views/projects/_readme.html.haml' + - 'app/views/projects/artifacts/_tree_file.html.haml' + - 'app/views/projects/artifacts/browse.html.haml' + - 'app/views/projects/blame/_age_map_legend.html.haml' + - 'app/views/projects/blame/show.html.haml' + - 'app/views/projects/blob/_editor.html.haml' + - 'app/views/projects/blob/_header_content.html.haml' + - 'app/views/projects/blob/_new_dir.html.haml' + - 'app/views/projects/blob/_remove.html.haml' + - 'app/views/projects/blob/_render_error.html.haml' + - 'app/views/projects/blob/_template_selectors.html.haml' + - 'app/views/projects/blob/_upload.html.haml' + - 'app/views/projects/blob/edit.html.haml' + - 'app/views/projects/blob/new.html.haml' + - 'app/views/projects/blob/preview.html.haml' + - 'app/views/projects/blob/viewers/_empty.html.haml' + - 'app/views/projects/blob/viewers/_stl.html.haml' + - 'app/views/projects/branches/_branch.html.haml' + - 'app/views/projects/branches/_commit.html.haml' + - 'app/views/projects/branches/_delete_protected_modal.html.haml' + - 'app/views/projects/branches/new.html.haml' + - 'app/views/projects/ci/builds/_build.html.haml' + - 'app/views/projects/ci/lints/_create.html.haml' + - 'app/views/projects/commit/_change.html.haml' + - 'app/views/projects/commits/_commit.html.haml' + - 'app/views/projects/commits/_inline_commit.html.haml' + - 'app/views/projects/compare/_form.html.haml' + - 'app/views/projects/compare/index.html.haml' + - 'app/views/projects/cycle_analytics/_empty_stage.html.haml' + - 'app/views/projects/cycle_analytics/_no_access.html.haml' + - 'app/views/projects/cycle_analytics/_overview.html.haml' + - 'app/views/projects/cycle_analytics/show.html.haml' + - 'app/views/projects/deploy_keys/_form.html.haml' + - 'app/views/projects/deploy_keys/_index.html.haml' + - 'app/views/projects/deploy_keys/edit.html.haml' + - 'app/views/projects/deploy_tokens/_revoke_modal.html.haml' + - 'app/views/projects/deploy_tokens/_table.html.haml' + - 'app/views/projects/deployments/_deployment.html.haml' + - 'app/views/projects/diffs/_file_header.html.haml' + - 'app/views/projects/diffs/_replaced_image_diff.html.haml' + - 'app/views/projects/diffs/_stats.html.haml' + - 'app/views/projects/empty.html.haml' + - 'app/views/projects/environments/show.html.haml' + - 'app/views/projects/forks/error.html.haml' + - 'app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml' + - 'app/views/projects/graphs/charts.html.haml' + - 'app/views/projects/hook_logs/_index.html.haml' + - 'app/views/projects/hook_logs/show.html.haml' + - 'app/views/projects/hooks/_index.html.haml' + - 'app/views/projects/hooks/edit.html.haml' + - 'app/views/projects/imports/new.html.haml' + - 'app/views/projects/imports/show.html.haml' + - 'app/views/projects/issues/_issue.html.haml' + - 'app/views/projects/issues/_new_branch.html.haml' + - 'app/views/projects/issues/import_csv/_modal.html.haml' + - 'app/views/projects/issues/show.html.haml' + - 'app/views/projects/jobs/_header.html.haml' + - 'app/views/projects/jobs/_table.html.haml' + - 'app/views/projects/jobs/index.html.haml' + - 'app/views/projects/labels/edit.html.haml' + - 'app/views/projects/labels/new.html.haml' + - 'app/views/projects/mattermosts/_no_teams.html.haml' + - 'app/views/projects/mattermosts/_team_selection.html.haml' + - 'app/views/projects/mattermosts/new.html.haml' + - 'app/views/projects/merge_requests/_commits.html.haml' + - 'app/views/projects/merge_requests/_discussion.html.haml' + - 'app/views/projects/merge_requests/_how_to_merge.html.haml' + - 'app/views/projects/merge_requests/_merge_request.html.haml' + - 'app/views/projects/merge_requests/_mr_title.html.haml' + - 'app/views/projects/merge_requests/conflicts/_commit_stats.html.haml' + - 'app/views/projects/merge_requests/conflicts/_file_actions.html.haml' + - 'app/views/projects/merge_requests/conflicts/_submit_form.html.haml' + - 'app/views/projects/merge_requests/conflicts/components/_diff_file_editor.html.haml' + - 'app/views/projects/merge_requests/conflicts/components/_inline_conflict_lines.html.haml' + - 'app/views/projects/merge_requests/conflicts/show.html.haml' + - 'app/views/projects/merge_requests/creations/_diffs.html.haml' + - 'app/views/projects/merge_requests/creations/_new_compare.html.haml' + - 'app/views/projects/merge_requests/creations/_new_submit.html.haml' + - 'app/views/projects/merge_requests/diffs/_different_base.html.haml' + - 'app/views/projects/merge_requests/diffs/_diffs.html.haml' + - 'app/views/projects/merge_requests/diffs/_version_controls.html.haml' + - 'app/views/projects/merge_requests/invalid.html.haml' + - 'app/views/projects/merge_requests/widget/open/_error.html.haml' + - 'app/views/projects/mirrors/_regenerate_public_ssh_key_confirm_modal.html.haml' + - 'app/views/projects/mirrors/_ssh_host_keys.html.haml' + - 'app/views/projects/new.html.haml' + - 'app/views/projects/no_repo.html.haml' + - 'app/views/projects/pages/_access.html.haml' + - 'app/views/projects/pages/_destroy.haml' + - 'app/views/projects/pages/_https_only.html.haml' + - 'app/views/projects/pages/_list.html.haml' + - 'app/views/projects/pages/_no_domains.html.haml' + - 'app/views/projects/pages/_use.html.haml' + - 'app/views/projects/pages/show.html.haml' + - 'app/views/projects/pipeline_schedules/_pipeline_schedule.html.haml' + - 'app/views/projects/pipelines/_info.html.haml' + - 'app/views/projects/pipelines/charts/_pipelines.haml' + - 'app/views/projects/protected_branches/shared/_branches_list.html.haml' + - 'app/views/projects/protected_branches/shared/_create_protected_branch.html.haml' + - 'app/views/projects/protected_branches/shared/_dropdown.html.haml' + - 'app/views/projects/protected_branches/shared/_index.html.haml' + - 'app/views/projects/protected_branches/shared/_matching_branch.html.haml' + - 'app/views/projects/protected_branches/shared/_protected_branch.html.haml' + - 'app/views/projects/protected_branches/show.html.haml' + - 'app/views/projects/protected_tags/shared/_create_protected_tag.html.haml' + - 'app/views/projects/protected_tags/shared/_dropdown.html.haml' + - 'app/views/projects/protected_tags/shared/_index.html.haml' + - 'app/views/projects/protected_tags/shared/_matching_tag.html.haml' + - 'app/views/projects/protected_tags/shared/_protected_tag.html.haml' + - 'app/views/projects/protected_tags/shared/_tags_list.html.haml' + - 'app/views/projects/protected_tags/show.html.haml' + - 'app/views/projects/registry/repositories/_tag.html.haml' + - 'app/views/projects/repositories/_feed.html.haml' + - 'app/views/projects/runners/_shared_runners.html.haml' + - 'app/views/projects/runners/edit.html.haml' + - 'app/views/projects/services/_form.html.haml' + - 'app/views/projects/services/_index.html.haml' + - 'app/views/projects/services/mattermost_slash_commands/_detailed_help.html.haml' + - 'app/views/projects/services/mattermost_slash_commands/_help.html.haml' + - 'app/views/projects/services/prometheus/_metrics.html.haml' + - 'app/views/projects/services/slack_slash_commands/_help.html.haml' + - 'app/views/projects/settings/ci_cd/_badge.html.haml' + - 'app/views/projects/settings/ci_cd/_form.html.haml' + - 'app/views/projects/stage/_stage.html.haml' + - 'app/views/projects/tags/index.html.haml' + - 'app/views/projects/tags/new.html.haml' + - 'app/views/projects/tags/releases/edit.html.haml' + - 'app/views/projects/tree/_tree_row.html.haml' + - 'app/views/projects/tree/_truncated_notice_tree_row.html.haml' + - 'app/views/projects/triggers/_content.html.haml' + - 'app/views/projects/triggers/_form.html.haml' + - 'app/views/projects/triggers/_index.html.haml' + - 'app/views/projects/triggers/_trigger.html.haml' + - 'app/views/projects/triggers/edit.html.haml' + - 'app/views/projects/wikis/_new.html.haml' + - 'app/views/projects/wikis/_pages_wiki_page.html.haml' + - 'app/views/projects/wikis/edit.html.haml' + - 'app/views/projects/wikis/history.html.haml' + - 'app/views/repository_check_mailer/notify.html.haml' + - 'app/views/search/_form.html.haml' + - 'app/views/search/results/_issue.html.haml' + - 'app/views/search/results/_note.html.haml' + - 'app/views/search/results/_snippet_blob.html.haml' + - 'app/views/search/results/_snippet_title.html.haml' + - 'app/views/shared/_auto_devops_implicitly_enabled_banner.html.haml' + - 'app/views/shared/_commit_message_container.html.haml' + - 'app/views/shared/_confirm_modal.html.haml' + - 'app/views/shared/_delete_label_modal.html.haml' + - 'app/views/shared/_group_form.html.haml' + - 'app/views/shared/_group_tips.html.haml' + - 'app/views/shared/_milestone_expired.html.haml' + - 'app/views/shared/_no_password.html.haml' + - 'app/views/shared/_no_ssh.html.haml' + - 'app/views/shared/_outdated_browser.html.haml' + - 'app/views/shared/_personal_access_tokens_created_container.html.haml' + - 'app/views/shared/_personal_access_tokens_table.html.haml' + - 'app/views/shared/_ping_consent.html.haml' + - 'app/views/shared/_project_limit.html.haml' + - 'app/views/shared/_service_settings.html.haml' + - 'app/views/shared/boards/components/_board.html.haml' + - 'app/views/shared/boards/components/_sidebar.html.haml' + - 'app/views/shared/boards/components/sidebar/_due_date.html.haml' + - 'app/views/shared/boards/components/sidebar/_labels.html.haml' + - 'app/views/shared/boards/components/sidebar/_milestone.html.haml' + - 'app/views/shared/empty_states/_priority_labels.html.haml' + - 'app/views/shared/hook_logs/_content.html.haml' + - 'app/views/shared/issuable/_assignees.html.haml' + - 'app/views/shared/issuable/_board_create_list_dropdown.html.haml' + - 'app/views/shared/issuable/_bulk_update_sidebar.html.haml' + - 'app/views/shared/issuable/_close_reopen_report_toggle.html.haml' + - 'app/views/shared/issuable/_form.html.haml' + - 'app/views/shared/issuable/_search_bar.html.haml' + - 'app/views/shared/issuable/_sidebar.html.haml' + - 'app/views/shared/issuable/form/_default_templates.html.haml' + - 'app/views/shared/issuable/form/_issue_assignee.html.haml' + - 'app/views/shared/issuable/form/_template_selector.html.haml' + - 'app/views/shared/issuable/form/_title.html.haml' + - 'app/views/shared/labels/_form.html.haml' + - 'app/views/shared/members/_member.html.haml' + - 'app/views/shared/milestones/_form_dates.html.haml' + - 'app/views/shared/milestones/_issuable.html.haml' + - 'app/views/shared/milestones/_milestone.html.haml' + - 'app/views/shared/milestones/_sidebar.html.haml' + - 'app/views/shared/milestones/_top.html.haml' + - 'app/views/shared/notes/_hints.html.haml' + - 'app/views/shared/notes/_note.html.haml' + - 'app/views/shared/notifications/_button.html.haml' + - 'app/views/shared/notifications/_custom_notifications.html.haml' + - 'app/views/shared/notifications/_new_button.html.haml' + - 'app/views/shared/notifications/_notification_dropdown.html.haml' + - 'app/views/shared/plugins/_index.html.haml' + - 'app/views/shared/projects/_dropdown.html.haml' + - 'app/views/shared/projects/_list.html.haml' + - 'app/views/shared/projects/_project.html.haml' + - 'app/views/shared/runners/_runner_description.html.haml' + - 'app/views/shared/runners/show.html.haml' + - 'app/views/shared/snippets/_embed.html.haml' + - 'app/views/shared/snippets/_header.html.haml' + - 'app/views/shared/snippets/_snippet.html.haml' + - 'app/views/shared/tokens/_scopes_list.html.haml' + - 'app/views/shared/web_hooks/_form.html.haml' + - 'app/views/shared/web_hooks/_test_button.html.haml' + - 'app/views/u2f/_authenticate.html.haml' + - 'app/views/u2f/_register.html.haml' + - 'app/views/users/_deletion_guidance.html.haml' + - 'ee/app/views/admin/_namespace_plan_info.html.haml' + - 'ee/app/views/admin/application_settings/_elasticsearch_form.html.haml' + - 'ee/app/views/admin/application_settings/_slack.html.haml' + - 'ee/app/views/admin/application_settings/_snowplow.html.haml' + - 'ee/app/views/admin/application_settings/_templates.html.haml' + - 'ee/app/views/admin/audit_logs/index.html.haml' + - 'ee/app/views/admin/dashboard/stats.html.haml' + - 'ee/app/views/admin/emails/show.html.haml' + - 'ee/app/views/admin/geo/nodes/edit.html.haml' + - 'ee/app/views/admin/geo/nodes/new.html.haml' + - 'ee/app/views/admin/geo/projects/_registry_failed.html.haml' + - 'ee/app/views/admin/geo/projects/_registry_never.html.haml' + - 'ee/app/views/admin/licenses/_breakdown.html.haml' + - 'ee/app/views/admin/licenses/_upload_trial_license.html.haml' + - 'ee/app/views/admin/licenses/missing.html.haml' + - 'ee/app/views/admin/licenses/new.html.haml' + - 'ee/app/views/admin/licenses/show.html.haml' + - 'ee/app/views/admin/monitoring/ee/_nav.html.haml' + - 'ee/app/views/admin/projects/_shared_runner_status.html.haml' + - 'ee/app/views/admin/push_rules/show.html.haml' + - 'ee/app/views/admin/users/_limits.html.haml' + - 'ee/app/views/admin/users/_user_detail_note.html.haml' + - 'ee/app/views/dashboard/projects/_blank_state_ee_trial.html.haml' + - 'ee/app/views/errors/kerberos_denied.html.haml' + - 'ee/app/views/groups/analytics/show.html.haml' + - 'ee/app/views/groups/audit_events/index.html.haml' + - 'ee/app/views/groups/ee/_settings_nav.html.haml' + - 'ee/app/views/groups/epics/_epic.html.haml' + - 'ee/app/views/groups/group_members/_ldap_sync.html.haml' + - 'ee/app/views/groups/group_members/_sync_button.html.haml' + - 'ee/app/views/groups/hooks/_project_hook.html.haml' + - 'ee/app/views/groups/hooks/index.html.haml' + - 'ee/app/views/groups/ldap_group_links/index.html.haml' + - 'ee/app/views/groups/pipeline_quota/index.html.haml' + - 'ee/app/views/jira_connect/subscriptions/index.html.haml' + - 'ee/app/views/layouts/jira_connect.html.haml' + - 'ee/app/views/layouts/nav/ee/_epic_link.html.haml' + - 'ee/app/views/layouts/nav/ee/admin/_new_monitoring_sidebar.html.haml' + - 'ee/app/views/layouts/service_desk.html.haml' + - 'ee/app/views/ldap_group_links/_form.html.haml' + - 'ee/app/views/ldap_group_links/_ldap_group_link.html.haml' + - 'ee/app/views/ldap_group_links/_ldap_group_links.html.haml' + - 'ee/app/views/ldap_group_links/_ldap_group_links_show.html.haml' + - 'ee/app/views/ldap_group_links/_ldap_group_links_synchronizations.html.haml' + - 'ee/app/views/namespaces/_shared_runner_status.html.haml' + - 'ee/app/views/namespaces/_shared_runners_minutes_setting.html.haml' + - 'ee/app/views/namespaces/pipelines_quota/_extra_shared_runners_minutes_quota.html.haml' + - 'ee/app/views/namespaces/pipelines_quota/_list.haml' + - 'ee/app/views/notify/approved_merge_request_email.html.haml' + - 'ee/app/views/notify/epic_status_changed_email.html.haml' + - 'ee/app/views/notify/issues_csv_email.html.haml' + - 'ee/app/views/notify/new_review_email.html.haml' + - 'ee/app/views/notify/prometheus_alert_fired_email.html.haml' + - 'ee/app/views/notify/send_admin_notification.html.haml' + - 'ee/app/views/notify/send_unsubscribed_notification.html.haml' + - 'ee/app/views/notify/unapproved_merge_request_email.html.haml' + - 'ee/app/views/oauth/geo_auth/error.html.haml' + - 'ee/app/views/profiles/pipeline_quota/index.haml' + - 'ee/app/views/projects/audit_events/index.html.haml' + - 'ee/app/views/projects/blob/_owners.html.haml' + - 'ee/app/views/projects/commits/_mirror_status.html.haml' + - 'ee/app/views/projects/feature_flags/_configure_feature_flags_modal.html.haml' + - 'ee/app/views/projects/issues/_issue_weight.html.haml' + - 'ee/app/views/projects/issues/_related_issues.html.haml' + - 'ee/app/views/projects/issues/export_csv/_modal.html.haml' + - 'ee/app/views/projects/jobs/_shared_runner_limit_warning.html.haml' + - 'ee/app/views/projects/merge_requests/_approvals_count.html.haml' + - 'ee/app/views/projects/merge_requests/widget/open/_geo.html.haml' + - 'ee/app/views/projects/mirrors/_mirrored_repositories_count.html.haml' + - 'ee/app/views/projects/protected_branches/ee/_create_protected_branch.html.haml' + - 'ee/app/views/projects/protected_branches/ee/_dropdown.html.haml' + - 'ee/app/views/projects/protected_branches/ee/_fallback_update_protected_branch.html.haml' + - 'ee/app/views/projects/protected_tags/_protected_tag_extra_create_access_levels.haml' + - 'ee/app/views/projects/protected_tags/ee/_create_protected_tag.html.haml' + - 'ee/app/views/projects/push_rules/_index.html.haml' + - 'ee/app/views/projects/services/gitlab_slack_application/_help.html.haml' + - 'ee/app/views/projects/services/gitlab_slack_application/_slack_integration_form.html.haml' + - 'ee/app/views/projects/services/prometheus/_metrics.html.haml' + - 'ee/app/views/projects/settings/slacks/edit.html.haml' + - 'ee/app/views/shared/_additional_email_text.html.haml' + - 'ee/app/views/shared/_geo_info_modal.html.haml' + - 'ee/app/views/shared/_mirror_update_button.html.haml' + - 'ee/app/views/shared/_shared_runners_minutes_limit.html.haml' + - 'ee/app/views/shared/audit_events/_event_table.html.haml' + - 'ee/app/views/shared/boards/components/_list_weight.html.haml' + - 'ee/app/views/shared/boards/components/sidebar/_epic.html.haml' + - 'ee/app/views/shared/ee/_import_form.html.haml' + - 'ee/app/views/shared/epic/_search_bar.html.haml' + - 'ee/app/views/shared/issuable/_approvals.html.haml' + - 'ee/app/views/shared/issuable/_board_create_list_dropdown.html.haml' + - 'ee/app/views/shared/issuable/_filter_weight.html.haml' + - 'ee/app/views/shared/issuable/_sidebar_item_epic.haml' + - 'ee/app/views/shared/members/ee/_ldap_tag.html.haml' + - 'ee/app/views/shared/members/ee/_override_member_buttons.html.haml' + - 'ee/app/views/shared/members/ee/_sso_badge.html.haml' + - 'ee/app/views/shared/milestones/_burndown.html.haml' + - 'ee/app/views/shared/milestones/_weight.html.haml' + - 'ee/app/views/shared/promotions/_promote_audit_events.html.haml' + - 'ee/app/views/shared/promotions/_promote_burndown_charts.html.haml' + - 'ee/app/views/shared/promotions/_promote_csv_export.html.haml' + - 'ee/app/views/shared/promotions/_promote_issue_weights.html.haml' + - 'ee/app/views/shared/promotions/_promote_repository_features.html.haml' + - 'ee/app/views/shared/promotions/_promote_servicedesk.html.haml' + - 'ee/app/views/shared/push_rules/_form.html.haml' + - 'ee/app/views/unsubscribes/show.html.haml' + - 'ee/app/views/admin/users/_auditor_access_level_radio.html.haml' + - 'ee/app/views/admin/users/_auditor_user_badge.html.haml' + - 'ee/app/views/projects/protected_branches/_update_protected_branch.html.haml' + - 'ee/app/views/analytics/cycle_analytics/show.html.haml' diff --git a/.mdlrc.style b/.mdlrc.style index 0ca3611df0..b315c99e3f 100644 --- a/.mdlrc.style +++ b/.mdlrc.style @@ -5,12 +5,23 @@ # for more detailed information on the rules and styles. rule "MD001" +rule "MD002" rule "MD003", :style => :atx +rule "MD006" +rule "MD010" rule "MD011" +rule "MD012" +rule "MD019" +rule "MD022" rule "MD023" +rule "MD025" +rule "MD028" +rule "MD029", :style => :one +rule "MD030" rule "MD032" rule "MD034" rule "MD037" +rule "MD038" # Should not be used currently: diff --git a/.prettierignore b/.prettierignore index dc9e572ab5..c9b945ac96 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,3 +7,4 @@ # ignore stylesheets for now as this clashes with our linter *.css *.scss +*.md diff --git a/.rubocop.yml b/.rubocop.yml index e5fe527e61..b75c63e1f5 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,7 +8,7 @@ require: - rubocop-rspec AllCops: - TargetRubyVersion: 2.5 + TargetRubyVersion: 2.6 TargetRailsVersion: 5.0 Exclude: - 'vendor/**/*' @@ -60,8 +60,8 @@ Style/FrozenStringLiteralComment: RSpec/FilePath: Exclude: - 'qa/**/*' - - 'spec/javascripts/fixtures/*' - - 'ee/spec/javascripts/fixtures/*' + - 'spec/frontend/fixtures/*' + - 'ee/spec/frontend/fixtures/*' - 'spec/requests/api/v3/*' Naming/FileName: diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 41714eefa9..3898206e3b 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -262,25 +262,6 @@ Naming/HeredocDelimiterNaming: Naming/RescuedExceptionsVariableName: Enabled: false -# Offense count: 6 -# Cop supports --auto-correct. -Performance/InefficientHashSearch: - Exclude: - - 'app/controllers/concerns/sessionless_authentication.rb' - - 'app/models/note.rb' - - 'app/models/user_preference.rb' - - 'ee/app/models/ee/project.rb' - - 'lib/gitlab/import_export/members_mapper.rb' - - 'qa/spec/spec_helper.rb' - -# Offense count: 3 -# Cop supports --auto-correct. -Performance/ReverseEach: - Exclude: - - 'app/models/commit.rb' - - 'db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb' - - 'lib/gitlab/profiler.rb' - # Offense count: 7081 # Configuration parameters: Prefixes. # Prefixes: when, with, without diff --git a/CHANGELOG.md b/CHANGELOG.md index 986cecc380..ca765cd771 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,20 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 12.1.14 +## 12.2.8 - No changes. -## 12.1.13 +## 12.2.7 ### Security (1 change) - Fix private feature Elasticsearch leak. -## 12.1.12 +## 12.2.6 -### Security (11 changes) +### Security (10 changes) - Add a policy check for system notes that may not be visible due to cross references to private items. - Display only participants that user has permission to see on milestone page. @@ -24,32 +24,41 @@ entry. - Prevent bypassing email verification using Salesforce. - Do not show resource label events referencing not accessible labels. - Cancel all running CI jobs triggered by the user who is just blocked. -- Fix Gitaly SearchBlobs flag RPC injection. +- Fix Gitaly SearchBlobs flag RPC injection [Gitaly v1.59.3]. - Only render fixed number of mermaid blocks. - Prevent GitLab accounts takeover if SAML is configured. -- Upgrade mermaid to prevent XSS. -## 12.1.11 - -- No changes. - -## 12.1.10 - -- No changes. - -## 12.1.9 +## 12.2.5 ### Security (1 change) - Upgrade pages to 1.7.2. -## 12.1.8 +## 12.2.4 -### Security (21 changes) +### Fixed (7 changes) + +- Add syntax highlighting for line expansion. !31821 +- Fix issuable sidebar icon on notification disabled. !32134 +- Upgrade Mermaid to v8.2.4. !32186 +- Fix Piwik not working. !32234 +- Fix snippets API not working with visibility level. !32286 +- Fix upload URLs in Markdown for users without access to project repository. !32448 +- Update Mermaid to v8.2.6. !32502 + +### Performance (1 change) + +- Fix N+1 Gitaly calls in /api/v4/projects/:id/issues. !32171 + + +## 12.2.3 + +### Security (22 changes) - Ensure only authorised users can create notes on Merge Requests and Issues. +- Gitaly: ignore git redirects. - Add :login_recaptcha_protection_enabled setting to prevent bots from brute-force attacks. - Speed up regexp in namespace format by failing fast after reaching maximum namespace depth. - Limit the size of issuable description and comments. @@ -72,20 +81,270 @@ entry. - Fix SSRF via DNS rebinding in Kubernetes Integration. -## 12.1.7 +## 12.2.2 - Unreleased due to QA failure. -## 12.1.6 +## 12.2.1 + +### Fixed (3 changes) + +- Fix for embedded metrics undefined params. !31975 +- Fix "ERR value is not an integer or out of range" errors. !32126 +- Prevent duplicated trigger action button. + +### Performance (1 change) + +- Fix Gitaly N+1 calls with listing issues/MRs via API. !31938 + + +## 12.2.0 + +### Security (4 changes, 1 of them is from the community) + +- Update mini_magick to 4.9.5. !31505 (Takuya Noguchi) +- Upgrade Rugged to 0.28.3. !31794 +- Queries for Upload should be scoped by model. +- Restrict slash commands to users who can log in. + +### Removed (3 changes) + +- Remove Kubernetes service integration page. !31365 +- Remove line profiler from performance bar. +- Remove GC metrics from performance bar. + +### Fixed (74 changes, 4 of them are from the community) + +- Resolve Incorrect empty state message on Explore projects. !25578 +- Search issuables by iids. !28302 (Riccardo Padovani) +- Make it easier to find invited group members. !28436 +- fix: updates to include units for the y axis label. !30330 +- Align access permissions for wiki history to those of wiki pages. !30470 +- Add index for issues on relative position, project, and state for manual sorting. !30542 +- Fix suggestion on lines that are not part of an MR. !30606 +- Add empty chart component. !30682 +- Remove blank block from job sidebar. !30754 +- Remove duplicate buttons in diff discussion. !30757 +- Order projects in 'Move issue' dropdown by name. !30778 +- Fix bug in dashboard display of closed milestones. !30820 +- Fixes alignment issues with reports. !30839 +- Ensure visibility icons in group/project listings are grey. !30858 +- Fix admin labels page when there are invalid records. !30885 +- Extra logging for new live trace architecture. !30892 +- Fix pipeline emails not respecting group notification email setting. !30907 +- Handle trailing slashes when generating Jira issue URLs. !30911 +- Optimize relative re-positioning when moving issues. !30938 +- Better support clickable tasklists inside blockquotes. !30952 +- Add space to "merged by" widget. !30972 +- Remove duplicated mapping key in config/locales/en.yml. !30980 (Peter Dave Hello) +- Update Mermaid to v8.2.3. !30985 +- Use persistent Redis cluster for Workhorse pub/sub notifications. !30990 +- Remove :livesum from RubySampler metrics. !31047 +- Fix pid discovery for Unicorn processes in `PidProvider`. !31056 +- Respect group notification email when sending group access notifications. !31089 +- Default dependency job stage index to Infinity, and correctly report it as undefined in prior stages. !31116 +- Fix incorrect use of message interpolation. !31121 +- Moved labels out of fields on Search page. !31137 +- Ensure Warden triggers after_authentication callback. !31138 +- Fix admin area user access level radio button labels. !31154 +- Ignore Gitaly errors if cache flushing fails on project destruction. !31164 +- Prevent double slash in review apps path. !31212 +- Make pdf.js render CJK characters. !31220 +- Prevent discussion filter from persisting to `Show all activity` when opening links to notes. !31229 +- Improve layout of dropdowns in the metrics dashboard page. !31239 +- Remove pdf.js deprecation warnings. !31253 +- Fix GC::Profiler metrics fetching. !31331 +- Jupyter fixes. !31332 (Amit Rathi) +- Fix first-time contributor notes not rendering. !31340 +- Fix inline rendering of relative paths to SVGs from the current repository. !31352 +- Make `bin/web_puma` consider RAILS_ENV. !31378 +- Removed extrenal dashboard legend border. !31407 +- Fix visual review app storage keys. !31427 +- Fix flashing conflict warning when editing issues. !31469 +- Fix broken issue links and possible 500 error on cycle analytics page when project name and path are different. !31471 +- Prevent turning plain links into embedded when moving issues. !31489 +- Add a field for released_at to GH importer. !31496 +- Adjust size and align MR-widget loading icon. !31503 +- Fix an issue where clicking outside the MR/branch search box in WebIDE closed the dropdown. !31523 +- Don't attempt to contact registry if it is disabled. !31553 +- Fix IDE new files icon in tree. !31560 +- Fix missing author line (`Created by: `) in MRs/issues/comments of imported Bitbucket Cloud project. !31579 +- Add missing report-uri to CSP config. !31593 +- Fixed display of some sections and externalized all text in the shortcuts modal overlay. !31594 +- Remove extra padding from disabled comment box. !31603 +- Allow CI to clone public projects when HTTP protocol is disabled. !31632 +- error message for general settings. !31636 (Mesut Güneş) +- Invalidate branches cache on PostReceive. !31653 +- Fix active metric files being wiped after the app starts. !31668 +- Fix :wiki_can_not_be_created_total counter. !31673 +- Fix job logs where style changes were broken down into separate lines. !31674 +- Properly save suggestions in project exports. !31690 +- Fix project avatar image in Slack pipeline notifications. !31788 +- Fix empty error flash message on profile:account page when updating username with username that has already been taken. !31809 +- Fix starrers counts after searching. !31823 +- Fix pipelines not always being created after a push. !31927 +- Fix 500 errors in commits api caused by empty ref_name parameter. +- Center loading icon in CI action component. +- Prevents showing 2 tooltips in pipelines table. +- Fix tag page layout. +- Prevent duplicated trigger action button. +- Hides loading spinner in pipelines actions after request has been fullfiled. + +### Changed (31 changes, 5 of them are from the community) + +- Update cluster page automatically when cluster is created. !27189 +- Add branch/tags/commits dropdown filter on the search page for searching codes. !28282 (minghuan lei) +- Add support for start_sha to commits API. !29598 +- Maintainers can create subgroups. !29718 (Fabio Papa) +- Extract Auto DevOps deploy functions into a base image. !30404 +- Add MR form to Visual Review (EE) runtime configuration. !30481 +- Adjust redis cache metrics. !30572 +- Add DS_PIP_DEPENDENCY_PATH option to configure Dependency Scanning for projects using pip. !30762 +- Bring scoped environment variables to core. !30779 +- Add Web IDE Usage Ping for Create SMAU. !30800 +- Update the container scanning CI template to use v12 of the clair scanner. !30809 +- Multiple pipeline support for Commit status. !30828 (Gaetan Semet) +- Add support for exporting repository type data for LFS objects. !30830 +- Avoid increasing redis counters when usage_ping is disabled. !30949 +- Added navbar searches usage ping counter. !30953 +- Convert githost.log to JSON format. !30967 +- Adjusted the clickable area of collapsed sidebar elements. !30974 (Michel Engelen) +- Mark push mirrors as failed after 1 hour. !30999 +- Allows masking @ and : characters. !31065 +- Remove incorrect fallback when determining which cluster to use when retrieving MR performance metrics. !31126 +- Retry push mirrors faster when running concurrently, improve error handling when push mirrors fail. !31247 +- Make issue boards importable. !31434 (Jason Colyer) +- Allow users to resend a confirmation link when the grace period has expired. !31476 +- Remove counts from default labels API responses. !31543 +- Upgrade to Gitaly v1.57.0. !31568 +- Rename githost.log -> git_json.log. !31634 +- Load search result counts asynchronously. !31663 +- feat: adds a download to csv functionality to the dropdown in prometheus metrics. !31679 +- Adjust copy for adding additional members. !31726 +- Upgrade to Gitaly v1.59.0. !31743 +- Filter title, description, and body parameters from logs. + +### Performance (17 changes, 1 of them is from the community) + +- Add partial index on identities table to speed up LDAP lookups. !26710 +- Improve MembersFinder query performance using UNION. !30451 (Jacopo Beschi @jacopo-beschi) +- Rake task to cleanup expired ActiveSession lookup keys. !30668 +- Update usage ping cron behavior. !30842 +- Make Bootsnap available via ENABLE_BOOTSNAP=1. !30963 +- Batch processing of commit refs in markdown processing. !31037 +- Use tablesample approximate counting by default. !31048 +- Create index on environments by state. !31231 +- Split MR widget into etag-cached and non-cached serializers. !31354 +- Speed up loading and filtering deploy keys and their projects. !31384 +- Only track Redis calls if Peek is enabled. !31438 +- Only expire tag cache once per push. !31641 +- Reduce Gitaly calls in PostReceive. !31741 +- Eliminate many Gitaly calls in discussions API. !31834 +- Optimize DB indexes for ES indexing of notes. !31846 +- Expire project caches once per push instead of once per ref. !31876 +- Look up upstream commits once before queuing ProcessCommitWorkers. + +### Added (51 changes, 11 of them are from the community) + +- Make starred projects and starrers of a project publicly visible. !24690 +- Make quick action commands applied banner more useful. !26672 (Jacopo Beschi @jacopo-beschi) +- Allow Helm to be uninstalled from the UI. !27359 +- Improve pipeline status Slack notifications. !27683 +- Add links to relevant configuration areas in admin area overview. !29306 +- Display project id on project admin page. !29734 (Zsolt Kovari) +- Display group id on group admin page. !29735 (Zsolt Kovari) +- Resolve Keyboard shortcut for jump to NEXT unresolved discussion. !30144 +- Personal access tokens are accepted using OAuth2 header format. !30277 +- Add Outbound requests whitelist for local networks. !30350 (Istvan Szalai) +- Allow multiple Auto DevOps projects to deploy to a single namespace within a k8s cluster. !30360 (James Keogh) +- Allow Knative to be uninstalled from the UI. !30458 +- Add admin-configurable "Support page URL" link to top Help dropdown menu. !30459 (Diego Louzán) +- Allow specifying variables when running manual jobs. !30485 +- Use predictable environment slugs. !30551 +- Return an ETag header for the archive endpoint. !30581 +- Add Rate Request Limiter to RawController#show endpoint. !30635 +- Add git blame to GitLab API. !30675 (Oleg Zubchenko) +- Use separate Kubernetes namespaces per environment. !30711 +- Support remove source branch on merge w/ push options. !30728 +- Deploy serverless apps with gitlabktl. !30740 +- Adjust group level analytics to accept multiple ids. !30744 +- Adds event enum column to DesignsVersions join table. !30745 +- Allow email notifications to be disabled for all members of a group or project. !30755 (Dustin Spicuzza) +- Export and download CSV from metrics charts. !30760 +- Add API endpoints to return container repositories and tags from the group level. !30817 +- Add support for deferred links in persistent user callouts. !30818 +- Add system notes for when a Zoom call was added/removed from an issue. !30857 (Jacopo Beschi @jacopo-beschi) +- Count wiki creation, update and delete events. !30864 +- Add new expansion options for merge request diffs. !30927 +- Count snippet creation, update and comment events. !30930 +- Update namespace label for GitLab-managed clusters. !30935 +- UI for disabling group/project email notifications. !30961 (Dustin Spicuzza) +- Support setting of merge request title and description using git push options. !31068 +- Add new table to store email domain per group. !31071 +- Redirect from a project wiki git route to the project wiki home. !31085 +- Link and embed metrics in GitLab Flavored Markdown. !31106 +- Moves snowplow tracking from ee to ce. !31160 (jejacks0n) +- Allow Cert-Manager to be uninstalled. !31166 +- Add new outbound network requests application setting for system hooks. !31177 +- Allow links to metrics dashboard at a specific time. !31283 +- Enable embedding of specific metrics charts in GFM. !31304 +- Support creating DAGs in CI config through the `needs` key. !31328 +- Generate shareable link for specific metric charts. !31339 +- Add support for Content-Security-Policy. !31402 +- Add BitBucketServer project import filtering. !31420 +- Embed specific metrics chart in issue. !31644 +- Track page views for cycle analytics show page. !31717 +- Add usage pings for source code pushes. !31734 +- Makes collapsible title clickable in job log. +- Adds highlight to the collapsible section. + +### Other (36 changes, 9 of them are from the community) + +- Rewrite `if:` argument in before_action and alike when `only:` is also used. !24412 (George Thomas @thegeorgeous) +- Create rake tasks for migrating legacy uploads out of deprecated paths. !29409 +- Remove the warning style from the U2F device message in user settings > account. !30119 (matejlatin) +- Set visibility level 'Private' for restricted 'Internal' imported projects when 'Internal' visibility setting is restricted in admin settings. !30522 +- Change BoardService in favor of boardsStore on board blank state of the component board. !30546 (eduarmreyes) +- Adds Sidekiq scheduling latency structured logging field. !30784 +- Adds chaos endpoints to Sidekiq. !30814 +- Added multi-select deletion of container registry images. !30837 +- When GitLab import fails during importer user mapping step, add an explicit error message mentioning importer. !30838 +- Add Rugged calls and duration to API and Rails logs. !30871 +- Fixed distorted avatars when resource not reachable. !30904 (Marc Schwede) +- Update GitLab Runner Helm Chart to 0.7.0. !30950 +- Use Rails 5.2 Redis caching store. !30966 +- Add Rugged calls to performance bar. !30983 +- add color selector to broadcast messages form. !30988 +- Harmonize selections in user settings. !31110 (Marc Schwede) +- Update rouge to v3.7.0. !31254 +- Update 'Ruby on Rails' project template. !31310 +- Fix mirroring help text. !31348 (jramsay) +- Enhance style of the shared runners limit. !31386 +- Enables storage statistics for root namespaces on database. !31392 +- Improve quick action error messages. !31451 +- Enable authenticated cookie encryption. !31463 +- Update karma to 4.2.0. !31495 (Takuya Noguchi) +- Add max_replication_slots to PG HA documentation. !31534 +- Create database tables for the new cycle analytics backend. !31621 +- Updated the detached pipeline badge tooltip text to offer a better explanation. !31626 +- Add Gitaly and Rugged call timing in Sidekiq logs. !31651 +- Fix the style-lint errors and warnings for `app/assets/stylesheets/pages/wiki.scss`. !31656 +- Update GraphicsMagick from 1.3.29 to 1.3.33 for CI tests. !31692 (Takuya Noguchi) +- Migrate remaining users with null private_profile. !31708 +- Bump Helm to 2.14.3 and kubectl to 1.11.10 for Kubernetes integration. !31716 +- Updated the personal access token api scope description to reflect the permissions it grants. !31759 +- Add finished_at to the internal API Deployment entity. !31808 +- Remove Security Dashboard feature flag. !31820 +- Update Packer.gitlab-ci.yml to use latest image. (Kelly Hair) + + +## 12.1.5 ### Security (2 changes) - Upgrade Gitaly to 1.53.2 to prevent revision flag injection exploits. - Upgrade pages to 1.7.1 to prevent gitlab api token recovery from cookie. -## 12.1.5 - -- No changes. ## 12.1.4 @@ -415,6 +674,10 @@ entry. - Removes EE differences for app/views/admin/users/show.html.haml. +## 12.0.6 + +- No changes. + ## 12.0.3 (2019-06-27) - No changes. @@ -763,6 +1026,29 @@ entry. - Moves snowplow to CE repo. +## 11.11.8 + +### Security (2 changes) + +- Upgrade Gitaly to 1.42.7 to prevent revision flag injection exploits. +- Upgrade pages to 1.5.1 to prevent gitlab api token recovery from cookie. + + +## 11.11.7 + +### Security (9 changes) + +- Restrict slash commands to users who can log in. +- Patch XSS issue in wiki links. +- Filter merge request params on the new merge request page. +- Fix Server Side Request Forgery mitigation bypass. +- Show badges if pipelines are public otherwise default to project permissions. +- Do not allow localhost url redirection in GitHub Integration. +- Do not show moved issue id for users that cannot read issue. +- Use source project as permissions reference for MergeRequestsController#pipelines. +- Drop feature to take ownership of trigger token. + + ## 11.11.4 (2019-06-26) ### Fixed (3 changes) diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index d2a66dacc3..c1c39d3628 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1.53.4 +1.59.3 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index d139a75408..eec6dacbd4 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.7.1 +8.8.1 diff --git a/Gemfile b/Gemfile index 8bffc2a973..a91399ab3a 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,8 @@ source 'https://rubygems.org' gem 'rails', '5.2.3' +gem 'bootsnap', '~> 1.4' + # Improves copy-on-write performance for MRI gem 'nakayoshi_fork', '~> 0.0.4' @@ -14,8 +16,7 @@ gem 'sprockets', '~> 3.7.0' gem 'default_value_for', '~> 3.2.0' # Supported DBs -gem 'mysql2', '~> 0.4.10', group: :mysql -gem 'pg', '~> 1.1', group: :postgres +gem 'pg', '~> 1.1' gem 'rugged', '~> 0.28' gem 'grape-path-helpers', '~> 1.1' @@ -50,6 +51,7 @@ gem 'jwt', '~> 2.1.0' # Spam and anti-bot protection gem 'recaptcha', '~> 4.11', require: 'recaptcha/rails' gem 'akismet', '~> 2.0' +gem 'invisible_captcha', '~> 0.12.1' # Two-factor authentication gem 'devise-two-factor', '~> 3.0.0' @@ -133,10 +135,10 @@ gem 'wikicloth', '0.8.1' gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false gem 'asciidoctor-plantuml', '0.0.9' -gem 'rouge', '~> 3.5' +gem 'rouge', '~> 3.7' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' -gem 'nokogiri', '~> 1.10.3' +gem 'nokogiri', '~> 1.10.4' gem 'escape_utils', '~> 1.1' # Calendar rendering @@ -169,7 +171,7 @@ gem 'acts-as-taggable-on', '~> 6.0' gem 'sidekiq', '~> 5.2.7' gem 'sidekiq-cron', '~> 1.0' gem 'redis-namespace', '~> 1.6.0' -gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch' +gem 'gitlab-sidekiq-fetcher', '0.5.1', require: 'sidekiq-reliable-fetch' # Cron Parser gem 'fugit', '~> 1.2.1' @@ -199,13 +201,13 @@ gem 'js_regex', '~> 3.1' # User agent parsing gem 'device_detector' -# Cache -gem 'redis-rails', '~> 5.0.2' - # Redis -gem 'redis', '~> 3.2' +gem 'redis', '~> 4.0' gem 'connection_pool', '~> 2.0' +# Redis session store +gem 'redis-rails', '~> 5.0.2' + # Discord integration gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false @@ -282,7 +284,7 @@ gem 'sentry-raven', '~> 2.9' gem 'premailer-rails', '~> 1.9.7' # LabKit: Tracing and Correlation -gem 'gitlab-labkit', '~> 0.3.0' +gem 'gitlab-labkit', '~> 0.4.2' # I18n gem 'ruby_parser', '~> 3.8', require: false @@ -295,11 +297,9 @@ gem 'batch-loader', '~> 1.4.0' # Perf bar gem 'peek', '~> 1.0.1' -gem 'peek-gc', '~> 0.0.2' -gem 'peek-mysql2', '~> 1.2.0', group: :mysql -gem 'peek-pg', '~> 1.3.0', group: :postgres -gem 'peek-rblineprof', '~> 0.2.0' -gem 'peek-redis', '~> 1.2.0' + +# Snowplow events tracking +gem 'snowplow-tracker', '~> 0.6.1' # Memory benchmarks gem 'derailed_benchmarks', require: false @@ -330,7 +330,6 @@ group :development do end group :development, :test do - gem 'bootsnap', '~> 1.4' gem 'bullet', '~> 5.5.0', require: !!ENV['ENABLE_BULLET'] gem 'pry-byebug', '~> 3.5.1', platform: :mri gem 'pry-rails', '~> 0.3.4' @@ -391,7 +390,6 @@ group :test do gem 'json-schema', '~> 2.8.0' gem 'webmock', '~> 3.5.1' gem 'rails-controller-testing' - gem 'sham_rack', '~> 1.3.6' gem 'concurrent-ruby', '~> 1.1' gem 'test-prof', '~> 0.2.5' gem 'rspec_junit_formatter' @@ -430,8 +428,8 @@ group :ed25519 do gem 'bcrypt_pbkdf', '~> 1.0' end -# Gitaly GRPC client -gem 'gitaly-proto', '~> 1.37.0', require: 'gitaly' +# Gitaly GRPC protocol definitions +gem 'gitaly', '~> 1.58.0' gem 'grpc', '~> 1.19.0' diff --git a/Gemfile.lock b/Gemfile.lock index 60939ae918..fcc0fb6489 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,6 @@ GEM asciidoctor-plantuml (0.0.9) asciidoctor (>= 1.5.6, < 3.0.0) ast (2.4.0) - atomic (1.1.99) attr_encrypted (3.1.0) encryptor (~> 3.0.0) attr_required (1.0.1) @@ -101,7 +100,7 @@ GEM binding_ninja (0.2.3) binding_of_caller (0.8.0) debug_inspector (>= 0.0.1) - bootsnap (1.4.1) + bootsnap (1.4.4) msgpack (~> 1.0) bootstrap_form (4.2.0) actionpack (>= 5.0) @@ -153,6 +152,7 @@ GEM concurrent-ruby-ext (1.1.5) concurrent-ruby (= 1.1.5) connection_pool (2.2.2) + contracts (0.11.0) crack (0.4.3) safe_yaml (~> 1.0.0) crass (1.0.4) @@ -237,7 +237,7 @@ GEM fast_blank (1.0.0) fast_gettext (1.6.0) ffaker (2.10.0) - ffi (1.10.0) + ffi (1.11.1) flipper (0.13.0) flipper-active_record (0.13.0) activerecord (>= 3.2, < 6) @@ -310,19 +310,19 @@ GEM gettext_i18n_rails (>= 0.7.1) po_to_json (>= 1.0.0) rails (>= 3.2.0) - gitaly-proto (1.37.0) + gitaly (1.58.0) grpc (~> 1.0) github-markup (1.7.0) - gitlab-labkit (0.3.0) + gitlab-labkit (0.4.2) actionpack (~> 5) activesupport (~> 5) - grpc (~> 1.19.0) + grpc (~> 1.19) jaeger-client (~> 0.10) opentracing (~> 0.4) gitlab-markup (1.7.0) - gitlab-sidekiq-fetcher (0.4.0) + gitlab-sidekiq-fetcher (0.5.1) sidekiq (~> 5) - gitlab-styles (2.7.0) + gitlab-styles (2.8.0) rubocop (~> 0.69.0) rubocop-gitlab-security (~> 0.1.0) rubocop-performance (~> 1.1.0) @@ -438,11 +438,13 @@ GEM influxdb (0.2.3) cause json + invisible_captcha (0.12.1) + rails (>= 3.2.0) ipaddress (0.8.3) jaeger-client (0.10.0) opentracing (~> 0.3) thrift - jaro_winkler (1.5.2) + jaro_winkler (1.5.3) jira-ruby (1.4.1) activesupport multipart-post @@ -523,27 +525,26 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2019.0331) mimemagic (0.3.2) - mini_magick (4.8.0) + mini_magick (4.9.5) mini_mime (1.0.1) mini_portile2 (2.4.0) minitest (5.11.3) mixlib-cli (1.7.0) mixlib-config (2.2.18) tomlrb - msgpack (1.2.10) + msgpack (1.3.0) multi_json (1.13.1) multi_xml (0.6.0) multipart-post (2.0.0) mustermann (1.0.3) mustermann-grape (1.0.0) mustermann (~> 1.0.0) - mysql2 (0.4.10) nakayoshi_fork (0.0.4) net-ldap (0.16.0) net-ssh (5.2.0) netrc (0.11.0) nio4r (2.3.1) - nokogiri (1.10.3) + nokogiri (1.10.4) mini_portile2 (~> 2.4.0) nokogumbo (1.5.0) nokogiri @@ -643,25 +644,6 @@ GEM concurrent-ruby (>= 0.9.0) concurrent-ruby-ext (>= 0.9.0) railties (>= 4.0.0) - peek-gc (0.0.2) - peek - peek-mysql2 (1.2.0) - concurrent-ruby - concurrent-ruby-ext - mysql2 - peek - peek-pg (1.3.0) - concurrent-ruby - concurrent-ruby-ext - peek - pg - peek-rblineprof (0.2.0) - peek - rblineprof - peek-redis (1.2.0) - atomic (>= 1.0.0) - peek - redis pg (1.1.4) po_to_json (1.0.1) json (>= 1.6.0) @@ -760,17 +742,17 @@ GEM recaptcha (4.13.1) json recursive-open-struct (1.1.0) - redis (3.3.5) + redis (4.1.2) redis-actionpack (5.0.2) actionpack (>= 4.0, < 6) redis-rack (>= 1, < 3) redis-store (>= 1.1.0, < 2) - redis-activesupport (5.0.4) + redis-activesupport (5.0.7) activesupport (>= 3, < 6) redis-store (>= 1.3, < 2) redis-namespace (1.6.0) redis (>= 3.0.4) - redis-rack (2.0.4) + redis-rack (2.0.5) rack (>= 1.5, < 3) redis-store (>= 1.2, < 2) redis-rails (5.0.2) @@ -796,7 +778,7 @@ GEM retriable (3.1.2) rinku (2.0.0) rotp (2.1.2) - rouge (3.5.1) + rouge (3.7.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -856,7 +838,7 @@ GEM ruby-fogbugz (0.2.1) crack (~> 0.4) ruby-prof (0.17.0) - ruby-progressbar (1.10.0) + ruby-progressbar (1.10.1) ruby-saml (1.7.2) nokogiri (>= 1.5.10) ruby_parser (3.13.1) @@ -864,7 +846,7 @@ GEM rubyntlm (0.6.2) rubypants (0.2.0) rubyzip (1.2.2) - rugged (0.28.1) + rugged (0.28.3.1) safe_yaml (1.0.4) sanitize (4.6.6) crass (~> 1.0.2) @@ -900,8 +882,6 @@ GEM faraday (>= 0.7.6, < 1.0) settingslogic (2.0.9) sexp_processor (4.12.0) - sham_rack (1.3.6) - rack shoulda-matchers (4.0.1) activesupport (>= 4.2.0) sidekiq (5.2.7) @@ -924,6 +904,8 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) slack-notifier (1.5.1) + snowplow-tracker (0.6.1) + contracts (~> 0.7, <= 0.11) spring (2.0.2) activesupport (>= 4.2) spring-commands-rspec (1.0.4) @@ -1119,11 +1101,11 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 1.37.0) + gitaly (~> 1.58.0) github-markup (~> 1.7.0) - gitlab-labkit (~> 0.3.0) + gitlab-labkit (~> 0.4.2) gitlab-markup (~> 1.7.0) - gitlab-sidekiq-fetcher (~> 0.4.0) + gitlab-sidekiq-fetcher (= 0.5.1) gitlab-styles (~> 2.7) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) @@ -1149,6 +1131,7 @@ DEPENDENCIES httparty (~> 0.16.4) icalendar influxdb (~> 0.2) + invisible_captcha (~> 0.12.1) jira-ruby (~> 1.4) js_regex (~> 3.1) json-schema (~> 2.8.0) @@ -1168,11 +1151,10 @@ DEPENDENCIES mimemagic (~> 0.3.2) mini_magick minitest (~> 5.11.0) - mysql2 (~> 0.4.10) nakayoshi_fork (~> 0.0.4) net-ldap net-ssh (~> 5.2) - nokogiri (~> 1.10.3) + nokogiri (~> 1.10.4) oauth2 (~> 1.4) octokit (~> 4.9) omniauth (~> 1.8) @@ -1195,11 +1177,6 @@ DEPENDENCIES omniauth_openid_connect (~> 0.3.1) org-ruby (~> 0.9.12) peek (~> 1.0.1) - peek-gc (~> 0.0.2) - peek-mysql2 (~> 1.2.0) - peek-pg (~> 1.3.0) - peek-rblineprof (~> 0.2.0) - peek-redis (~> 1.2.0) pg (~> 1.1) premailer-rails (~> 1.9.7) prometheus-client-mmap (~> 0.9.8) @@ -1223,12 +1200,12 @@ DEPENDENCIES rdoc (~> 6.0) re2 (~> 1.1.1) recaptcha (~> 4.11) - redis (~> 3.2) + redis (~> 4.0) redis-namespace (~> 1.6.0) redis-rails (~> 5.0.2) request_store (~> 1.3) responders (~> 2.0) - rouge (~> 3.5) + rouge (~> 3.7) rqrcode-rails3 (~> 0.1.7) rspec-parameterized rspec-rails (~> 3.8.0) @@ -1252,13 +1229,13 @@ DEPENDENCIES selenium-webdriver (~> 3.141) sentry-raven (~> 2.9) settingslogic (~> 2.0.9) - sham_rack (~> 1.3.6) shoulda-matchers (~> 4.0.1) sidekiq (~> 5.2.7) sidekiq-cron (~> 1.0) simple_po_parser (~> 1.1.2) simplecov (~> 0.16.1) slack-notifier (~> 1.5.1) + snowplow-tracker (~> 0.6.1) spring (~> 2.0.0) spring-commands-rspec (~> 1.0.4) sprockets (~> 3.7.0) diff --git a/LICENSE b/LICENSE index a90ea93951..216125d93c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,12 @@ -Copyright GitLab B.V. +Copyright (c) 2011-present GitLab B.V. + +Portions of this software are licensed as follows: + +* All content residing under the "doc/" directory of this repository is licensed under "Creative Commons: CC BY-SA 4.0 license". +* All content that resides under the "ee/" directory of this repository, if that directory exists, is licensed under the license defined in "ee/LICENSE". +* All client-side JavaScript (when served directly or after being compiled, arranged, augmented, or combined), is licensed under the "MIT Expat" license. +* All third party components incorporated into the GitLab Software are licensed under the original license provided by the owner of the applicable component. +* Content outside of the above mentioned directories or restrictions above is available under the "MIT Expat" license as defined below. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 51dc87ac65..054e2d0246 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,6 @@ To see how GitLab looks please see the [features page on our website](https://ab - Used by more than 100,000 organizations, GitLab is the most popular solution to manage Git repositories on-premises - Completely free and open source (MIT Expat license) -## Hiring - -We're hiring developers, support people, and production engineers all the time, please see our [jobs page](https://about.gitlab.com/jobs/). - ## Editions There are two editions of GitLab: @@ -31,6 +27,15 @@ There are two editions of GitLab: - GitLab Community Edition (CE) is available freely under the MIT Expat license. - GitLab Enterprise Edition (EE) includes [extra features](https://about.gitlab.com/pricing/#compare-options) that are more useful for organizations with more than 100 users. To use EE and get official support please [become a subscriber](https://about.gitlab.com/pricing/). +## Licensing + +See the [LICENSE](LICENSE) file for licensing information as it pertains to +files in this repository. + +## Hiring + +We're hiring developers, support people, and production engineers all the time, please see our [jobs page](https://about.gitlab.com/jobs/). + ## Website On [about.gitlab.com](https://about.gitlab.com/) you can find more information about: @@ -58,14 +63,6 @@ There are various other options to install GitLab, please refer to the [installa GitLab is an open source project and we are very happy to accept community contributions. Please refer to [Contributing to GitLab page](https://about.gitlab.com/contributing/) for more details. -## Licensing - -GitLab Community Edition (CE) is available freely under the MIT Expat license. - -All third party components incorporated into the GitLab Software are licensed under the original license provided by the owner of the applicable component. - -All Documentation content that resides under the `doc/` directory of this repository is licensed under Creative Commons: CC BY-SA 4.0. - ## Install a development environment To work on GitLab itself, we recommend setting up your development environment with [the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit). @@ -81,7 +78,7 @@ Instructions on how to start GitLab and how to run the tests can be found in the GitLab is a Ruby on Rails application that runs on the following software: - Ubuntu/Debian/CentOS/RHEL/OpenSUSE -- Ruby (MRI) 2.4 +- Ruby (MRI) 2.6.3 - Git 2.8.4+ - Redis 2.8+ - PostgreSQL (preferred) or MySQL diff --git a/VERSION b/VERSION index 0e461ef2a4..415447f476 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12.1.14 +12.2.8 diff --git a/app/assets/javascripts/analytics/cycle_analytics/mixins/filter_mixins.js b/app/assets/javascripts/analytics/cycle_analytics/mixins/filter_mixins.js new file mode 100644 index 0000000000..ff8b4c5632 --- /dev/null +++ b/app/assets/javascripts/analytics/cycle_analytics/mixins/filter_mixins.js @@ -0,0 +1 @@ +export default {}; diff --git a/app/assets/javascripts/badges/components/badge.vue b/app/assets/javascripts/badges/components/badge.vue index ae2916e3a3..eb720f5380 100644 --- a/app/assets/javascripts/badges/components/badge.vue +++ b/app/assets/javascripts/badges/components/badge.vue @@ -3,6 +3,8 @@ import Icon from '~/vue_shared/components/icon.vue'; import { GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui'; export default { + // name: 'Badge' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/25 + // eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings name: 'Badge', components: { Icon, diff --git a/app/assets/javascripts/behaviors/markdown/render_gfm.js b/app/assets/javascripts/behaviors/markdown/render_gfm.js index bfb073fdcd..137cc7b466 100644 --- a/app/assets/javascripts/behaviors/markdown/render_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/render_gfm.js @@ -2,6 +2,7 @@ import $ from 'jquery'; import syntaxHighlight from '~/syntax_highlight'; import renderMath from './render_math'; import renderMermaid from './render_mermaid'; +import renderMetrics from './render_metrics'; import highlightCurrentUser from './highlight_current_user'; import initUserPopovers from '../../user_popovers'; import initMRPopovers from '../../mr_popover'; @@ -17,6 +18,7 @@ $.fn.renderGFM = function renderGFM() { highlightCurrentUser(this.find('.gfm-project_member').get()); initUserPopovers(this.find('.gfm-project_member').get()); initMRPopovers(this.find('.gfm-merge_request').get()); + renderMetrics(this.find('.js-render-metrics').get()); return this; }; diff --git a/app/assets/javascripts/behaviors/markdown/render_metrics.js b/app/assets/javascripts/behaviors/markdown/render_metrics.js new file mode 100644 index 0000000000..252b98610b --- /dev/null +++ b/app/assets/javascripts/behaviors/markdown/render_metrics.js @@ -0,0 +1,24 @@ +import Vue from 'vue'; +import Metrics from '~/monitoring/components/embed.vue'; +import { createStore } from '~/monitoring/stores'; + +// TODO: Handle copy-pasting - https://gitlab.com/gitlab-org/gitlab-ce/issues/64369. +export default function renderMetrics(elements) { + if (!elements.length) { + return; + } + + elements.forEach(element => { + const { dashboardUrl } = element.dataset; + const MetricsComponent = Vue.extend(Metrics); + + // eslint-disable-next-line no-new + new MetricsComponent({ + el: element, + store: createStore(), + propsData: { + dashboardUrl, + }, + }); + }); +} diff --git a/app/assets/javascripts/behaviors/preview_markdown.js b/app/assets/javascripts/behaviors/preview_markdown.js index 35874140bf..b2571fb840 100644 --- a/app/assets/javascripts/behaviors/preview_markdown.js +++ b/app/assets/javascripts/behaviors/preview_markdown.js @@ -36,6 +36,10 @@ MarkdownPreview.prototype.showPreview = function($form) { mdText = $form.find('textarea.markdown-area').val(); + if (mdText === undefined) { + return; + } + if (mdText.trim().length === 0) { preview.text(this.emptyMessage); this.hideReferencedUsers($form); diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts.js index eade128351..7e3515b1f4 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts.js @@ -4,7 +4,7 @@ import Mousetrap from 'mousetrap'; import axios from '../../lib/utils/axios_utils'; import { refreshCurrentPage, visitUrl } from '../../lib/utils/url_utility'; import findAndFollowLink from '../../lib/utils/navigation_utility'; -import { parseBoolean } from '~/lib/utils/common_utils'; +import { parseBoolean, getCspNonceValue } from '~/lib/utils/common_utils'; const defaultStopCallback = Mousetrap.stopCallback; Mousetrap.stopCallback = (e, element, combo) => { @@ -94,7 +94,7 @@ export default class Shortcuts { responseType: 'text', }) .then(({ data }) => { - $.globalEval(data); + $.globalEval(data, { nonce: getCspNonceValue() }); if (location && location.length > 0) { const results = []; diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_wiki.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_wiki.js index 8b7e6a56d2..208c91a1f0 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_wiki.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_wiki.js @@ -6,6 +6,8 @@ export default class ShortcutsWiki extends ShortcutsNavigation { constructor() { super(); Mousetrap.bind('e', ShortcutsWiki.editWiki); + + this.enabledHelp.push('.hidden-shortcut.wiki'); } static editWiki() { diff --git a/app/assets/javascripts/boards/components/board_blank_state.vue b/app/assets/javascripts/boards/components/board_blank_state.vue index d8b0b60c18..9f26337d15 100644 --- a/app/assets/javascripts/boards/components/board_blank_state.vue +++ b/app/assets/javascripts/boards/components/board_blank_state.vue @@ -1,6 +1,6 @@ + + diff --git a/app/assets/javascripts/diffs/components/diff_file_header.vue b/app/assets/javascripts/diffs/components/diff_file_header.vue index 4b226e3069..32fbeaaa90 100644 --- a/app/assets/javascripts/diffs/components/diff_file_header.vue +++ b/app/assets/javascripts/diffs/components/diff_file_header.vue @@ -263,6 +263,7 @@ export default { :disabled="!diffHasDiscussions(diffFile)" :class="{ active: hasExpandedDiscussions }" class="js-btn-vue-toggle-comments btn" + data-qa-selector="toggle_comments_button" type="button" @click="handleToggleDiscussions" > diff --git a/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue b/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue index af5550aec3..7ede7a4f43 100644 --- a/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue +++ b/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue @@ -1,6 +1,7 @@ diff --git a/app/assets/javascripts/diffs/components/hidden_files_warning.vue b/app/assets/javascripts/diffs/components/hidden_files_warning.vue index 119e139de2..035c2b3b11 100644 --- a/app/assets/javascripts/diffs/components/hidden_files_warning.vue +++ b/app/assets/javascripts/diffs/components/hidden_files_warning.vue @@ -1,4 +1,5 @@ + + diff --git a/app/assets/javascripts/diffs/components/inline_diff_table_row.vue b/app/assets/javascripts/diffs/components/inline_diff_table_row.vue index 2d5262baee..55a8df43c6 100644 --- a/app/assets/javascripts/diffs/components/inline_diff_table_row.vue +++ b/app/assets/javascripts/diffs/components/inline_diff_table_row.vue @@ -2,6 +2,7 @@ import { mapActions, mapState } from 'vuex'; import DiffTableCell from './diff_table_cell.vue'; import { + MATCH_LINE_TYPE, NEW_LINE_TYPE, OLD_LINE_TYPE, CONTEXT_LINE_TYPE, @@ -58,6 +59,9 @@ export default { inlineRowId() { return this.line.line_code || `${this.fileHash}_${this.line.old_line}_${this.line.new_line}`; }, + isMatchLine() { + return this.line.type === MATCH_LINE_TYPE; + }, }, created() { this.newLineType = NEW_LINE_TYPE; @@ -81,6 +85,7 @@ export default {