Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
331cdcceef
commit
9e26af2dd9
22 changed files with 220 additions and 287 deletions
|
@ -735,7 +735,7 @@ To resolve this error, you must apply a new license to the GitLab instance witho
|
||||||
|
|
||||||
1. Remove or comment out the GitLab configuration lines for all non-primary LDAP servers.
|
1. Remove or comment out the GitLab configuration lines for all non-primary LDAP servers.
|
||||||
1. [Reconfigure GitLab](../../restart_gitlab.md#omnibus-gitlab-reconfigure) so that it temporarily uses only one LDAP server.
|
1. [Reconfigure GitLab](../../restart_gitlab.md#omnibus-gitlab-reconfigure) so that it temporarily uses only one LDAP server.
|
||||||
1. Enter the [Rails console and add the license key](../../troubleshooting/gitlab_rails_cheat_sheet.md#add-a-license-through-the-console).
|
1. Enter the [Rails console and add the license key](../../../user/admin_area/license_file.md#add-a-license-through-the-console).
|
||||||
1. Re-enable the additional LDAP servers in the GitLab configuration and reconfigure GitLab again.
|
1. Re-enable the additional LDAP servers in the GitLab configuration and reconfigure GitLab again.
|
||||||
|
|
||||||
## Debugging Tools
|
## Debugging Tools
|
||||||
|
|
|
@ -122,7 +122,7 @@ be resynced with a back-off period. If you want to reset them manually, this
|
||||||
Rake task marks projects where verification has failed or the checksum mismatch
|
Rake task marks projects where verification has failed or the checksum mismatch
|
||||||
to be resynced without the back-off period:
|
to be resynced without the back-off period:
|
||||||
|
|
||||||
Run the appropriate commands on a **Rails node on the primary** site.
|
Run the appropriate commands on a **Rails node on the secondary** site.
|
||||||
|
|
||||||
For repositories:
|
For repositories:
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,6 @@ The following Cloud Native Hybrid reference architectures, where select recommen
|
||||||
- [Up to 25,000 users](25k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative)
|
- [Up to 25,000 users](25k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative)
|
||||||
- [Up to 50,000 users](50k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative)
|
- [Up to 50,000 users](50k_users.md#cloud-native-hybrid-reference-architecture-with-helm-charts-alternative)
|
||||||
|
|
||||||
A GitLab [Premium or Ultimate](https://about.gitlab.com/pricing/#self-managed) license is required
|
|
||||||
to get assistance from Support with troubleshooting the [2,000 users](2k_users.md)
|
|
||||||
and higher reference architectures.
|
|
||||||
[Read more about our definition of scaled architectures](https://about.gitlab.com/support/definitions/#definition-of-scaled-architecture).
|
|
||||||
|
|
||||||
## Deciding which architecture to use
|
## Deciding which architecture to use
|
||||||
|
|
||||||
The Reference Architectures are designed to strike a balance between two important factors--performance and resilience.
|
The Reference Architectures are designed to strike a balance between two important factors--performance and resilience.
|
||||||
|
|
|
@ -277,159 +277,11 @@ MergeRequests::PostMergeService.new(project: p, current_user: u).execute(m)
|
||||||
|
|
||||||
## CI
|
## CI
|
||||||
|
|
||||||
### Cancel stuck pending pipelines
|
This content has been moved to [Troubleshooting CI/CD](../../ci/troubleshooting.md).
|
||||||
|
|
||||||
For more information, see the [confidential issue](../../user/project/issues/confidential_issues.md)
|
|
||||||
`https://gitlab.com/gitlab-com/support-forum/issues/2449#note_41929707`.
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
Ci::Pipeline.where(project_id: p.id).where(status: 'pending').count
|
|
||||||
Ci::Pipeline.where(project_id: p.id).where(status: 'pending').each {|p| p.cancel if p.stuck?}
|
|
||||||
Ci::Pipeline.where(project_id: p.id).where(status: 'pending').count
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove artifacts more than a week old
|
|
||||||
|
|
||||||
This section has been moved to the [job artifacts troubleshooting documentation](../job_artifacts.md#delete-job-artifacts-from-jobs-completed-before-a-specific-date).
|
|
||||||
|
|
||||||
### Find reason failure (for when build trace is empty) (Introduced in 10.3.0)
|
|
||||||
|
|
||||||
See <https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41111>.
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
build = Ci::Build.find(78420)
|
|
||||||
|
|
||||||
build.failure_reason
|
|
||||||
|
|
||||||
build.dependencies.each do |d| { puts "status: #{d.status}, finished at: #{d.finished_at},
|
|
||||||
completed: #{d.complete?}, artifacts_expired: #{d.artifacts_expired?}, erased: #{d.erased?}" }
|
|
||||||
```
|
|
||||||
|
|
||||||
### Try CI integration
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
p = Project.find_by_full_path('<project_path>')
|
|
||||||
m = project.merge_requests.find_by(iid: )
|
|
||||||
m.project.try(:ci_integration)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Validate the `.gitlab-ci.yml`
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
project = Project.find_by_full_path 'group/project'
|
|
||||||
content = project.repository.gitlab_ci_yml_for(project.repository.root_ref_sha)
|
|
||||||
Gitlab::Ci::Lint.new(project: project, current_user: User.first).validate(content)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Disable AutoDevOps on Existing Projects
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
Project.all.each do |p|
|
|
||||||
p.auto_devops_attributes={"enabled"=>"0"}
|
|
||||||
p.save
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
### Obtain runners registration token
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
Gitlab::CurrentSettings.current_application_settings.runners_registration_token
|
|
||||||
```
|
|
||||||
|
|
||||||
### Seed runners registration token
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
appSetting = Gitlab::CurrentSettings.current_application_settings
|
|
||||||
appSetting.set_runners_registration_token('<new-runners-registration-token>')
|
|
||||||
appSetting.save!
|
|
||||||
```
|
|
||||||
|
|
||||||
### Run pipeline schedules manually
|
|
||||||
|
|
||||||
You can run pipeline schedules manually through the Rails console to reveal any errors that are usually not visible.
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
# schedule_id can be obtained from Edit Pipeline Schedule page
|
|
||||||
schedule = Ci::PipelineSchedule.find_by(id: <schedule_id>)
|
|
||||||
|
|
||||||
# Select the user that you want to run the schedule for
|
|
||||||
user = User.find_by_username('<username>')
|
|
||||||
|
|
||||||
# Run the schedule
|
|
||||||
ps = Ci::CreatePipelineService.new(schedule.project, user, ref: schedule.ref).execute!(:schedule, ignore_skip_ci: true, save_on_errors: false, schedule: schedule)
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
### See current license information
|
This content has been moved to [Activate GitLab EE with a license file or key](../../user/admin_area/license_file.md).
|
||||||
|
|
||||||
```ruby
|
|
||||||
# License information (name, company, email address)
|
|
||||||
License.current.licensee
|
|
||||||
|
|
||||||
# Plan:
|
|
||||||
License.current.plan
|
|
||||||
|
|
||||||
# Uploaded:
|
|
||||||
License.current.created_at
|
|
||||||
|
|
||||||
# Started:
|
|
||||||
License.current.starts_at
|
|
||||||
|
|
||||||
# Expires at:
|
|
||||||
License.current.expires_at
|
|
||||||
|
|
||||||
# Is this a trial license?
|
|
||||||
License.current.trial?
|
|
||||||
|
|
||||||
# License ID for lookup on CustomersDot
|
|
||||||
License.current.license_id
|
|
||||||
|
|
||||||
# License data in Base64-encoded ASCII format
|
|
||||||
License.current.data
|
|
||||||
```
|
|
||||||
|
|
||||||
### Check if a project feature is available on the instance
|
|
||||||
|
|
||||||
Features listed in <https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/license.rb>.
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
License.current.feature_available?(:jira_dev_panel_integration)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Check if a project feature is available in a project
|
|
||||||
|
|
||||||
Features listed in [`license.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/license.rb).
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
p = Project.find_by_full_path('<group>/<project>')
|
|
||||||
p.feature_available?(:jira_dev_panel_integration)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Add a license through the console
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
key = "<key>"
|
|
||||||
license = License.new(data: key)
|
|
||||||
license.save
|
|
||||||
License.current # check to make sure it applied
|
|
||||||
```
|
|
||||||
|
|
||||||
This is needed for example in a known edge-case with
|
|
||||||
[expired license and multiple LDAP servers](../auth/ldap/ldap-troubleshooting.md#expired-license-causes-errors-with-multiple-ldap-servers).
|
|
||||||
|
|
||||||
### Remove licenses
|
|
||||||
|
|
||||||
To clean up the [License History table](../../user/admin_area/license_file.md#view-license-details-and-history):
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
TYPE = :trial?
|
|
||||||
# or :expired?
|
|
||||||
|
|
||||||
License.select(&TYPE).each(&:destroy!)
|
|
||||||
|
|
||||||
# or even License.all.each(&:destroy!)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Registry
|
## Registry
|
||||||
|
|
||||||
|
@ -445,74 +297,6 @@ Find this content in the [Container Registry troubleshooting documentation](../p
|
||||||
|
|
||||||
This content has been moved to [Troubleshooting Sidekiq](sidekiq.md).
|
This content has been moved to [Troubleshooting Sidekiq](sidekiq.md).
|
||||||
|
|
||||||
## LFS
|
|
||||||
|
|
||||||
### Get information about LFS objects and associated project
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
o = LfsObject.find_by(oid: "<oid>")
|
|
||||||
p = Project.find(LfsObjectsProject.find_by_lfs_object_id(o.id).project_id)
|
|
||||||
```
|
|
||||||
|
|
||||||
You can then delete these records from the database with:
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
LfsObjectsProject.find_by_lfs_object_id(o.id).destroy
|
|
||||||
o.destroy
|
|
||||||
```
|
|
||||||
|
|
||||||
You would also want to combine this with deleting the LFS file in the LFS storage
|
|
||||||
area on disk. It remains to be seen exactly how or whether the deletion is useful, however.
|
|
||||||
|
|
||||||
## Decryption Problems
|
|
||||||
|
|
||||||
### Bad Decrypt Script (for encrypted variables)
|
|
||||||
|
|
||||||
This content has been converted to a Rake task, see [verify database values can be decrypted using the current secrets](../raketasks/check.md#verify-database-values-can-be-decrypted-using-the-current-secrets).
|
|
||||||
|
|
||||||
As an example of repairing, if `ProjectImportData Bad count:` is detected and the decision is made to delete the
|
|
||||||
encrypted credentials to allow manual reentry:
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
# Find the ids of the corrupt ProjectImportData objects
|
|
||||||
total = 0
|
|
||||||
bad = []
|
|
||||||
ProjectImportData.find_each do |data|
|
|
||||||
begin
|
|
||||||
total += 1
|
|
||||||
data.credentials
|
|
||||||
rescue => e
|
|
||||||
bad << data.id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "Bad count: #{bad.count} / #{total}"
|
|
||||||
|
|
||||||
# See the bad ProjectImportData ids
|
|
||||||
bad
|
|
||||||
|
|
||||||
# Remove the corrupted credentials
|
|
||||||
import_data = ProjectImportData.where(id: bad)
|
|
||||||
import_data.each do |data|
|
|
||||||
data.update_columns({ encrypted_credentials: nil, encrypted_credentials_iv: nil, encrypted_credentials_salt: nil})
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
If `User OTP Secret Bad count:` is detected. For each user listed disable/enable
|
|
||||||
two-factor authentication.
|
|
||||||
|
|
||||||
The following script searches in some of the tables for encrypted tokens that are
|
|
||||||
causing decryption errors, and update or reset as needed:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
wget -O /tmp/encrypted-tokens.rb https://gitlab.com/snippets/1876342/raw
|
|
||||||
gitlab-rails runner /tmp/encrypted-tokens.rb
|
|
||||||
```
|
|
||||||
|
|
||||||
### Decrypt Script for encrypted tokens
|
|
||||||
|
|
||||||
This content has been converted to a Rake task, see [verify database values can be decrypted using the current secrets](../raketasks/check.md#verify-database-values-can-be-decrypted-using-the-current-secrets).
|
|
||||||
|
|
||||||
## Geo
|
## Geo
|
||||||
|
|
||||||
### Reverify all uploads (or any SSF data type which is verified)
|
### Reverify all uploads (or any SSF data type which is verified)
|
||||||
|
@ -565,44 +349,7 @@ Moved to [Geo replication troubleshooting](../geo/replication/troubleshooting.md
|
||||||
|
|
||||||
## Generate Service Ping
|
## Generate Service Ping
|
||||||
|
|
||||||
The [Service Ping Guide](../../development/service_ping/index.md) in our developer documentation
|
This content has been moved to [Service Ping Troubleshooting](../../development/service_ping/troubleshooting.md).
|
||||||
has more information about Service Ping.
|
|
||||||
|
|
||||||
### Generate or get the cached Service Ping
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
Gitlab::Usage::ServicePingReport.for(output: :all_metrics_values, cached: true)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Generate a fresh new Service Ping
|
|
||||||
|
|
||||||
This also refreshes the cached Service Ping displayed in the Admin Area
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
Gitlab::Usage::ServicePingReport.for(output: :all_metrics_values)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Generate and print
|
|
||||||
|
|
||||||
Generates Service Ping data in JSON format.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
rake gitlab:usage_data:generate
|
|
||||||
```
|
|
||||||
|
|
||||||
Generates Service Ping data in YAML format:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
rake gitlab:usage_data:dump_sql_in_yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Generate and send Service Ping
|
|
||||||
|
|
||||||
Prints the metrics saved in `conversational_development_index_metrics`.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
rake gitlab:usage_data:generate_and_send
|
|
||||||
```
|
|
||||||
|
|
||||||
## GraphQL
|
## GraphQL
|
||||||
|
|
||||||
|
|
|
@ -400,6 +400,77 @@ This flag reduces system resource usage on the `jobs/request` endpoint.
|
||||||
When enabled, jobs created in the last hour can run in projects which are out of quota.
|
When enabled, jobs created in the last hour can run in projects which are out of quota.
|
||||||
Earlier jobs are already canceled by a periodic background worker (`StuckCiJobsWorker`).
|
Earlier jobs are already canceled by a periodic background worker (`StuckCiJobsWorker`).
|
||||||
|
|
||||||
|
## CI/CD troubleshooting rails console commands
|
||||||
|
|
||||||
|
The following commands are run in the [rails console](../administration/operations/rails_console.md#starting-a-rails-console-session).
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
Any command that changes data directly could be damaging if not run correctly, or under the right conditions.
|
||||||
|
We highly recommend running them in a test environment with a backup of the instance ready to be restored, just in case.
|
||||||
|
|
||||||
|
### Cancel stuck pending pipelines
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
project = Project.find_by_full_path('<project_path>')
|
||||||
|
Ci::Pipeline.where(project_id: project.id).where(status: 'pending').count
|
||||||
|
Ci::Pipeline.where(project_id: project.id).where(status: 'pending').each {|p| p.cancel if p.stuck?}
|
||||||
|
Ci::Pipeline.where(project_id: project.id).where(status: 'pending').count
|
||||||
|
```
|
||||||
|
|
||||||
|
### Try merge request integration
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
project = Project.find_by_full_path('<project_path>')
|
||||||
|
mr = project.merge_requests.find_by(iid: <merge_request_iid>)
|
||||||
|
mr.project.try(:ci_integration)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Validate the `.gitlab-ci.yml` file
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
project = Project.find_by_full_path('<project_path>')
|
||||||
|
content = p.repository.gitlab_ci_yml_for(project.repository.root_ref_sha)
|
||||||
|
Gitlab::Ci::Lint.new(project: project, current_user: User.first).validate(content)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Disable AutoDevOps on Existing Projects
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
Project.all.each do |p|
|
||||||
|
p.auto_devops_attributes={"enabled"=>"0"}
|
||||||
|
p.save
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
### Obtain runners registration token
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
Gitlab::CurrentSettings.current_application_settings.runners_registration_token
|
||||||
|
```
|
||||||
|
|
||||||
|
### Seed runners registration token
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
appSetting = Gitlab::CurrentSettings.current_application_settings
|
||||||
|
appSetting.set_runners_registration_token('<new-runners-registration-token>')
|
||||||
|
appSetting.save!
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run pipeline schedules manually
|
||||||
|
|
||||||
|
You can run pipeline schedules manually through the Rails console to reveal any errors that are usually not visible.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
# schedule_id can be obtained from Edit Pipeline Schedule page
|
||||||
|
schedule = Ci::PipelineSchedule.find_by(id: <schedule_id>)
|
||||||
|
|
||||||
|
# Select the user that you want to run the schedule for
|
||||||
|
user = User.find_by_username('<username>')
|
||||||
|
|
||||||
|
# Run the schedule
|
||||||
|
ps = Ci::CreatePipelineService.new(schedule.project, user, ref: schedule.ref).execute!(:schedule, ignore_skip_ci: true, save_on_errors: false, schedule: schedule)
|
||||||
|
```
|
||||||
|
|
||||||
## How to get help
|
## How to get help
|
||||||
|
|
||||||
If you are unable to resolve pipeline issues, you can get help from:
|
If you are unable to resolve pipeline issues, you can get help from:
|
||||||
|
|
|
@ -120,3 +120,45 @@ To work around this bug, you have two options:
|
||||||
1. Expand **Usage Statistics**.
|
1. Expand **Usage Statistics**.
|
||||||
1. Clear the **Enable Service Ping** checkbox.
|
1. Clear the **Enable Service Ping** checkbox.
|
||||||
1. Select **Save Changes**.
|
1. Select **Save Changes**.
|
||||||
|
|
||||||
|
## Generate Service Ping
|
||||||
|
|
||||||
|
### Generate or get the cached Service Ping in rails console
|
||||||
|
|
||||||
|
Use the following method in the [rails console](../../administration/operations/rails_console.md#starting-a-rails-console-session).
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
Gitlab::Usage::ServicePingReport.for(output: :all_metrics_values, cached: true)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Generate a fresh new Service Ping
|
||||||
|
|
||||||
|
Use the following method in the [rails console](../../administration/operations/rails_console.md#starting-a-rails-console-session).
|
||||||
|
|
||||||
|
This also refreshes the cached Service Ping displayed in the Admin Area.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
Gitlab::Usage::ServicePingReport.for(output: :all_metrics_values)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Generate and print
|
||||||
|
|
||||||
|
Generates Service Ping data in JSON format.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
gitlab-rake gitlab:usage_data:generate
|
||||||
|
```
|
||||||
|
|
||||||
|
Generates Service Ping data in YAML format:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
gitlab-rake gitlab:usage_data:dump_sql_in_yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Generate and send Service Ping
|
||||||
|
|
||||||
|
Prints the metrics saved in `conversational_development_index_metrics`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
gitlab-rake gitlab:usage_data:generate_and_send
|
||||||
|
```
|
||||||
|
|
|
@ -46,7 +46,7 @@ The following Rake tasks are available for use with GitLab:
|
||||||
| [Reset user passwords](../security/reset_user_password.md#use-a-rake-task) | Reset user passwords using Rake. |
|
| [Reset user passwords](../security/reset_user_password.md#use-a-rake-task) | Reset user passwords using Rake. |
|
||||||
| [Uploads migrate](../administration/raketasks/uploads/migrate.md) | Migrate uploads between local storage and object storage. |
|
| [Uploads migrate](../administration/raketasks/uploads/migrate.md) | Migrate uploads between local storage and object storage. |
|
||||||
| [Uploads sanitize](../administration/raketasks/uploads/sanitize.md) | Remove EXIF data from images uploaded to earlier versions of GitLab. |
|
| [Uploads sanitize](../administration/raketasks/uploads/sanitize.md) | Remove EXIF data from images uploaded to earlier versions of GitLab. |
|
||||||
| [Service Data](../administration/troubleshooting/gitlab_rails_cheat_sheet.md#generate-service-ping) | Generate and troubleshoot [Service Ping](../development/service_ping/index.md). |
|
| [Service Data](../development/service_ping/troubleshooting.md#generate-service-ping) | Generate and troubleshoot [Service Ping](../development/service_ping/index.md). |
|
||||||
| [User management](user_management.md) | Perform user management tasks. |
|
| [User management](user_management.md) | Perform user management tasks. |
|
||||||
| [Webhooks administration](web_hooks.md) | Maintain project webhooks. |
|
| [Webhooks administration](web_hooks.md) | Maintain project webhooks. |
|
||||||
| [X.509 signatures](x509_signatures.md) | Update X.509 commit signatures, which can be useful if the certificate store changed. |
|
| [X.509 signatures](x509_signatures.md) | Update X.509 commit signatures, which can be useful if the certificate store changed. |
|
||||||
|
|
|
@ -147,3 +147,81 @@ the license.
|
||||||
### `Start GitLab Ultimate trial` still displays after adding license
|
### `Start GitLab Ultimate trial` still displays after adding license
|
||||||
|
|
||||||
To fix this issue, restart [Puma or your entire GitLab instance](../../administration/restart_gitlab.md).
|
To fix this issue, restart [Puma or your entire GitLab instance](../../administration/restart_gitlab.md).
|
||||||
|
|
||||||
|
### License commands in the rails console
|
||||||
|
|
||||||
|
The following commands can be run in the [rails console](../../administration/operations/rails_console.md#starting-a-rails-console-session).
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
Any command that changes data directly could be damaging if not run correctly, or under the right conditions.
|
||||||
|
We highly recommend running them in a test environment with a backup of the instance ready to be restored, just in case.
|
||||||
|
|
||||||
|
#### See current license information
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
# License information (name, company, email address)
|
||||||
|
License.current.licensee
|
||||||
|
|
||||||
|
# Plan:
|
||||||
|
License.current.plan
|
||||||
|
|
||||||
|
# Uploaded:
|
||||||
|
License.current.created_at
|
||||||
|
|
||||||
|
# Started:
|
||||||
|
License.current.starts_at
|
||||||
|
|
||||||
|
# Expires at:
|
||||||
|
License.current.expires_at
|
||||||
|
|
||||||
|
# Is this a trial license?
|
||||||
|
License.current.trial?
|
||||||
|
|
||||||
|
# License ID for lookup on CustomersDot
|
||||||
|
License.current.license_id
|
||||||
|
|
||||||
|
# License data in Base64-encoded ASCII format
|
||||||
|
License.current.data
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Check if a project feature is available on the instance
|
||||||
|
|
||||||
|
Features listed in <https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/license.rb>.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
License.current.feature_available?(:jira_dev_panel_integration)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Check if a project feature is available in a project
|
||||||
|
|
||||||
|
Features listed in [`license.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/license.rb).
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
p = Project.find_by_full_path('<group>/<project>')
|
||||||
|
p.feature_available?(:jira_dev_panel_integration)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Add a license through the console
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
key = "<key>"
|
||||||
|
license = License.new(data: key)
|
||||||
|
license.save
|
||||||
|
License.current # check to make sure it applied
|
||||||
|
```
|
||||||
|
|
||||||
|
This is needed for example in a known edge-case with
|
||||||
|
[expired license and multiple LDAP servers](../../administration/auth/ldap/ldap-troubleshooting.md#expired-license-causes-errors-with-multiple-ldap-servers).
|
||||||
|
|
||||||
|
#### Remove licenses
|
||||||
|
|
||||||
|
To clean up the [License History table](../../user/admin_area/license_file.md#view-license-details-and-history):
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
TYPE = :trial?
|
||||||
|
# or :expired?
|
||||||
|
|
||||||
|
License.select(&TYPE).each(&:destroy!)
|
||||||
|
|
||||||
|
# or even License.all.each(&:destroy!)
|
||||||
|
```
|
||||||
|
|
|
@ -235,7 +235,7 @@ Users can be banned using the Admin Area. To do this:
|
||||||
1. On the top bar, select **Main menu > Admin**.
|
1. On the top bar, select **Main menu > Admin**.
|
||||||
1. On the left sidebar, select **Overview > Users**.
|
1. On the left sidebar, select **Overview > Users**.
|
||||||
1. Optional. Select a user.
|
1. Optional. Select a user.
|
||||||
1. Select the **{settings}** **User administration** dropdown.
|
1. Select the **{settings}** **User administration** dropdown list.
|
||||||
1. Select **Ban user**.
|
1. Select **Ban user**.
|
||||||
|
|
||||||
The banned user does not consume a [seat](../../subscriptions/self_managed/index.md#billable-users).
|
The banned user does not consume a [seat](../../subscriptions/self_managed/index.md#billable-users).
|
||||||
|
@ -248,7 +248,7 @@ A banned user can be unbanned using the Admin Area. To do this:
|
||||||
1. On the left sidebar, select **Overview > Users**.
|
1. On the left sidebar, select **Overview > Users**.
|
||||||
1. Select the **Banned** tab.
|
1. Select the **Banned** tab.
|
||||||
1. Optional. Select a user.
|
1. Optional. Select a user.
|
||||||
1. Select the **{settings}** **User administration** dropdown.
|
1. Select the **{settings}** **User administration** dropdown list.
|
||||||
1. Select **Unban user**.
|
1. Select **Unban user**.
|
||||||
|
|
||||||
The user's state is set to active and they consume a
|
The user's state is set to active and they consume a
|
||||||
|
|
|
@ -132,7 +132,7 @@ NOTE:
|
||||||
Any changes to this setting applies to new artifacts only. The expiration time is not
|
Any changes to this setting applies to new artifacts only. The expiration time is not
|
||||||
be updated for artifacts created before this setting was changed.
|
be updated for artifacts created before this setting was changed.
|
||||||
The administrator may need to manually search for and expire previously-created
|
The administrator may need to manually search for and expire previously-created
|
||||||
artifacts, as described in the [troubleshooting documentation](../../../administration/troubleshooting/gitlab_rails_cheat_sheet.md#remove-artifacts-more-than-a-week-old).
|
artifacts, as described in the [troubleshooting documentation](../../../administration/job_artifacts.md#delete-job-artifacts-from-jobs-completed-before-a-specific-date).
|
||||||
|
|
||||||
## Keep the latest artifacts for all jobs in the latest successful pipelines
|
## Keep the latest artifacts for all jobs in the latest successful pipelines
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ To select a CI/CD template for the required pipeline configuration:
|
||||||
1. On the top bar, select **Main menu > Admin**.
|
1. On the top bar, select **Main menu > Admin**.
|
||||||
1. On the left sidebar, select **Settings > CI/CD**.
|
1. On the left sidebar, select **Settings > CI/CD**.
|
||||||
1. Expand the **Required pipeline configuration** section.
|
1. Expand the **Required pipeline configuration** section.
|
||||||
1. Select a CI/CD template from the dropdown.
|
1. Select a CI/CD template from the dropdown list.
|
||||||
1. Select **Save changes**.
|
1. Select **Save changes**.
|
||||||
|
|
||||||
## Package Registry configuration
|
## Package Registry configuration
|
||||||
|
|
|
@ -56,7 +56,7 @@ GitLab marketing-related entries are occasionally shown on the Help page. To hid
|
||||||
|
|
||||||
You can specify a custom URL to which users are directed when they:
|
You can specify a custom URL to which users are directed when they:
|
||||||
|
|
||||||
- Select **Support** from the Help dropdown.
|
- Select **Support** from the Help dropdown list.
|
||||||
- Select **See our website for help** on the Help page.
|
- Select **See our website for help** on the Help page.
|
||||||
|
|
||||||
1. On the top bar, select **Main menu > Admin**.
|
1. On the top bar, select **Main menu > Admin**.
|
||||||
|
|
|
@ -28,7 +28,7 @@ To select a project to serve as the custom template repository:
|
||||||
1. Add custom templates to the selected repository.
|
1. Add custom templates to the selected repository.
|
||||||
|
|
||||||
After you add templates, you can use them for the entire instance.
|
After you add templates, you can use them for the entire instance.
|
||||||
They are available in the [Web Editor's dropdown](../../project/repository/web_editor.md#template-dropdowns)
|
They are available in the [Web Editor's dropdown list](../../project/repository/web_editor.md#template-dropdowns)
|
||||||
and through the [API settings](../../../api/settings.md).
|
and through the [API settings](../../../api/settings.md).
|
||||||
|
|
||||||
## Supported file types and locations
|
## Supported file types and locations
|
||||||
|
@ -67,9 +67,9 @@ extension and not be empty. So, the hierarchy should look like this:
|
||||||
|-- another_metrics-dashboard.yml
|
|-- another_metrics-dashboard.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
Your custom templates are displayed on the dropdown menu when a new file is added through the GitLab UI:
|
Your custom templates are displayed on the dropdown list when a new file is added through the GitLab UI:
|
||||||
|
|
||||||
![Custom template dropdown menu](img/file_template_user_dropdown.png)
|
![Custom template dropdown list](img/file_template_user_dropdown.png)
|
||||||
|
|
||||||
If this feature is disabled or no templates are present,
|
If this feature is disabled or no templates are present,
|
||||||
no **Custom** section displays in the selection dropdown.
|
no **Custom** section displays in the selection dropdown.
|
||||||
|
|
|
@ -262,7 +262,7 @@ These options specify the permitted types and lengths for SSH keys.
|
||||||
|
|
||||||
To specify a restriction for each key type:
|
To specify a restriction for each key type:
|
||||||
|
|
||||||
1. Select the desired option from the dropdown.
|
1. Select the desired option from the dropdown list.
|
||||||
1. Select **Save changes**.
|
1. Select **Save changes**.
|
||||||
|
|
||||||
For more details, see [SSH key restrictions](../../../security/ssh_keys_restrictions.md).
|
For more details, see [SSH key restrictions](../../../security/ssh_keys_restrictions.md).
|
||||||
|
|
|
@ -93,7 +93,7 @@ used in [Web API Fuzz Testing](index.md#http-archive-har).
|
||||||
1. Select **Export Data > Current Workspace**.
|
1. Select **Export Data > Current Workspace**.
|
||||||
1. Select requests to include in the HAR file.
|
1. Select requests to include in the HAR file.
|
||||||
1. Select **Export**.
|
1. Select **Export**.
|
||||||
1. In the **Select Export Type** dropdown select **HAR -- HTTP Archive Format**.
|
1. In the **Select Export Type** dropdown list select **HAR -- HTTP Archive Format**.
|
||||||
1. Select **Done**.
|
1. Select **Done**.
|
||||||
1. Enter a location and filename for the HAR file.
|
1. Enter a location and filename for the HAR file.
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ responses in HAR format.
|
||||||
have an account, first create an account.
|
have an account, first create an account.
|
||||||
1. Browse pages that call an API. Fiddler automatically captures the requests.
|
1. Browse pages that call an API. Fiddler automatically captures the requests.
|
||||||
1. Select one or more requests, then from the context menu, select **Export > Selected Sessions**.
|
1. Select one or more requests, then from the context menu, select **Export > Selected Sessions**.
|
||||||
1. In the **Choose Format** dropdown select **HTTPArchive v1.2**.
|
1. In the **Choose Format** dropdown list select **HTTPArchive v1.2**.
|
||||||
1. Enter a filename and select **Save**.
|
1. Enter a filename and select **Save**.
|
||||||
|
|
||||||
Fiddler shows a popup message confirming the export has succeeded.
|
Fiddler shows a popup message confirming the export has succeeded.
|
||||||
|
|
|
@ -1070,9 +1070,9 @@ To run an on-demand scan either at a scheduled date or frequency, read
|
||||||
sidebar.
|
sidebar.
|
||||||
1. Select **New scan**.
|
1. Select **New scan**.
|
||||||
1. Complete the **Scan name** and **Description** fields.
|
1. Complete the **Scan name** and **Description** fields.
|
||||||
1. In GitLab 13.10 and later, select the desired branch from the **Branch** dropdown.
|
1. In GitLab 13.10 and later, select the desired branch from the **Branch** dropdown list.
|
||||||
1. In **Scanner profile**, select a scanner profile from the dropdown.
|
1. In **Scanner profile**, select a scanner profile from the dropdown list.
|
||||||
1. In **Site profile**, select a site profile from the dropdown.
|
1. In **Site profile**, select a site profile from the dropdown list.
|
||||||
1. To run the on-demand scan immediately, select **Save and run scan**. Otherwise, select
|
1. To run the on-demand scan immediately, select **Save and run scan**. Otherwise, select
|
||||||
**Save scan** to [run](#run-a-saved-on-demand-scan) it later.
|
**Save scan** to [run](#run-a-saved-on-demand-scan) it later.
|
||||||
|
|
||||||
|
|
|
@ -227,7 +227,7 @@ The artifact generated by the secure analyzer contains all findings it discovers
|
||||||
|
|
||||||
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/4393) in GitLab Free 13.5.
|
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/4393) in GitLab Free 13.5.
|
||||||
> - Made [available in all tiers](https://gitlab.com/gitlab-org/gitlab/-/issues/273205) in 13.6.
|
> - Made [available in all tiers](https://gitlab.com/gitlab-org/gitlab/-/issues/273205) in 13.6.
|
||||||
> - Report download dropdown [added](https://gitlab.com/gitlab-org/gitlab/-/issues/273418) in 13.7.
|
> - Report download dropdown list [added](https://gitlab.com/gitlab-org/gitlab/-/issues/273418) in 13.7.
|
||||||
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/249550) in GitLab 13.9.
|
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/249550) in GitLab 13.9.
|
||||||
|
|
||||||
### All tiers
|
### All tiers
|
||||||
|
|
|
@ -57,7 +57,7 @@ project and a project that you would like to designate as the security policy pr
|
||||||
1. On the top bar, select **Main menu > Projects** and find your project.
|
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||||
1. On the left sidebar, select **Security & Compliance > Policies**.
|
1. On the left sidebar, select **Security & Compliance > Policies**.
|
||||||
1. Select **Edit Policy Project**, and search for and select the
|
1. Select **Edit Policy Project**, and search for and select the
|
||||||
project you would like to link from the dropdown menu.
|
project you would like to link from the dropdown list.
|
||||||
1. Select **Save**.
|
1. Select **Save**.
|
||||||
|
|
||||||
To unlink a security policy project, follow the same steps but instead select the trash can icon in
|
To unlink a security policy project, follow the same steps but instead select the trash can icon in
|
||||||
|
|
|
@ -20,7 +20,7 @@ For information on the relevant API, see [Award Emoji API](../api/award_emoji.md
|
||||||
## Sort issues and merge requests on vote count
|
## Sort issues and merge requests on vote count
|
||||||
|
|
||||||
You can quickly sort issues and merge requests by the number of votes they
|
You can quickly sort issues and merge requests by the number of votes they
|
||||||
have received. The sort options can be found in the dropdown menu as "Most
|
have received. The sort options can be found in the dropdown list as "Most
|
||||||
popular" and "Least popular".
|
popular" and "Least popular".
|
||||||
|
|
||||||
![Votes sort options](img/award_emoji_votes_sort_options.png)
|
![Votes sort options](img/award_emoji_votes_sort_options.png)
|
||||||
|
|
|
@ -63,7 +63,7 @@ To associate a cluster management project with your cluster:
|
||||||
page.
|
page.
|
||||||
- [Instance-level cluster](../instance/clusters/index.md), on the top bar, select **Main menu > Admin > Kubernetes**.
|
- [Instance-level cluster](../instance/clusters/index.md), on the top bar, select **Main menu > Admin > Kubernetes**.
|
||||||
1. Expand **Advanced settings**.
|
1. Expand **Advanced settings**.
|
||||||
1. From the **Cluster management project** dropdown, select the cluster management project
|
1. From the **Cluster management project** dropdown list, select the cluster management project
|
||||||
you created in the previous step.
|
you created in the previous step.
|
||||||
|
|
||||||
### Configuring your pipeline
|
### Configuring your pipeline
|
||||||
|
|
|
@ -201,7 +201,7 @@ For issues and merge requests with many comments, you can filter the page to sho
|
||||||
- **Show comments only**: Display only user comments.
|
- **Show comments only**: Display only user comments.
|
||||||
- **Show history only**: Display only activity notes.
|
- **Show history only**: Display only activity notes.
|
||||||
|
|
||||||
![Notes filters dropdown options](img/index_notes_filters.png)
|
![Notes filters dropdown list options](img/index_notes_filters.png)
|
||||||
|
|
||||||
GitLab saves your preference, so it persists when you visit the same page again
|
GitLab saves your preference, so it persists when you visit the same page again
|
||||||
from any device you're logged into.
|
from any device you're logged into.
|
||||||
|
|
|
@ -43,7 +43,7 @@ You can choose from the following three periods:
|
||||||
- Last month
|
- Last month
|
||||||
- Last three months
|
- Last three months
|
||||||
|
|
||||||
Select the desired period from the calendar dropdown.
|
Select the desired period from the calendar dropdown list.
|
||||||
|
|
||||||
![Contribution analytics choose period](img/group_stats_cal.png)
|
![Contribution analytics choose period](img/group_stats_cal.png)
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ To create a new epic board:
|
||||||
|
|
||||||
1. On the top bar, select **Main menu > Groups** and find your group.
|
1. On the top bar, select **Main menu > Groups** and find your group.
|
||||||
1. On the left sidebar, select **Epics > Boards**.
|
1. On the left sidebar, select **Epics > Boards**.
|
||||||
1. In the upper left corner, select the dropdown with the current board name.
|
1. In the upper left corner, select the dropdown list with the current board name.
|
||||||
1. Select **Create new board**.
|
1. Select **Create new board**.
|
||||||
1. Enter the new board's title.
|
1. Enter the new board's title.
|
||||||
1. Optional. To hide the Open or Closed lists, clear the **Show the Open list** and
|
1. Optional. To hide the Open or Closed lists, clear the **Show the Open list** and
|
||||||
|
@ -54,7 +54,7 @@ Prerequisites:
|
||||||
|
|
||||||
To delete the active epic board:
|
To delete the active epic board:
|
||||||
|
|
||||||
1. Select the dropdown with the current board name in the upper left corner of the epic boards page.
|
1. Select the dropdown list with the current board name in the upper left corner of the epic boards page.
|
||||||
1. Select **Delete board**.
|
1. Select **Delete board**.
|
||||||
1. Select **Delete**.
|
1. Select **Delete**.
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ To create a new list:
|
||||||
1. On the top bar, select **Main menu > Groups** and find your group.
|
1. On the top bar, select **Main menu > Groups** and find your group.
|
||||||
1. On the left sidebar, select **Epics > Boards**.
|
1. On the left sidebar, select **Epics > Boards**.
|
||||||
1. In the upper-right corner, select **Create list**.
|
1. In the upper-right corner, select **Create list**.
|
||||||
1. In the **New list** column expand the **Select a label** dropdown and select the label to use as
|
1. In the **New list** column expand the **Select a label** dropdown list and select the label to use as
|
||||||
list scope.
|
list scope.
|
||||||
1. Select **Add to board**.
|
1. Select **Add to board**.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue