Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
2556bfddbc
commit
a58667ab4b
11 changed files with 251 additions and 226 deletions
|
@ -1 +1 @@
|
|||
bba495c8c929b75f8cbcdc6d07d07431736aa8d1
|
||||
125f0fc0e49db4dd46f2e905f34178ce880dd79e
|
||||
|
|
|
@ -113,8 +113,9 @@ export function initLabelIndex() {
|
|||
}
|
||||
|
||||
export function initAdminLabels() {
|
||||
const pagination = document.querySelector('.labels .gl-pagination');
|
||||
const emptyState = document.querySelector('.labels .nothing-here-block.hidden');
|
||||
const labelsContainer = document.querySelector('.js-admin-labels-container');
|
||||
const pagination = labelsContainer?.querySelector('.gl-pagination');
|
||||
const emptyState = document.querySelector('.js-admin-labels-empty-state');
|
||||
|
||||
function removeLabelSuccessCallback() {
|
||||
this.closest('li').classList.add('gl-display-none!');
|
||||
|
@ -125,7 +126,8 @@ export function initAdminLabels() {
|
|||
|
||||
// display the empty state if there are no more labels
|
||||
if (labelsCount < 1 && !pagination && emptyState) {
|
||||
emptyState.classList.remove('hidden');
|
||||
emptyState.classList.remove('gl-display-none');
|
||||
labelsContainer.classList.add('gl-display-none');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -166,7 +166,6 @@ export default {
|
|||
class="issue gl-display-flex! gl-px-5!"
|
||||
:class="{ closed: issuable.closedAt, today: createdInPastDay }"
|
||||
:data-labels="labelIdsString"
|
||||
data-qa-selector="issuable_item_container"
|
||||
:data-qa-issue-id="issuableId"
|
||||
>
|
||||
<gl-form-checkbox
|
||||
|
|
|
@ -6,13 +6,27 @@
|
|||
%h3.page-title
|
||||
= _('Labels')
|
||||
%hr
|
||||
|
||||
.labels.labels-container.admin-labels.gl-bg-gray-10.gl-border-solid.gl-border-1.gl-border-gray-100
|
||||
- if @labels.present?
|
||||
- if @labels.present?
|
||||
.labels.labels-container.admin-labels.js-admin-labels-container.gl-bg-gray-10.gl-border-solid.gl-border-1.gl-border-gray-100
|
||||
%ul.manage-labels-list
|
||||
= render @labels
|
||||
|
||||
= paginate @labels, theme: 'gitlab'
|
||||
|
||||
.nothing-here-block{ class: ('hidden' if @labels.present?) }
|
||||
= _('There are no labels yet')
|
||||
.js-admin-labels-empty-state{ class: ('gl-display-none' if @labels.present?) }
|
||||
%section.row.empty-state.gl-text-center
|
||||
.col-12
|
||||
.svg-content
|
||||
= image_tag 'illustrations/labels.svg'
|
||||
.col-12
|
||||
.gl-mx-auto.gl-my-0.gl-p-5
|
||||
%h1.gl-font-size-h-display.gl-line-height-36.h4
|
||||
= s_('AdminLabels|Define your default set of project labels')
|
||||
%p.gl-mb-0
|
||||
= s_('AdminLabels|Labels created here will be automatically added to new projects.')
|
||||
%p
|
||||
= s_('AdminLabels|They can be used to categorize issues and merge requests.')
|
||||
.gl-display-flex.gl-flex-wrap.gl-justify-content-center
|
||||
= link_to new_admin_label_path, class: "btn gl-mb-3 btn-confirm btn-md gl-button gl-mx-2" do
|
||||
%span.gl-button-text
|
||||
= _('New label')
|
||||
|
|
|
@ -22,159 +22,159 @@ See also:
|
|||
|
||||
The following API resources are available in the project context:
|
||||
|
||||
| Resource | Available endpoints |
|
||||
|:--------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| [Access requests](access_requests.md) | `/projects/:id/access_requests` (also available for groups) |
|
||||
| [Access tokens](resource_access_tokens.md) | `/projects/:id/access_tokens` |
|
||||
| [Award emoji](award_emoji.md) | `/projects/:id/issues/.../award_emoji`, `/projects/:id/merge_requests/.../award_emoji`, `/projects/:id/snippets/.../award_emoji` |
|
||||
| [Branches](branches.md) | `/projects/:id/repository/branches/`, `/projects/:id/repository/merged_branches` |
|
||||
| [Commits](commits.md) | `/projects/:id/repository/commits`, `/projects/:id/statuses` |
|
||||
| [Container Registry](container_registry.md) | `/projects/:id/registry/repositories` |
|
||||
| [Custom attributes](custom_attributes.md) | `/projects/:id/custom_attributes` (also available for groups and users) |
|
||||
| [Dependencies](dependencies.md) **(ULTIMATE)** | `/projects/:id/dependencies` |
|
||||
| [Deploy keys](deploy_keys.md) | `/projects/:id/deploy_keys` (also available standalone) |
|
||||
| [Freeze Periods](freeze_periods.md) | `/projects/:id/freeze_periods` |
|
||||
| [Debian distributions](packages/debian_project_distributions.md) | `/projects/:id/debian_distributions` (also available for groups) |
|
||||
| [Deployments](deployments.md) | `/projects/:id/deployments` |
|
||||
| [Discussions](discussions.md) (threaded comments) | `/projects/:id/issues/.../discussions`, `/projects/:id/snippets/.../discussions`, `/projects/:id/merge_requests/.../discussions`, `/projects/:id/commits/.../discussions` (also available for groups) |
|
||||
| [Environments](environments.md) | `/projects/:id/environments` |
|
||||
| [Error Tracking](error_tracking.md) | `/projects/:id/error_tracking/settings` |
|
||||
| [Events](events.md) | `/projects/:id/events` (also available for users and standalone) |
|
||||
| [Feature Flags](feature_flags.md) | `/projects/:id/feature_flags` |
|
||||
| [Feature Flag User Lists](feature_flag_user_lists.md) | `/projects/:id/feature_flags_user_lists` |
|
||||
| [Integrations](integrations.md) (Formerly "services") | `/projects/:id/integrations` |
|
||||
| [Invitations](invitations.md) | `/projects/:id/invitations` (also available for groups) |
|
||||
| [Issues](issues.md) | `/projects/:id/issues` (also available for groups and standalone) |
|
||||
| [Issues Statistics](issues_statistics.md) | `/projects/:id/issues_statistics` (also available for groups and standalone) |
|
||||
| [Issue boards](boards.md) | `/projects/:id/boards` |
|
||||
| [Issue links](issue_links.md). | `/projects/:id/issues/.../links` |
|
||||
| [Iterations](iterations.md) **(PREMIUM)** | `/projects/:id/iterations` (also available for groups) |
|
||||
| [Jobs](jobs.md) | `/projects/:id/jobs`, `/projects/:id/pipelines/.../jobs` |
|
||||
| [Labels](labels.md) | `/projects/:id/labels` |
|
||||
| [Managed licenses](managed_licenses.md) **(ULTIMATE)** | `/projects/:id/managed_licenses` |
|
||||
| [Members](members.md) | `/projects/:id/members` (also available for groups) |
|
||||
| [Merge request approvals](merge_request_approvals.md) **(PREMIUM)** | `/projects/:id/approvals`, `/projects/:id/merge_requests/.../approvals` |
|
||||
| [Merge requests](merge_requests.md) | `/projects/:id/merge_requests` (also available for groups and standalone) |
|
||||
| [Merge trains](merge_trains.md) | `/projects/:id/merge_trains` |
|
||||
| [Notes](notes.md) (comments) | `/projects/:id/issues/.../notes`, `/projects/:id/snippets/.../notes`, `/projects/:id/merge_requests/.../notes` (also available for groups) |
|
||||
| [Notification settings](notification_settings.md) | `/projects/:id/notification_settings` (also available for groups and standalone) |
|
||||
| [Packages](packages.md) | `/projects/:id/packages` |
|
||||
| [Pages domains](pages_domains.md) | `/projects/:id/pages` (also available standalone) |
|
||||
| [Pipelines](pipelines.md) | `/projects/:id/pipelines` |
|
||||
| [Pipeline schedules](pipeline_schedules.md) | `/projects/:id/pipeline_schedules` |
|
||||
| [Pipeline triggers](pipeline_triggers.md) | `/projects/:id/triggers` |
|
||||
| [Projects](projects.md) including setting Webhooks | `/projects`, `/projects/:id/hooks` (also available for users) |
|
||||
| [Project badges](project_badges.md) | `/projects/:id/badges` |
|
||||
| [Project clusters](project_clusters.md) | `/projects/:id/clusters` |
|
||||
| [Project-level variables](project_level_variables.md) | `/projects/:id/variables` |
|
||||
| [Project import/export](project_import_export.md) | `/projects/:id/export`, `/projects/import`, `/projects/:id/import` |
|
||||
| [Project milestones](milestones.md) | `/projects/:id/milestones` |
|
||||
| [Project snippets](project_snippets.md) | `/projects/:id/snippets` |
|
||||
| [Project templates](project_templates.md) | `/projects/:id/templates` |
|
||||
| [Project vulnerabilities](project_vulnerabilities.md) **(ULTIMATE)** | `/projects/:id/templates` |
|
||||
| [Protected environments](protected_environments.md) | `/projects/:id/protected_environments` |
|
||||
| [Protected branches](protected_branches.md) | `/projects/:id/protected_branches` |
|
||||
| [Protected tags](protected_tags.md) | `/projects/:id/protected_tags` |
|
||||
| [Releases](releases/index.md) | `/projects/:id/releases` |
|
||||
| [Release links](releases/links.md) | `/projects/:id/releases/.../assets/links` |
|
||||
| [Remote mirrors](remote_mirrors.md) | `/projects/:id/remote_mirrors` |
|
||||
| [Repositories](repositories.md) | `/projects/:id/repository` |
|
||||
| [Repository files](repository_files.md) | `/projects/:id/repository/files` |
|
||||
| [Repository submodules](repository_submodules.md) | `/projects/:id/repository/submodules` |
|
||||
| [Resource label events](resource_label_events.md) | `/projects/:id/issues/.../resource_label_events`, `/projects/:id/merge_requests/.../resource_label_events` (also available for groups) |
|
||||
| [Runners](runners.md) | `/projects/:id/runners` (also available standalone) |
|
||||
| [Search](search.md) | `/projects/:id/search` (also available for groups and standalone) |
|
||||
| [Tags](tags.md) | `/projects/:id/repository/tags` |
|
||||
| [User-starred metrics dashboards](metrics_user_starred_dashboards.md ) | `/projects/:id/metrics/user_starred_dashboards` |
|
||||
| [Visual Review discussions](visual_review_discussions.md) **(PREMIUM)** | `/projects/:id/merge_requests/:merge_request_id/visual_review_discussions` |
|
||||
| [Vulnerabilities](vulnerabilities.md) **(ULTIMATE)** | `/vulnerabilities/:id` |
|
||||
| [Vulnerability exports](vulnerability_exports.md) **(ULTIMATE)** | `/projects/:id/vulnerability_exports` |
|
||||
| [Vulnerability findings](vulnerability_findings.md) **(ULTIMATE)** | `/projects/:id/vulnerability_findings` |
|
||||
| [Project wikis](wikis.md) | `/projects/:id/wikis` |
|
||||
| Resource | Available endpoints |
|
||||
|:------------------------------------------------------------------------|:--------------------|
|
||||
| [Access requests](access_requests.md) | `/projects/:id/access_requests` (also available for groups) |
|
||||
| [Access tokens](resource_access_tokens.md) | `/projects/:id/access_tokens` |
|
||||
| [Award emoji](award_emoji.md) | `/projects/:id/issues/.../award_emoji`, `/projects/:id/merge_requests/.../award_emoji`, `/projects/:id/snippets/.../award_emoji` |
|
||||
| [Branches](branches.md) | `/projects/:id/repository/branches/`, `/projects/:id/repository/merged_branches` |
|
||||
| [Commits](commits.md) | `/projects/:id/repository/commits`, `/projects/:id/statuses` |
|
||||
| [Container Registry](container_registry.md) | `/projects/:id/registry/repositories` |
|
||||
| [Custom attributes](custom_attributes.md) | `/projects/:id/custom_attributes` (also available for groups and users) |
|
||||
| [Debian distributions](packages/debian_project_distributions.md) | `/projects/:id/debian_distributions` (also available for groups) |
|
||||
| [Dependencies](dependencies.md) **(ULTIMATE)** | `/projects/:id/dependencies` |
|
||||
| [Deploy keys](deploy_keys.md) | `/projects/:id/deploy_keys` (also available standalone) |
|
||||
| [Deployments](deployments.md) | `/projects/:id/deployments` |
|
||||
| [Discussions](discussions.md) (threaded comments) | `/projects/:id/issues/.../discussions`, `/projects/:id/snippets/.../discussions`, `/projects/:id/merge_requests/.../discussions`, `/projects/:id/commits/.../discussions` (also available for groups) |
|
||||
| [Environments](environments.md) | `/projects/:id/environments` |
|
||||
| [Error Tracking](error_tracking.md) | `/projects/:id/error_tracking/settings` |
|
||||
| [Events](events.md) | `/projects/:id/events` (also available for users and standalone) |
|
||||
| [Feature Flag User Lists](feature_flag_user_lists.md) | `/projects/:id/feature_flags_user_lists` |
|
||||
| [Feature Flags](feature_flags.md) | `/projects/:id/feature_flags` |
|
||||
| [Freeze Periods](freeze_periods.md) | `/projects/:id/freeze_periods` |
|
||||
| [Integrations](integrations.md) (Formerly "services") | `/projects/:id/integrations` |
|
||||
| [Invitations](invitations.md) | `/projects/:id/invitations` (also available for groups) |
|
||||
| [Issue boards](boards.md) | `/projects/:id/boards` |
|
||||
| [Issue links](issue_links.md) | `/projects/:id/issues/.../links` |
|
||||
| [Issues Statistics](issues_statistics.md) | `/projects/:id/issues_statistics` (also available for groups and standalone) |
|
||||
| [Issues](issues.md) | `/projects/:id/issues` (also available for groups and standalone) |
|
||||
| [Iterations](iterations.md) **(PREMIUM)** | `/projects/:id/iterations` (also available for groups) |
|
||||
| [Jobs](jobs.md) | `/projects/:id/jobs`, `/projects/:id/pipelines/.../jobs` |
|
||||
| [Labels](labels.md) | `/projects/:id/labels` |
|
||||
| [Managed licenses](managed_licenses.md) **(ULTIMATE)** | `/projects/:id/managed_licenses` |
|
||||
| [Members](members.md) | `/projects/:id/members` (also available for groups) |
|
||||
| [Merge request approvals](merge_request_approvals.md) **(PREMIUM)** | `/projects/:id/approvals`, `/projects/:id/merge_requests/.../approvals` |
|
||||
| [Merge requests](merge_requests.md) | `/projects/:id/merge_requests` (also available for groups and standalone) |
|
||||
| [Merge trains](merge_trains.md) | `/projects/:id/merge_trains` |
|
||||
| [Notes](notes.md) (comments) | `/projects/:id/issues/.../notes`, `/projects/:id/snippets/.../notes`, `/projects/:id/merge_requests/.../notes` (also available for groups) |
|
||||
| [Notification settings](notification_settings.md) | `/projects/:id/notification_settings` (also available for groups and standalone) |
|
||||
| [Packages](packages.md) | `/projects/:id/packages` |
|
||||
| [Pages domains](pages_domains.md) | `/projects/:id/pages` (also available standalone) |
|
||||
| [Pipeline schedules](pipeline_schedules.md) | `/projects/:id/pipeline_schedules` |
|
||||
| [Pipeline triggers](pipeline_triggers.md) | `/projects/:id/triggers` |
|
||||
| [Pipelines](pipelines.md) | `/projects/:id/pipelines` |
|
||||
| [Project badges](project_badges.md) | `/projects/:id/badges` |
|
||||
| [Project clusters](project_clusters.md) | `/projects/:id/clusters` |
|
||||
| [Project import/export](project_import_export.md) | `/projects/:id/export`, `/projects/import`, `/projects/:id/import` |
|
||||
| [Project milestones](milestones.md) | `/projects/:id/milestones` |
|
||||
| [Project snippets](project_snippets.md) | `/projects/:id/snippets` |
|
||||
| [Project templates](project_templates.md) | `/projects/:id/templates` |
|
||||
| [Project vulnerabilities](project_vulnerabilities.md) **(ULTIMATE)** | `/projects/:id/templates` |
|
||||
| [Project wikis](wikis.md) | `/projects/:id/wikis` |
|
||||
| [Project-level variables](project_level_variables.md) | `/projects/:id/variables` |
|
||||
| [Projects](projects.md) including setting Webhooks | `/projects`, `/projects/:id/hooks` (also available for users) |
|
||||
| [Protected branches](protected_branches.md) | `/projects/:id/protected_branches` |
|
||||
| [Protected environments](protected_environments.md) | `/projects/:id/protected_environments` |
|
||||
| [Protected tags](protected_tags.md) | `/projects/:id/protected_tags` |
|
||||
| [Release links](releases/links.md) | `/projects/:id/releases/.../assets/links` |
|
||||
| [Releases](releases/index.md) | `/projects/:id/releases` |
|
||||
| [Remote mirrors](remote_mirrors.md) | `/projects/:id/remote_mirrors` |
|
||||
| [Repositories](repositories.md) | `/projects/:id/repository` |
|
||||
| [Repository files](repository_files.md) | `/projects/:id/repository/files` |
|
||||
| [Repository submodules](repository_submodules.md) | `/projects/:id/repository/submodules` |
|
||||
| [Resource label events](resource_label_events.md) | `/projects/:id/issues/.../resource_label_events`, `/projects/:id/merge_requests/.../resource_label_events` (also available for groups) |
|
||||
| [Runners](runners.md) | `/projects/:id/runners` (also available standalone) |
|
||||
| [Search](search.md) | `/projects/:id/search` (also available for groups and standalone) |
|
||||
| [Tags](tags.md) | `/projects/:id/repository/tags` |
|
||||
| [User-starred metrics dashboards](metrics_user_starred_dashboards.md ) | `/projects/:id/metrics/user_starred_dashboards` |
|
||||
| [Visual Review discussions](visual_review_discussions.md) **(PREMIUM)** | `/projects/:id/merge_requests/:merge_request_id/visual_review_discussions` |
|
||||
| [Vulnerabilities](vulnerabilities.md) **(ULTIMATE)** | `/vulnerabilities/:id` |
|
||||
| [Vulnerability exports](vulnerability_exports.md) **(ULTIMATE)** | `/projects/:id/vulnerability_exports` |
|
||||
| [Vulnerability findings](vulnerability_findings.md) **(ULTIMATE)** | `/projects/:id/vulnerability_findings` |
|
||||
|
||||
## Group resources
|
||||
|
||||
The following API resources are available in the group context:
|
||||
|
||||
| Resource | Available endpoints |
|
||||
|:-----------------------------------------------------------------|:---------------------------------------------------------------------------------|
|
||||
| [Access requests](access_requests.md) | `/groups/:id/access_requests/` (also available for projects) |
|
||||
| [Custom attributes](custom_attributes.md) | `/groups/:id/custom_attributes` (also available for projects and users) |
|
||||
| [Debian distributions](packages/debian_group_distributions.md) | `/groups/:id/-/packages/debian` (also available for projects) |
|
||||
| [Discussions](discussions.md) (threaded comments) **(ULTIMATE)** | `/groups/:id/epics/.../discussions` (also available for projects) |
|
||||
| [Epic issues](epic_issues.md) **(ULTIMATE)** | `/groups/:id/epics/.../issues` |
|
||||
| [Epic links](epic_links.md) **(ULTIMATE)** | `/groups/:id/epics/.../epics` |
|
||||
| [Epics](epics.md) **(ULTIMATE)** | `/groups/:id/epics` |
|
||||
| [Groups](groups.md) | `/groups`, `/groups/.../subgroups` |
|
||||
| [Group badges](group_badges.md) | `/groups/:id/badges` |
|
||||
| [Group issue boards](group_boards.md) | `/groups/:id/boards` |
|
||||
| [Group iterations](group_iterations.md) **(PREMIUM)** | `/groups/:id/iterations` (also available for projects) |
|
||||
| [Group labels](group_labels.md) | `/groups/:id/labels` |
|
||||
| [Group-level variables](group_level_variables.md) | `/groups/:id/variables` |
|
||||
| [Group milestones](group_milestones.md) | `/groups/:id/milestones` |
|
||||
| [Invitations](invitations.md) | `/groups/:id/invitations` (also available for projects) |
|
||||
| [Issues](issues.md) | `/groups/:id/issues` (also available for projects and standalone) |
|
||||
| [Issues Statistics](issues_statistics.md) | `/groups/:id/issues_statistics` (also available for projects and standalone) |
|
||||
| [Members](members.md) | `/groups/:id/members` (also available for projects) |
|
||||
| [Merge requests](merge_requests.md) | `/groups/:id/merge_requests` (also available for projects and standalone) |
|
||||
| [Notes](notes.md) (comments) | `/groups/:id/epics/.../notes` (also available for projects) |
|
||||
| Resource | Available endpoints |
|
||||
|:-----------------------------------------------------------------|:--------------------|
|
||||
| [Access requests](access_requests.md) | `/groups/:id/access_requests/` (also available for projects) |
|
||||
| [Custom attributes](custom_attributes.md) | `/groups/:id/custom_attributes` (also available for projects and users) |
|
||||
| [Debian distributions](packages/debian_group_distributions.md) | `/groups/:id/-/packages/debian` (also available for projects) |
|
||||
| [Discussions](discussions.md) (threaded comments) **(ULTIMATE)** | `/groups/:id/epics/.../discussions` (also available for projects) |
|
||||
| [Epic issues](epic_issues.md) **(ULTIMATE)** | `/groups/:id/epics/.../issues` |
|
||||
| [Epic links](epic_links.md) **(ULTIMATE)** | `/groups/:id/epics/.../epics` |
|
||||
| [Epics](epics.md) **(ULTIMATE)** | `/groups/:id/epics` |
|
||||
| [Groups](groups.md) | `/groups`, `/groups/.../subgroups` |
|
||||
| [Group badges](group_badges.md) | `/groups/:id/badges` |
|
||||
| [Group issue boards](group_boards.md) | `/groups/:id/boards` |
|
||||
| [Group iterations](group_iterations.md) **(PREMIUM)** | `/groups/:id/iterations` (also available for projects) |
|
||||
| [Group labels](group_labels.md) | `/groups/:id/labels` |
|
||||
| [Group-level variables](group_level_variables.md) | `/groups/:id/variables` |
|
||||
| [Group milestones](group_milestones.md) | `/groups/:id/milestones` |
|
||||
| [Group wikis](group_wikis.md) **(PREMIUM)** | `/groups/:id/wikis` |
|
||||
| [Invitations](invitations.md) | `/groups/:id/invitations` (also available for projects) |
|
||||
| [Issues](issues.md) | `/groups/:id/issues` (also available for projects and standalone) |
|
||||
| [Issues Statistics](issues_statistics.md) | `/groups/:id/issues_statistics` (also available for projects and standalone) |
|
||||
| [Members](members.md) | `/groups/:id/members` (also available for projects) |
|
||||
| [Merge requests](merge_requests.md) | `/groups/:id/merge_requests` (also available for projects and standalone) |
|
||||
| [Notes](notes.md) (comments) | `/groups/:id/epics/.../notes` (also available for projects) |
|
||||
| [Notification settings](notification_settings.md) | `/groups/:id/notification_settings` (also available for projects and standalone) |
|
||||
| [Resource label events](resource_label_events.md) | `/groups/:id/epics/.../resource_label_events` (also available for projects) |
|
||||
| [Search](search.md) | `/groups/:id/search` (also available for projects and standalone) |
|
||||
| [Group wikis](group_wikis.md) **(PREMIUM)** | `/groups/:id/wikis` |
|
||||
| [Resource label events](resource_label_events.md) | `/groups/:id/epics/.../resource_label_events` (also available for projects) |
|
||||
| [Search](search.md) | `/groups/:id/search` (also available for projects and standalone) |
|
||||
|
||||
## Standalone resources
|
||||
|
||||
The following API resources are available outside of project and group contexts (including `/users`):
|
||||
|
||||
| Resource | Available endpoints |
|
||||
|:---------------------------------------------------|:------------------------------------------------------------------------|
|
||||
| [Instance-level CI/CD variables](instance_level_ci_variables.md) **(FREE SELF)** | `/admin/ci/variables` |
|
||||
| [Sidekiq queues administration](admin_sidekiq_queues.md) **(FREE SELF)** | `/admin/sidekiq/queues/:queue_name` |
|
||||
| [Appearance](appearance.md) **(FREE SELF)** | `/application/appearance` |
|
||||
| [Applications](applications.md) | `/applications` |
|
||||
| [Audit Events](audit_events.md) **(PREMIUM SELF)** | `/audit_events` |
|
||||
| [Avatar](avatar.md) | `/avatar` |
|
||||
| [Broadcast messages](broadcast_messages.md) | `/broadcast_messages` |
|
||||
| [Code snippets](snippets.md) | `/snippets` |
|
||||
| [Custom attributes](custom_attributes.md) | `/users/:id/custom_attributes` (also available for groups and projects) |
|
||||
| [Deploy keys](deploy_keys.md) | `/deploy_keys` (also available for projects) |
|
||||
| [Events](events.md) | `/events`, `/users/:id/events` (also available for projects) |
|
||||
| [Feature flags](features.md) | `/features` |
|
||||
| [Geo Nodes](geo_nodes.md) **(PREMIUM SELF)** | `/geo_nodes` |
|
||||
| [Group Activity Analytics](group_activity_analytics.md) | `/analytics/group_activity/{issues_count | merge_requests_count | new_members_count }` |
|
||||
| [Group repository storage moves](group_repository_storage_moves.md) **(PREMIUM SELF)** | `/group_repository_storage_moves` |
|
||||
| [Import repository from GitHub](import.md) | `/import/github` |
|
||||
| [Instance clusters](instance_clusters.md) **(FREE SELF)** | `/admin/clusters` |
|
||||
| [Issues](issues.md) | `/issues` (also available for groups and projects) |
|
||||
| [Issues Statistics](issues_statistics.md) | `/issues_statistics` (also available for groups and projects) |
|
||||
| [Jobs](jobs.md) | `/job` |
|
||||
| [Keys](keys.md) | `/keys` |
|
||||
| [License](license.md) **(FREE SELF)** | `/license` |
|
||||
| [Markdown](markdown.md) | `/markdown` |
|
||||
| [Merge requests](merge_requests.md) | `/merge_requests` (also available for groups and projects) |
|
||||
| [Metrics dashboard annotations](metrics_dashboard_annotations.md) | `/environments/:id/metrics_dashboard/annotations`, `/clusters/:id/metrics_dashboard/annotations` |
|
||||
| [Namespaces](namespaces.md) | `/namespaces` |
|
||||
| [Notification settings](notification_settings.md) | `/notification_settings` (also available for groups and projects) |
|
||||
| [Pages domains](pages_domains.md) | `/pages/domains` (also available for projects) |
|
||||
| [Plan limits](plan_limits.md) | `/application/plan_limits` |
|
||||
| [Personal access tokens](personal_access_tokens.md) | `/personal_access_tokens` |
|
||||
| [Projects](projects.md) | `/users/:id/projects` (also available for projects) |
|
||||
| Resource | Available endpoints |
|
||||
|:----------------------------------------------------------------------------------------|:--------------------|
|
||||
| [Appearance](appearance.md) **(FREE SELF)** | `/application/appearance` |
|
||||
| [Applications](applications.md) | `/applications` |
|
||||
| [Audit Events](audit_events.md) **(PREMIUM SELF)** | `/audit_events` |
|
||||
| [Avatar](avatar.md) | `/avatar` |
|
||||
| [Broadcast messages](broadcast_messages.md) | `/broadcast_messages` |
|
||||
| [Code snippets](snippets.md) | `/snippets` |
|
||||
| [Custom attributes](custom_attributes.md) | `/users/:id/custom_attributes` (also available for groups and projects) |
|
||||
| [Deploy keys](deploy_keys.md) | `/deploy_keys` (also available for projects) |
|
||||
| [Events](events.md) | `/events`, `/users/:id/events` (also available for projects) |
|
||||
| [Feature flags](features.md) | `/features` |
|
||||
| [Geo Nodes](geo_nodes.md) **(PREMIUM SELF)** | `/geo_nodes` |
|
||||
| [Group Activity Analytics](group_activity_analytics.md) | `/analytics/group_activity/{issues_count}` |
|
||||
| [Group repository storage moves](group_repository_storage_moves.md) **(PREMIUM SELF)** | `/group_repository_storage_moves` |
|
||||
| [Import repository from GitHub](import.md) | `/import/github` |
|
||||
| [Instance clusters](instance_clusters.md) **(FREE SELF)** | `/admin/clusters` |
|
||||
| [Instance-level CI/CD variables](instance_level_ci_variables.md) **(FREE SELF)** | `/admin/ci/variables` |
|
||||
| [Issues Statistics](issues_statistics.md) | `/issues_statistics` (also available for groups and projects) |
|
||||
| [Issues](issues.md) | `/issues` (also available for groups and projects) |
|
||||
| [Jobs](jobs.md) | `/job` |
|
||||
| [Keys](keys.md) | `/keys` |
|
||||
| [License](license.md) **(FREE SELF)** | `/license` |
|
||||
| [Markdown](markdown.md) | `/markdown` |
|
||||
| [Merge requests](merge_requests.md) | `/merge_requests` (also available for groups and projects) |
|
||||
| [Metrics dashboard annotations](metrics_dashboard_annotations.md) | `/environments/:id/metrics_dashboard/annotations`, `/clusters/:id/metrics_dashboard/annotations` |
|
||||
| [Namespaces](namespaces.md) | `/namespaces` |
|
||||
| [Notification settings](notification_settings.md) | `/notification_settings` (also available for groups and projects) |
|
||||
| [Pages domains](pages_domains.md) | `/pages/domains` (also available for projects) |
|
||||
| [Personal access tokens](personal_access_tokens.md) | `/personal_access_tokens` |
|
||||
| [Plan limits](plan_limits.md) | `/application/plan_limits` |
|
||||
| [Project repository storage moves](project_repository_storage_moves.md) **(FREE SELF)** | `/project_repository_storage_moves` |
|
||||
| [Runners](runners.md) | `/runners` (also available for projects) |
|
||||
| [Search](search.md) | `/search` (also available for groups and projects) |
|
||||
| [Settings](settings.md) **(FREE SELF)** | `/application/settings` |
|
||||
| [Projects](projects.md) | `/users/:id/projects` (also available for projects) |
|
||||
| [Runners](runners.md) | `/runners` (also available for projects) |
|
||||
| [Search](search.md) | `/search` (also available for groups and projects) |
|
||||
| [Service Data](usage_data.md) | `/usage_data` (For GitLab instance [Administrator](../user/permissions.md) users only) |
|
||||
| [Settings](settings.md) **(FREE SELF)** | `/application/settings` |
|
||||
| [Sidekiq metrics](sidekiq_metrics.md) **(FREE SELF)** | `/sidekiq` |
|
||||
| [Sidekiq queues administration](admin_sidekiq_queues.md) **(FREE SELF)** | `/admin/sidekiq/queues/:queue_name` |
|
||||
| [Snippet repository storage moves](snippet_repository_storage_moves.md) **(FREE SELF)** | `/snippet_repository_storage_moves` |
|
||||
| [Statistics](statistics.md) | `/application/statistics` |
|
||||
| [Sidekiq metrics](sidekiq_metrics.md) **(FREE SELF)** | `/sidekiq` |
|
||||
| [Suggestions](suggestions.md) | `/suggestions` |
|
||||
| [System hooks](system_hooks.md) | `/hooks` |
|
||||
| [To-dos](todos.md) | `/todos` |
|
||||
| [Topics](topics.md) | `/topics` |
|
||||
| [Service Data](usage_data.md) | `/usage_data` (For GitLab instance [Administrator](../user/permissions.md) users only) |
|
||||
| [Users](users.md) | `/users` |
|
||||
| [Validate `.gitlab-ci.yml` file](lint.md) | `/lint` |
|
||||
| [Version](version.md) | `/version` |
|
||||
| [Statistics](statistics.md) | `/application/statistics` |
|
||||
| [Suggestions](suggestions.md) | `/suggestions` |
|
||||
| [System hooks](system_hooks.md) | `/hooks` |
|
||||
| [To-dos](todos.md) | `/todos` |
|
||||
| [Topics](topics.md) | `/topics` |
|
||||
| [Users](users.md) | `/users` |
|
||||
| [Validate `.gitlab-ci.yml` file](lint.md) | `/lint` |
|
||||
| [Version](version.md) | `/version` |
|
||||
|
||||
## Templates API resources
|
||||
|
||||
|
|
|
@ -226,11 +226,11 @@ These kind of tests ensure that individual parts of the application work well
|
|||
together, without the overhead of the actual app environment (such as the browser).
|
||||
These tests should assert at the request/response level: status code, headers,
|
||||
body.
|
||||
They're useful to test permissions, redirections, what view is rendered etc.
|
||||
They're useful, for example, to test permissions, redirections, API endpoints, what view is rendered, and so forth.
|
||||
|
||||
| Code path | Tests path | Testing engine | Notes |
|
||||
| --------- | ---------- | -------------- | ----- |
|
||||
| `app/controllers/` | `spec/requests/`, `spec/controllers` | RSpec | Request specs are preferred over legacy controller specs. |
|
||||
| `app/controllers/` | `spec/requests/`, `spec/controllers` | RSpec | Request specs are preferred over legacy controller specs. Request specs are encouraged for API endpoints. |
|
||||
| `app/mailers/` | `spec/mailers/` | RSpec | |
|
||||
| `lib/api/` | `spec/requests/api/` | RSpec | |
|
||||
| `app/assets/javascripts/` | `spec/frontend/` | Jest | [More details below](#frontend-integration-tests) |
|
||||
|
|
|
@ -561,8 +561,9 @@ You should consider these security implications before configuring IP address re
|
|||
- **Administrators and group owners**: Users with these permission levels can always
|
||||
access the group settings, regardless of IP restriction, but they cannot access projects
|
||||
belonging to the group when accessing from a disallowed IP address.
|
||||
- **GitLab API and runner activities**: Only the [Groups](../../api/groups.md)
|
||||
and [Projects](../../api/projects.md) APIs are protected by IP address restrictions.
|
||||
- **GitLab API and runner activities**: Only the [group](../../api/groups.md) (including all
|
||||
[group resources](../../api/api_resources.md#group-resources)) APIs and [project](../../api/api_resources.md#project-resources)
|
||||
(including all [project resources](../../api/api_resources.md#project-resources)) APIs are protected by IP address restrictions.
|
||||
When you register a runner, it is not bound by the IP restrictions. When the runner
|
||||
requests a new job or an update to a job's state, it is also not bound by
|
||||
the IP restrictions. But when the running CI/CD job sends Git requests from a
|
||||
|
|
|
@ -147,7 +147,7 @@ The Package Registry supports the following formats:
|
|||
| [Go](../go_proxy/index.md) | 13.1+ | [Alpha](https://gitlab.com/groups/gitlab-org/-/epics/3043) |
|
||||
| [Ruby gems](../rubygems_registry/index.md) | 13.10+ | [Alpha](https://gitlab.com/groups/gitlab-org/-/epics/3200) |
|
||||
|
||||
[Status](https://about.gitlab.com/handbook/product/gitlab-the-product/#generally-available-ga):
|
||||
[Status](https://about.gitlab.com/handbook/product/gitlab-the-product/#alpha-beta-ga):
|
||||
|
||||
- Alpha: behind a feature flag and not officially supported.
|
||||
- Beta: several known issues that may prevent expected use.
|
||||
|
|
|
@ -2462,6 +2462,15 @@ msgstr ""
|
|||
msgid "AdminDashboard|Error loading the statistics. Please try again"
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminLabels|Define your default set of project labels"
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminLabels|Labels created here will be automatically added to new projects."
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminLabels|They can be used to categorize issues and merge requests."
|
||||
msgstr ""
|
||||
|
||||
msgid "AdminProjects| You’re about to permanently delete the project %{projectName}, its repository, and all related resources, including issues and merge requests. After you confirm and press %{strong_start}Delete project%{strong_end}, it cannot be undone or recovered."
|
||||
msgstr ""
|
||||
|
||||
|
@ -35282,9 +35291,6 @@ msgstr ""
|
|||
msgid "There are no issues with the selected labels"
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no labels yet"
|
||||
msgstr ""
|
||||
|
||||
msgid "There are no matching files"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -48,84 +48,87 @@ module QA
|
|||
project.remove_via_api!
|
||||
end
|
||||
|
||||
where(:authentication_token_type, :token_name) do
|
||||
:personal_access_token | 'Personal Access Token'
|
||||
:project_deploy_token | 'Deploy Token'
|
||||
:ci_job_token | 'Job Token'
|
||||
end
|
||||
|
||||
with_them do
|
||||
let(:auth_token) do
|
||||
case authentication_token_type
|
||||
when :personal_access_token
|
||||
"\"#{personal_access_token}\""
|
||||
when :project_deploy_token
|
||||
"\"#{project_deploy_token.token}\""
|
||||
when :ci_job_token
|
||||
'$CI_JOB_TOKEN'
|
||||
end
|
||||
context "when tls is disabled" do
|
||||
where(:authentication_token_type, :token_name) do
|
||||
:personal_access_token | 'Personal Access Token'
|
||||
:project_deploy_token | 'Deploy Token'
|
||||
:ci_job_token | 'Job Token'
|
||||
end
|
||||
|
||||
let(:auth_user) do
|
||||
case authentication_token_type
|
||||
when :personal_access_token
|
||||
"$CI_REGISTRY_USER"
|
||||
when :project_deploy_token
|
||||
"\"#{project_deploy_token.username}\""
|
||||
when :ci_job_token
|
||||
'gitlab-ci-token'
|
||||
with_them do
|
||||
let(:auth_token) do
|
||||
case authentication_token_type
|
||||
when :personal_access_token
|
||||
"\"#{personal_access_token}\""
|
||||
when :project_deploy_token
|
||||
"\"#{project_deploy_token.token}\""
|
||||
when :ci_job_token
|
||||
'$CI_JOB_TOKEN'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when tls is disabled" do
|
||||
it "using a #{params[:token_name]}, pushes image and deletes tag", :registry do
|
||||
Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
|
||||
Resource::Repository::Commit.fabricate_via_api! do |commit|
|
||||
commit.project = project
|
||||
commit.commit_message = 'Add .gitlab-ci.yml'
|
||||
commit.add_files([{
|
||||
file_path: '.gitlab-ci.yml',
|
||||
content:
|
||||
<<~YAML
|
||||
build:
|
||||
image: docker:19.03.12
|
||||
stage: build
|
||||
services:
|
||||
- name: docker:19.03.12-dind
|
||||
command: ["--insecure-registry=gitlab.test:5050"]
|
||||
variables:
|
||||
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
|
||||
script:
|
||||
- docker login -u #{auth_user} -p #{auth_token} gitlab.test:5050
|
||||
- docker build -t $IMAGE_TAG .
|
||||
- docker push $IMAGE_TAG
|
||||
tags:
|
||||
- "runner-for-#{project.name}"
|
||||
YAML
|
||||
}])
|
||||
let(:auth_user) do
|
||||
case authentication_token_type
|
||||
when :personal_access_token
|
||||
"$CI_REGISTRY_USER"
|
||||
when :project_deploy_token
|
||||
"\"#{project_deploy_token.username}\""
|
||||
when :ci_job_token
|
||||
'gitlab-ci-token'
|
||||
end
|
||||
end
|
||||
|
||||
where(:docker_client_version) do
|
||||
%w[docker:18.09.9 docker:19.03.12 docker:20.10]
|
||||
end
|
||||
|
||||
with_them do
|
||||
it "pushes image and deletes tag", :registry do
|
||||
Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
|
||||
Resource::Repository::Commit.fabricate_via_api! do |commit|
|
||||
commit.project = project
|
||||
commit.commit_message = 'Add .gitlab-ci.yml'
|
||||
commit.add_files([{
|
||||
file_path: '.gitlab-ci.yml',
|
||||
content:
|
||||
<<~YAML
|
||||
build:
|
||||
image: "#{docker_client_version}"
|
||||
stage: build
|
||||
services:
|
||||
- name: "#{docker_client_version}-dind"
|
||||
command: ["--insecure-registry=gitlab.test:5050"]
|
||||
variables:
|
||||
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
|
||||
script:
|
||||
- docker login -u #{auth_user} -p #{auth_token} gitlab.test:5050
|
||||
- docker build -t $IMAGE_TAG .
|
||||
- docker push $IMAGE_TAG
|
||||
tags:
|
||||
- "runner-for-#{project.name}"
|
||||
YAML
|
||||
}])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Flow::Pipeline.visit_latest_pipeline
|
||||
Flow::Pipeline.visit_latest_pipeline
|
||||
|
||||
Page::Project::Pipeline::Show.perform do |pipeline|
|
||||
pipeline.click_job('build')
|
||||
end
|
||||
Page::Project::Pipeline::Show.perform do |pipeline|
|
||||
pipeline.click_job('build')
|
||||
end
|
||||
|
||||
Page::Project::Job::Show.perform do |job|
|
||||
expect(job).to be_successful(timeout: 800)
|
||||
end
|
||||
Page::Project::Job::Show.perform do |job|
|
||||
expect(job).to be_successful(timeout: 800)
|
||||
end
|
||||
|
||||
Page::Project::Menu.perform(&:go_to_container_registry)
|
||||
Page::Project::Menu.perform(&:go_to_container_registry)
|
||||
|
||||
Page::Project::Registry::Show.perform do |registry|
|
||||
expect(registry).to have_registry_repository(project.path_with_namespace)
|
||||
Page::Project::Registry::Show.perform do |registry|
|
||||
expect(registry).to have_registry_repository(project.path_with_namespace)
|
||||
|
||||
registry.click_on_image(project.path_with_namespace)
|
||||
expect(registry).to have_tag('master')
|
||||
|
||||
registry.click_delete
|
||||
expect(registry).not_to have_tag('master')
|
||||
registry.click_on_image(project.path_with_namespace)
|
||||
expect(registry).to have_tag('master')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -45,7 +45,7 @@ RSpec.describe 'admin issues labels' do
|
|||
|
||||
wait_for_requests
|
||||
|
||||
expect(page).to have_content("There are no labels yet")
|
||||
expect(page).to have_content("Define your default set of project labels")
|
||||
expect(page).not_to have_content('bug')
|
||||
expect(page).not_to have_content('feature_label')
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue