diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-10 00:08:54 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-10 00:08:54 +0300 |
commit | a8648ba08604085c76be1e4f5253ffa89aa192e3 (patch) | |
tree | 2d2935497b0291eed102e75725fd4bb801146993 | |
parent | e440e09fe47e84c45f9ed9acc3ec1213846e8be4 (diff) |
Add latest changes from gitlab-org/gitlab@master
7 files changed, 80 insertions, 133 deletions
diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 99149442509..51e8ec378b2 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -9,7 +9,9 @@ Set the title to: `Description of the original issue` ## Prior to starting the security release work - [ ] Read the [security process for developers] if you are not familiar with it. +- [ ] Make sure the issue really needs to follow the security release workflow. - Verify if the issue you're working on `gitlab-org/gitlab` is confidential, if it's public fix should be placed on GitLab canonical and no backports are required. + - If the issue you're fixing doesn't appear to be something that can be exploited by a malicious person and is instead simply a security enhancement do not hesitate to ping `@gitlab-com/gl-security/appsec` to discuss if the issue can be fixed in the canonical repository. - [ ] **IMPORTANT**: Mark this [issue as linked] to the Security Release Tracking Issue. You can find it on the topic of the `#releases` Slack channel. This issue MUST be linked for the release bot to know that the associated merge requests should be merged for this security release. - Fill out the [Links section](#links): diff --git a/app/views/groups/runners/_sort_dropdown.html.haml b/app/views/groups/runners/_sort_dropdown.html.haml index eb826552211..e914bd00dac 100644 --- a/app/views/groups/runners/_sort_dropdown.html.haml +++ b/app/views/groups/runners/_sort_dropdown.html.haml @@ -1,4 +1,4 @@ -- sorted_by = sort_options_hash[@sort] +- sorted_by = sort_options_hash[@sort] || sort_title_created_date .dropdown.inline.gl-ml-3 %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' } } diff --git a/config/feature_flags/development/github_review_importer_query_only_unimported_merge_requests.yml b/config/feature_flags/development/github_review_importer_query_only_unimported_merge_requests.yml deleted file mode 100644 index 511b9a6a2ec..00000000000 --- a/config/feature_flags/development/github_review_importer_query_only_unimported_merge_requests.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: github_review_importer_query_only_unimported_merge_requests -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62036 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/332982 -milestone: '14.0' -type: development -group: group::import -default_enabled: true diff --git a/doc/user/packages/conan_repository/index.md b/doc/user/packages/conan_repository/index.md index c6cc7e7905a..d3e913edfda 100644 --- a/doc/user/packages/conan_repository/index.md +++ b/doc/user/packages/conan_repository/index.md @@ -210,13 +210,6 @@ conan user <gitlab_username or deploy_token_username> -r gitlab -p <personal_acc Now when you run commands with `--remote=gitlab`, your username and password are included in the requests. -Alternatively, you can explicitly include your credentials in any given command. -For example: - -```shell -CONAN_LOGIN_USERNAME=<gitlab_username or deploy_token_username> CONAN_PASSWORD=<personal_access_token or deploy_token> conan upload Hello/0.1@mycompany/beta --all --remote=gitlab -``` - NOTE: Because your authentication with GitLab expires on a regular basis, you may occasionally need to re-enter your personal access token. diff --git a/lib/gitlab/github_import/importer/pull_requests_reviews_importer.rb b/lib/gitlab/github_import/importer/pull_requests_reviews_importer.rb index e389acbf877..bd65eb5899c 100644 --- a/lib/gitlab/github_import/importer/pull_requests_reviews_importer.rb +++ b/lib/gitlab/github_import/importer/pull_requests_reviews_importer.rb @@ -37,43 +37,6 @@ module Gitlab review.id end - def each_object_to_import(&block) - if use_github_review_importer_query_only_unimported_merge_requests? - each_merge_request_to_import(&block) - else - each_merge_request_skipping_imported(&block) - end - end - - private - - attr_reader :merge_requests_already_imported_cache_key - - # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62036#note_587181108 - def use_github_review_importer_query_only_unimported_merge_requests? - Feature.enabled?( - :github_review_importer_query_only_unimported_merge_requests, - default_enabled: :yaml - ) - end - - def each_merge_request_skipping_imported - project.merge_requests.find_each do |merge_request| - next if already_imported?(merge_request) - - Gitlab::GithubImport::ObjectCounter.increment(project, object_type, :fetched) - - client - .pull_request_reviews(project.import_source, merge_request.iid) - .each do |review| - review.merge_request_id = merge_request.id - yield(review) - end - - mark_as_imported(merge_request) - end - end - # The worker can be interrupted, by rate limit for instance, # in different situations. To avoid requesting already imported data, # if the worker is interrupted: @@ -82,7 +45,7 @@ module Gitlab # - before importing all merge requests reviews # Merge requests that had all the reviews imported are cached with # `mark_merge_request_reviews_imported` - def each_merge_request_to_import + def each_object_to_import(&block) each_review_page do |page, merge_request| page.objects.each do |review| next if already_imported?(review) @@ -97,6 +60,10 @@ module Gitlab end end + private + + attr_reader :merge_requests_already_imported_cache_key + def each_review_page merge_requests_to_import.find_each do |merge_request| # The page counter needs to be scoped by merge request to avoid skipping diff --git a/spec/lib/gitlab/github_import/importer/pull_requests_reviews_importer_spec.rb b/spec/lib/gitlab/github_import/importer/pull_requests_reviews_importer_spec.rb index 08be350f0f9..c5fa67e50aa 100644 --- a/spec/lib/gitlab/github_import/importer/pull_requests_reviews_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/pull_requests_reviews_importer_spec.rb @@ -27,100 +27,62 @@ RSpec.describe Gitlab::GithubImport::Importer::PullRequestsReviewsImporter do end describe '#each_object_to_import', :clean_gitlab_redis_cache do - context 'when github_review_importer_query_only_unimported_merge_requests is enabled' do - before do - stub_feature_flags(github_review_importer_query_only_unimported_merge_requests: true) - end - - let(:merge_request) do - create( - :merged_merge_request, - iid: 999, - source_project: project, - target_project: project - ) - end - - let(:review) { double(id: 1) } - - it 'fetches the pull requests reviews data' do - page = double(objects: [review], number: 1) - - expect(review) - .to receive(:merge_request_id=) - .with(merge_request.id) - - expect(client) - .to receive(:each_page) - .exactly(:once) # ensure to be cached on the second call - .with(:pull_request_reviews, 'github/repo', merge_request.iid, page: 1) - .and_yield(page) + let(:merge_request) do + create( + :merged_merge_request, + iid: 999, + source_project: project, + target_project: project + ) + end - expect { |b| subject.each_object_to_import(&b) } - .to yield_with_args(review) + let(:review) { double(id: 1) } - subject.each_object_to_import {} - end + it 'fetches the pull requests reviews data' do + page = double(objects: [review], number: 1) - it 'skips cached pages' do - Gitlab::GithubImport::PageCounter - .new(project, "merge_request/#{merge_request.id}/pull_request_reviews") - .set(2) + expect(review) + .to receive(:merge_request_id=) + .with(merge_request.id) - expect(review).not_to receive(:merge_request_id=) + expect(client) + .to receive(:each_page) + .exactly(:once) # ensure to be cached on the second call + .with(:pull_request_reviews, 'github/repo', merge_request.iid, page: 1) + .and_yield(page) - expect(client) - .to receive(:each_page) - .exactly(:once) # ensure to be cached on the second call - .with(:pull_request_reviews, 'github/repo', merge_request.iid, page: 2) + expect { |b| subject.each_object_to_import(&b) } + .to yield_with_args(review) - subject.each_object_to_import {} - end + subject.each_object_to_import {} + end - it 'skips cached merge requests' do - Gitlab::Cache::Import::Caching.set_add( - "github-importer/merge_request/already-imported/#{project.id}", - merge_request.id - ) + it 'skips cached pages' do + Gitlab::GithubImport::PageCounter + .new(project, "merge_request/#{merge_request.id}/pull_request_reviews") + .set(2) - expect(review).not_to receive(:merge_request_id=) + expect(review).not_to receive(:merge_request_id=) - expect(client).not_to receive(:each_page) + expect(client) + .to receive(:each_page) + .exactly(:once) # ensure to be cached on the second call + .with(:pull_request_reviews, 'github/repo', merge_request.iid, page: 2) - subject.each_object_to_import {} - end + subject.each_object_to_import {} end - context 'when github_review_importer_query_only_unimported_merge_requests is disabled' do - before do - stub_feature_flags(github_review_importer_query_only_unimported_merge_requests: false) - end - - it 'fetchs the merged pull requests data' do - merge_request = create( - :merged_merge_request, - iid: 999, - source_project: project, - target_project: project - ) - - review = double - - expect(review) - .to receive(:merge_request_id=) - .with(merge_request.id) + it 'skips cached merge requests' do + Gitlab::Cache::Import::Caching.set_add( + "github-importer/merge_request/already-imported/#{project.id}", + merge_request.id + ) - allow(client) - .to receive(:pull_request_reviews) - .exactly(:once) # ensure to be cached on the second call - .with('github/repo', merge_request.iid) - .and_return([review]) + expect(review).not_to receive(:merge_request_id=) - expect { |b| subject.each_object_to_import(&b) } - .to yield_with_args(review) + expect(client).not_to receive(:each_page) - subject.each_object_to_import {} - end + subject.each_object_to_import {} end end end diff --git a/spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb b/spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb new file mode 100644 index 00000000000..4b5027a5a56 --- /dev/null +++ b/spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'groups/runners/sort_dropdown.html.haml' do + describe 'render' do + let_it_be(:sort_options_hash) { { by_title: 'Title' } } + let_it_be(:sort_title_created_date) { 'Created date' } + + before do + allow(view).to receive(:sort).and_return('by_title') + end + + describe 'when a sort option is not selected' do + it 'renders a default sort option' do + render 'groups/runners/sort_dropdown', sort_options_hash: sort_options_hash, sort_title_created_date: sort_title_created_date + + expect(rendered).to have_content 'Created date' + end + end + + describe 'when a sort option is selected' do + it 'renders the selected sort option' do + @sort = :by_title + render 'groups/runners/sort_dropdown', sort_options_hash: sort_options_hash, sort_title_created_date: sort_title_created_date + + expect(rendered).to have_content 'Title' + end + end + end +end |