Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
57c56a9260
commit
03d68e0c71
|
|
@ -0,0 +1,99 @@
|
|||
<!-- Title suggestion: [Model] Rollout Plan -->
|
||||
|
||||
<!-- Do not remove this confidential declaration and make sure to mark this issue as confidential! -->
|
||||
|
||||
_The issue is marked confidential, as we'll share SAFE metrics in the comments._
|
||||
|
||||
## Overview
|
||||
|
||||
_Add a short statement here about the new model. Make sure your overview includes a reason as to why you are introducing this new model._
|
||||
|
||||
<!-- Add relevant links. Example below: -->
|
||||
|
||||
| Resource | Links |
|
||||
| -------------- | - |
|
||||
| Model | <!-- add relevant link(s) about the model, e.g.: model documentation --> |
|
||||
| Epic or Issue | <!-- it is recommended to create an epic when introducing a new model --> |
|
||||
| Feature Flag Rollout Issue | <!-- this is required --> |
|
||||
| Status updates | <!-- this is optional but recommended --> |
|
||||
|
||||
### Rollout success criteria
|
||||
|
||||
_Add a list of success criteria here_
|
||||
|
||||
### Dashboard References
|
||||
|
||||
_This can be the acceptance rate or latency dashboards filtered to the new model. Add as many dashboards as is relevant._
|
||||
|
||||
## Legal notes
|
||||
|
||||
_Add legal notes here_
|
||||
|
||||
## Known issue list
|
||||
|
||||
_List of issues identified throughout the evaluation, implementation, and rollout of the model._
|
||||
|
||||
## Rollout
|
||||
|
||||
### Timeline
|
||||
|
||||
_Optional: add a short description here of the expected timeline._
|
||||
|
||||
<!-- Add a detailed timeline similar to the example below: -->
|
||||
|
||||
| Date | Audience | Status |
|
||||
|------|----------|--------|
|
||||
| ??? | Code Creation team members and other stakeholeders | |
|
||||
| ??? | All GitLab team members | |
|
||||
| ??? | 50% of all users | |
|
||||
| ??? | 100% of all users | |
|
||||
|
||||
### Feedback from GitLab team members
|
||||
|
||||
_Add link to the internal feedback issue._
|
||||
|
||||
### Persevere / Continue Criteria
|
||||
|
||||
<!-- example criteria: -->
|
||||
|
||||
1. Latency remains within observed p50/90/95 ranges below
|
||||
1. Acceptance rate remains within observed range below, or improves
|
||||
1. Nothing was raised as a blocker
|
||||
|
||||
<!-- example supporting details -->
|
||||
|
||||
_Observed latency from May 17 to Aug 21_
|
||||
|
||||
* p50: 637ms to 782ms
|
||||
* p90: 881ms to 1,046ms
|
||||
* p95: 977ms to 1,212 ms
|
||||
|
||||
_Observed acceptance rate from July 4 to Aug 21_
|
||||
|
||||
* Acceptance rate: 13.9% to 20.4%
|
||||
|
||||
### Pivot / Pause / Rollback Criteria
|
||||
|
||||
<!-- example criteria: -->
|
||||
|
||||
1. Requests are not using the new model as expected
|
||||
1. There is an increase or spike in time-to-show for the new model vs the old model
|
||||
1. There is a decrease in acceptance rate compared to the old model
|
||||
|
||||
## Mitigation and Rollback Plan
|
||||
|
||||
<!-- Example plan description: -->
|
||||
|
||||
We will use a Feature Flag to control the rollout. If there are any concerns (see above), we will disable the feature flag, especially for external users, to investigate any potential issues.
|
||||
|
||||
## Release Announcement
|
||||
|
||||
_Add details here about where to make announcements when the model is ready for rollout to external users._
|
||||
|
||||
/confidential
|
||||
/label "group::code creation"
|
||||
/label "devops::create"
|
||||
/label "section::dev"
|
||||
/label "type::feature"
|
||||
/label "feature::maintenance"
|
||||
/label "Category:Code Suggestions"
|
||||
|
|
@ -230,6 +230,26 @@ To temporarily change the statement timeout:
|
|||
(for example the backup or the Rails command).
|
||||
1. Revert the edit in `/var/opt/gitlab/gitlab-rails/etc/database.yml`.
|
||||
|
||||
### Observe (RE)INDEX progress report
|
||||
|
||||
In some situations, you might want to observe the progress of a `CREATE INDEX` or `REINDEX` operation. For example, you can do this to confirm whether the `CREATE INDEX` or `REINDEX` operation is active, or to check which phase the operation is in.
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- You must use PostgreSQL version 12 or later.
|
||||
|
||||
To observe a `CREATE INDEX` or `REINDEX` operation:
|
||||
|
||||
- Use the built-in [`pg_stat_progress_create_index` view](https://www.postgresql.org/docs/current/progress-reporting.html#CREATE-INDEX-PROGRESS-REPORTING).
|
||||
|
||||
For example, from a database console session, run the following command:
|
||||
|
||||
```sql
|
||||
SELECT * FROM pg_stat_progress_create_index \watch 0.2
|
||||
```
|
||||
|
||||
To learn more about producing human-friendly output and writing data to log files, see [this snippet](https://gitlab.com/-/snippets/3750940).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Database is not accepting commands to avoid wraparound data loss
|
||||
|
|
|
|||
|
|
@ -1116,6 +1116,13 @@ For example:
|
|||
1. Recommended. Enter a description for the job.
|
||||
```
|
||||
|
||||
### Documenting keyboard shortcuts and commands
|
||||
|
||||
Write UI instructions instead of keyboard commands when both options exist.
|
||||
This guideline applies to GitLab and third-party applications, like VS Code.
|
||||
|
||||
Keyboard commands for GitLab are documented in [GitLab keyboard shortcuts](../../../user/shortcuts.md).
|
||||
|
||||
### Documenting multiple fields at once
|
||||
|
||||
If the UI text sufficiently explains the fields in a section, do not include a task step for every field.
|
||||
|
|
|
|||
|
|
@ -57,10 +57,6 @@ module QA
|
|||
wait_until_project_is_ready(different_project)
|
||||
end
|
||||
|
||||
after do
|
||||
different_project.remove_via_api!
|
||||
end
|
||||
|
||||
it 'cannot be used to create a file via the project API', :smoke,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347860' do
|
||||
expect do
|
||||
|
|
|
|||
|
|
@ -9,10 +9,6 @@ module QA
|
|||
let(:api_client) { Runtime::API::Client.new(:gitlab, user: rate_limited_user) }
|
||||
let!(:request) { Runtime::API::Request.new(api_client, '/users') }
|
||||
|
||||
after do
|
||||
rate_limited_user.remove_via_api!
|
||||
end
|
||||
|
||||
it 'throttles authenticated api requests by user',
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347881' do
|
||||
with_application_settings(
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ module QA
|
|||
let(:project) { create(:project, :with_readme, name: 'merge-request-push-options') }
|
||||
let!(:runner) { create(:project_runner, project: project, name: "runner-for-#{project.name}", tags: ["runner-for-#{project.name}"]) }
|
||||
|
||||
after do |example|
|
||||
after do
|
||||
runner.remove_via_api!
|
||||
project.remove_via_api! unless example.exception
|
||||
end
|
||||
|
||||
it 'sets merge when pipeline succeeds', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347843' do
|
||||
|
|
|
|||
|
|
@ -8,10 +8,6 @@ module QA
|
|||
|
||||
let(:project) { create(:project, :with_readme, name: 'push-postreceive-idempotent') }
|
||||
|
||||
after do
|
||||
project&.remove_via_api!
|
||||
end
|
||||
|
||||
it 'pushes and creates a single push event three times', :blocking, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347680' do
|
||||
verify_single_event_per_push(repeat: 3)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -25,11 +25,6 @@ module QA
|
|||
Support::Waiter.wait_until { !pipeline_schedule[:id].nil? && pipeline_schedule[:active] == true }
|
||||
end
|
||||
|
||||
after do
|
||||
user.remove_via_api!
|
||||
project.remove_via_api!
|
||||
end
|
||||
|
||||
it 'pipeline schedule is canceled', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347999' do
|
||||
user.block!
|
||||
|
||||
|
|
|
|||
|
|
@ -30,10 +30,6 @@ module QA
|
|||
parent_group.add_member(parent_group_user)
|
||||
end
|
||||
|
||||
after do
|
||||
parent_group_user.remove_via_api!
|
||||
end
|
||||
|
||||
it(
|
||||
'is allowed to push code to sub-group project via the CLI',
|
||||
:blocking,
|
||||
|
|
@ -109,10 +105,6 @@ module QA
|
|||
sub_group.add_member(sub_group_user)
|
||||
end
|
||||
|
||||
after do
|
||||
sub_group_user.remove_via_api!
|
||||
end
|
||||
|
||||
it(
|
||||
'is not allowed to push code to parent group project via the CLI',
|
||||
:blocking,
|
||||
|
|
|
|||
|
|
@ -33,14 +33,6 @@ module QA
|
|||
group.add_member(developer_user, Resource::Members::AccessLevel::DEVELOPER)
|
||||
end
|
||||
|
||||
after do
|
||||
group.set_require_two_factor_authentication(value: 'false')
|
||||
group.remove_via_api! do |resource|
|
||||
resource.api_client = admin_api_client
|
||||
end
|
||||
developer_user.remove_via_api!
|
||||
end
|
||||
|
||||
it(
|
||||
'allows enforcing 2FA via UI and logging in with 2FA', :blocking,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347931'
|
||||
|
|
|
|||
|
|
@ -80,13 +80,6 @@ module QA
|
|||
Support::Waiter.wait_until(max_duration: 120, sleep_interval: 3) { !user.exists? }
|
||||
end
|
||||
|
||||
after do
|
||||
if recreated_user
|
||||
recreated_user.api_client = admin_api_client
|
||||
recreated_user.remove_via_api!
|
||||
end
|
||||
end
|
||||
|
||||
it 'allows recreating with same credentials', :blocking, :external_api_calls,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347868' do
|
||||
expect(Page::Main::Menu.perform(&:signed_in?)).to be_falsy
|
||||
|
|
|
|||
|
|
@ -5,10 +5,6 @@ module QA
|
|||
describe 'Project access tokens', :smoke, :health_check, product_group: :authentication do
|
||||
let(:project_access_token) { QA::Resource::ProjectAccessToken.fabricate_via_browser_ui! }
|
||||
|
||||
after do
|
||||
project_access_token.project.remove_via_api!
|
||||
end
|
||||
|
||||
it(
|
||||
'can be created and revoked via the UI',
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347688'
|
||||
|
|
|
|||
|
|
@ -25,10 +25,6 @@ module QA
|
|||
@project = create(:project, :with_readme, name: 'project-for-user-group-access-termination', group: group)
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
@sandbox.remove_via_api!
|
||||
end
|
||||
|
||||
context 'when parent group membership is terminated' do
|
||||
before do
|
||||
@sandbox.remove_member(@user)
|
||||
|
|
|
|||
|
|
@ -32,10 +32,6 @@ module QA
|
|||
end
|
||||
end
|
||||
|
||||
after do
|
||||
project.remove_via_api!
|
||||
end
|
||||
|
||||
it 'creates an issue', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/377890' do
|
||||
with_slack_tab do
|
||||
Vendor::Slack::Page::Chat.perform do |chat_page|
|
||||
|
|
@ -92,10 +88,6 @@ module QA
|
|||
context 'with target project' do
|
||||
let(:target) { create(:project, :with_readme, name: 'target_slack_project') }
|
||||
|
||||
after do
|
||||
target.remove_via_api!
|
||||
end
|
||||
|
||||
it 'moves an issue', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/377894' do
|
||||
with_slack_tab do
|
||||
Vendor::Slack::Page::Chat.perform do |chat_page|
|
||||
|
|
|
|||
|
|
@ -20,10 +20,6 @@ module QA
|
|||
create(:issue, project: project).visit!
|
||||
end
|
||||
|
||||
after do
|
||||
user&.remove_via_api!
|
||||
end
|
||||
|
||||
it 'mentions a user in a comment', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347949' do
|
||||
Page::Project::Issue::Show.perform do |show|
|
||||
show.select_all_activities_filter
|
||||
|
|
|
|||
|
|
@ -12,10 +12,6 @@ module QA
|
|||
Flow::Login.sign_in
|
||||
end
|
||||
|
||||
after do
|
||||
initial_wiki.project.remove_via_api!
|
||||
end
|
||||
|
||||
it 'by creating a formatted page with an image uploaded',
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347640' do
|
||||
initial_wiki.visit!
|
||||
|
|
|
|||
|
|
@ -16,10 +16,6 @@ module QA
|
|||
commit.visit!
|
||||
end
|
||||
|
||||
after do
|
||||
project.remove_via_api!
|
||||
end
|
||||
|
||||
it 'creates a merge request', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347716' do
|
||||
Page::Project::Commit::Show.perform(&:revert_commit)
|
||||
Page::MergeRequest::New.perform(&:create_merge_request)
|
||||
|
|
|
|||
|
|
@ -3,10 +3,6 @@
|
|||
module QA
|
||||
RSpec.describe 'Create' do
|
||||
describe 'Repository License Detection', product_group: :source_code do
|
||||
after do
|
||||
project.remove_via_api!
|
||||
end
|
||||
|
||||
let(:project) { create(:project) }
|
||||
|
||||
shared_examples 'project license detection' do
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ module QA
|
|||
|
||||
after do
|
||||
runner.remove_via_api!
|
||||
project.remove_via_api!
|
||||
end
|
||||
|
||||
it 'creates 2 trigger jobs and passes corresponding matrix variables', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348000' do
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ module QA
|
|||
|
||||
after do
|
||||
runner.remove_via_api!
|
||||
project.remove_via_api!
|
||||
end
|
||||
|
||||
keys = [
|
||||
|
|
|
|||
|
|
@ -25,10 +25,6 @@ module QA
|
|||
end
|
||||
end
|
||||
|
||||
after do
|
||||
user&.remove_via_api!
|
||||
end
|
||||
|
||||
it 'generates a todo item for the group owner', :blocking,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/370132' do
|
||||
Page::Dashboard::Todos.perform do |todos|
|
||||
|
|
|
|||
|
|
@ -4,13 +4,8 @@ module QA
|
|||
RSpec.describe 'Data Stores', product_group: :tenant_scale do
|
||||
shared_examples 'loads all images' do |admin|
|
||||
let(:api_client) { Runtime::API::Client.as_admin }
|
||||
|
||||
let(:user) { create(:user, admin: admin, api_client: api_client) }
|
||||
|
||||
after do
|
||||
user.remove_via_api!
|
||||
end
|
||||
|
||||
it do
|
||||
Flow::Login.sign_in(as: user)
|
||||
|
||||
|
|
|
|||
|
|
@ -52,24 +52,13 @@ module QA
|
|||
personal_namespace: Runtime::User.username)
|
||||
end
|
||||
|
||||
after do
|
||||
project.remove_via_api!
|
||||
group.remove_via_api!
|
||||
end
|
||||
|
||||
it_behaves_like 'invites group to project'
|
||||
end
|
||||
|
||||
context 'with a group project', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349340' do
|
||||
let(:group) { create(:group, path: "group-for-group-project-#{SecureRandom.hex(8)}") }
|
||||
|
||||
let(:project) { create(:project, :private, name: 'group-project', description: 'test group project') }
|
||||
|
||||
after do
|
||||
project.remove_via_api!
|
||||
group.remove_via_api!
|
||||
end
|
||||
|
||||
it_behaves_like 'invites group to project'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -43,13 +43,6 @@ module QA
|
|||
followed_user_api_client.personal_access_token
|
||||
end
|
||||
|
||||
after do
|
||||
project&.api_client = admin_api_client
|
||||
project&.remove_via_api!
|
||||
followed_user&.remove_via_api!
|
||||
following_user&.remove_via_api!
|
||||
end
|
||||
|
||||
it 'can be followed and their activity seen', :blocking,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347678' do
|
||||
Flow::Login.sign_in(as: following_user)
|
||||
|
|
|
|||
|
|
@ -28,10 +28,6 @@ module QA
|
|||
parent_group.add_member(parent_group_user)
|
||||
end
|
||||
|
||||
after do
|
||||
parent_group_user.remove_via_api!
|
||||
end
|
||||
|
||||
it(
|
||||
'is allowed to edit the sub-group project files', :blocking,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/363467'
|
||||
|
|
@ -66,10 +62,6 @@ module QA
|
|||
sub_group.add_member(sub_group_user)
|
||||
end
|
||||
|
||||
after do
|
||||
sub_group_user.remove_via_api!
|
||||
end
|
||||
|
||||
it(
|
||||
'is not allowed to edit the parent group project files', :blocking,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/363466'
|
||||
|
|
|
|||
Loading…
Reference in New Issue