Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
44e10d208a
commit
668e319631
44 changed files with 282 additions and 202 deletions
|
@ -1,5 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import commitPipelinesTable from './pipelines_table.vue';
|
||||
import CommitPipelinesTable from './pipelines_table.vue';
|
||||
|
||||
/**
|
||||
* Used in:
|
||||
|
@ -8,14 +8,6 @@ import commitPipelinesTable from './pipelines_table.vue';
|
|||
* - Merge Request details View > Pipelines Tab > Pipelines Table (projects:merge_requests:show)
|
||||
* - New Merge Request View > Pipelines Tab > Pipelines Table (projects:merge_requests:creations:new)
|
||||
*/
|
||||
|
||||
const CommitPipelinesTable = Vue.extend(commitPipelinesTable);
|
||||
|
||||
// export for use in merge_request_tabs.js (TODO: remove this hack when we understand how to load
|
||||
// vue.js in merge_request_tabs.js)
|
||||
window.gl = window.gl || {};
|
||||
window.gl.CommitPipelinesTable = CommitPipelinesTable;
|
||||
|
||||
export default () => {
|
||||
const pipelineTableViewEl = document.querySelector('#commit-pipeline-table-view');
|
||||
|
||||
|
@ -34,13 +26,17 @@ export default () => {
|
|||
});
|
||||
|
||||
if (pipelineTableViewEl.dataset.disableInitialization === undefined) {
|
||||
const table = new CommitPipelinesTable({
|
||||
propsData: {
|
||||
endpoint: pipelineTableViewEl.dataset.endpoint,
|
||||
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
|
||||
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
|
||||
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
|
||||
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
|
||||
const table = new Vue({
|
||||
render(createElement) {
|
||||
return createElement(CommitPipelinesTable, {
|
||||
props: {
|
||||
endpoint: pipelineTableViewEl.dataset.endpoint,
|
||||
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
|
||||
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
|
||||
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
|
||||
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
|
||||
},
|
||||
});
|
||||
},
|
||||
}).$mount();
|
||||
pipelineTableViewEl.appendChild(table.$el);
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* eslint-disable no-new, class-methods-use-this */
|
||||
|
||||
import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';
|
||||
import $ from 'jquery';
|
||||
import Cookies from 'js-cookie';
|
||||
import Vue from 'vue';
|
||||
import CommitPipelinesTable from '~/commit/pipelines/pipelines_table.vue';
|
||||
import createEventHub from '~/helpers/event_hub_factory';
|
||||
import initAddContextCommitsTriggers from './add_context_commits_modal';
|
||||
import BlobForkSuggestion from './blob/blob_fork_suggestion';
|
||||
|
@ -350,26 +351,30 @@ export default class MergeRequestTabs {
|
|||
|
||||
mountPipelinesView() {
|
||||
const pipelineTableViewEl = document.querySelector('#commit-pipeline-table-view');
|
||||
const { CommitPipelinesTable, mrWidgetData } = gl;
|
||||
const { mrWidgetData } = gl;
|
||||
|
||||
this.commitPipelinesTable = new CommitPipelinesTable({
|
||||
propsData: {
|
||||
endpoint: pipelineTableViewEl.dataset.endpoint,
|
||||
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
|
||||
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
|
||||
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
|
||||
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
|
||||
canCreatePipelineInTargetProject: Boolean(
|
||||
mrWidgetData?.can_create_pipeline_in_target_project,
|
||||
),
|
||||
sourceProjectFullPath: mrWidgetData?.source_project_full_path || '',
|
||||
targetProjectFullPath: mrWidgetData?.target_project_full_path || '',
|
||||
projectId: pipelineTableViewEl.dataset.projectId,
|
||||
mergeRequestId: mrWidgetData ? mrWidgetData.iid : null,
|
||||
},
|
||||
this.commitPipelinesTable = new Vue({
|
||||
provide: {
|
||||
targetProjectFullPath: mrWidgetData?.target_project_full_path || '',
|
||||
},
|
||||
render(createElement) {
|
||||
return createElement(CommitPipelinesTable, {
|
||||
props: {
|
||||
endpoint: pipelineTableViewEl.dataset.endpoint,
|
||||
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
|
||||
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
|
||||
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
|
||||
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
|
||||
canCreatePipelineInTargetProject: Boolean(
|
||||
mrWidgetData?.can_create_pipeline_in_target_project,
|
||||
),
|
||||
sourceProjectFullPath: mrWidgetData?.source_project_full_path || '',
|
||||
targetProjectFullPath: mrWidgetData?.target_project_full_path || '',
|
||||
projectId: pipelineTableViewEl.dataset.projectId,
|
||||
mergeRequestId: mrWidgetData ? mrWidgetData.iid : null,
|
||||
},
|
||||
});
|
||||
},
|
||||
}).$mount();
|
||||
|
||||
// $mount(el) replaces the el with the new rendered component. We need it in order to mount
|
||||
|
|
|
@ -65,8 +65,8 @@ export default {
|
|||
return axios
|
||||
.get(endpoint)
|
||||
.then(({ data }) => {
|
||||
this.branches = data.Branches;
|
||||
this.tags = data.Tags;
|
||||
this.branches = data.Branches || [];
|
||||
this.tags = data.Tags || [];
|
||||
})
|
||||
.catch(() => {
|
||||
createFlash({
|
||||
|
|
|
@ -907,14 +907,6 @@ $system-note-svg-size: 16px;
|
|||
.discussion-filter-container {
|
||||
.dropdown-menu {
|
||||
margin-bottom: $gl-padding-4;
|
||||
|
||||
@include media-breakpoint-down(md) {
|
||||
margin-left: $btn-side-margin + $contextual-sidebar-collapsed-width;
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(xs) {
|
||||
margin-left: $btn-side-margin;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ module Clusters
|
|||
class Agent < ApplicationRecord
|
||||
self.table_name = 'cluster_agents'
|
||||
|
||||
belongs_to :created_by_user, class_name: 'User', optional: true
|
||||
belongs_to :project, class_name: '::Project' # Otherwise, it will load ::Clusters::Project
|
||||
|
||||
has_many :agent_tokens, class_name: 'Clusters::AgentToken'
|
||||
|
|
|
@ -3,29 +3,30 @@
|
|||
.form-group
|
||||
= form.label :url, _('URL'), class: 'label-bold'
|
||||
= form.text_field :url, class: 'form-control gl-form-input'
|
||||
%p.form-text.text-muted= _('URL must be percent-encoded if neccessary.')
|
||||
.form-group
|
||||
= form.label :token, _('Secret Token'), class: 'label-bold'
|
||||
= form.label :token, _('Secret token'), class: 'label-bold'
|
||||
= form.text_field :token, class: 'form-control gl-form-input'
|
||||
%p.form-text.text-muted= _('Use this token to validate received payloads')
|
||||
%p.form-text.text-muted= _('Use this token to validate received payloads.')
|
||||
.form-group
|
||||
= form.label :url, _('Trigger'), class: 'label-bold'
|
||||
.form-text.text-secondary.gl-mb-5= _('System hook will be triggered on set of events like creating project or adding ssh key. But you can also enable extra triggers like Push events.')
|
||||
.form-text.text-secondary.gl-mb-5= _('System hooks are triggered on sets of events like creating a project or adding an SSH key. You can also enable extra triggers, such as push events.')
|
||||
%fieldset.form-group.form-check
|
||||
= form.check_box :repository_update_events, class: 'form-check-input'
|
||||
= form.label :repository_update_events, _('Repository update events'), class: 'label-bold form-check-label'
|
||||
.text-secondary= _('This URL will be triggered when repository is updated')
|
||||
.text-secondary= _('URL is triggered when repository is updated')
|
||||
%fieldset.form-group.form-check
|
||||
= form.check_box :push_events, class: 'form-check-input'
|
||||
= form.label :push_events, _('Push events'), class: 'label-bold form-check-label'
|
||||
.text-secondary= _('This URL will be triggered for each branch updated to the repository')
|
||||
.text-secondary= _('URL is triggered for each branch updated to the repository')
|
||||
%fieldset.form-group.form-check
|
||||
= form.check_box :tag_push_events, class: 'form-check-input'
|
||||
= form.label :tag_push_events, _('Tag push events'), class: 'label-bold form-check-label'
|
||||
.text-secondary= _('This URL will be triggered when a new tag is pushed to the repository')
|
||||
.text-secondary= _('URL is triggered when a new tag is pushed to the repository')
|
||||
%fieldset.form-group.form-check
|
||||
= form.check_box :merge_requests_events, class: 'form-check-input'
|
||||
= form.label :merge_requests_events, _('Merge request events'), class: 'label-bold form-check-label'
|
||||
.text-secondary= _('This URL will be triggered when a merge request is created/updated/merged')
|
||||
.text-secondary= _('URL is triggered when a merge request is created, updated, or merged')
|
||||
.form-group
|
||||
= form.label :enable_ssl_verification, _('SSL verification'), class: 'label-bold checkbox'
|
||||
.form-check
|
||||
|
|
|
@ -3,11 +3,13 @@
|
|||
.form-group
|
||||
= form.label :url, s_('Webhooks|URL'), class: 'label-bold'
|
||||
= form.text_field :url, class: 'form-control gl-form-input', placeholder: 'http://example.com/trigger-ci.json'
|
||||
%p.form-text.text-muted
|
||||
= s_('Webhooks|URL must be percent-encoded if neccessary.')
|
||||
.form-group
|
||||
= form.label :token, s_('Webhooks|Secret Token'), class: 'label-bold'
|
||||
= form.label :token, s_('Webhooks|Secret token'), class: 'label-bold'
|
||||
= form.text_field :token, class: 'form-control gl-form-input', placeholder: ''
|
||||
%p.form-text.text-muted
|
||||
= s_('Webhooks|Use this token to validate received payloads. It will be sent with the request in the X-Gitlab-Token HTTP header.')
|
||||
= s_('Webhooks|Use this token to validate received payloads. It is sent with the request in the X-Gitlab-Token HTTP header.')
|
||||
.form-group
|
||||
= form.label :url, s_('Webhooks|Trigger'), class: 'label-bold'
|
||||
%ul.list-unstyled.gl-ml-6
|
||||
|
@ -17,37 +19,37 @@
|
|||
%strong= s_('Webhooks|Push events')
|
||||
= form.text_field :push_events_branch_filter, class: 'form-control gl-form-input', placeholder: 'Branch name or wildcard pattern to trigger on (leave blank for all)'
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered by a push to the repository')
|
||||
= s_('Webhooks|URL is triggered by a push to the repository')
|
||||
%li
|
||||
= form.check_box :tag_push_events, class: 'form-check-input'
|
||||
= form.label :tag_push_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Tag push events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when a new tag is pushed to the repository')
|
||||
= s_('Webhooks|URL is triggered when a new tag is pushed to the repository')
|
||||
%li
|
||||
= form.check_box :note_events, class: 'form-check-input'
|
||||
= form.label :note_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Comments')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when someone adds a comment')
|
||||
= s_('Webhooks|URL is triggered when someone adds a comment')
|
||||
%li
|
||||
= form.check_box :confidential_note_events, class: 'form-check-input'
|
||||
= form.label :confidential_note_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Confidential Comments')
|
||||
%strong= s_('Webhooks|Confidential comments')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when someone adds a comment on a confidential issue')
|
||||
= s_('Webhooks|URL is triggered when someone adds a comment on a confidential issue')
|
||||
%li
|
||||
= form.check_box :issues_events, class: 'form-check-input'
|
||||
= form.label :issues_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Issues events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when an issue is created/updated/merged')
|
||||
= s_('Webhooks|URL is triggered when an issue is created, updated, or merged')
|
||||
%li
|
||||
= form.check_box :confidential_issues_events, class: 'form-check-input'
|
||||
= form.label :confidential_issues_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Confidential Issues events')
|
||||
%strong= s_('Webhooks|Confidential issues events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when a confidential issue is created/updated/merged')
|
||||
= s_('Webhooks|URL is triggered when a confidential issue is created, updated, or merged')
|
||||
- if @group
|
||||
= render_if_exists 'groups/hooks/member_events', form: form
|
||||
= render_if_exists 'groups/hooks/subgroup_events', form: form
|
||||
|
@ -56,43 +58,43 @@
|
|||
= form.label :merge_requests_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Merge request events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when a merge request is created/updated/merged')
|
||||
= s_('Webhooks|URL is triggered when a merge request is created, updated, or merged')
|
||||
%li
|
||||
= form.check_box :job_events, class: 'form-check-input'
|
||||
= form.label :job_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Job events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when the job status changes')
|
||||
= s_('Webhooks|URL is triggered when the job status changes')
|
||||
%li
|
||||
= form.check_box :pipeline_events, class: 'form-check-input'
|
||||
= form.label :pipeline_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Pipeline events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when the pipeline status changes')
|
||||
= s_('Webhooks|URL is triggered when the pipeline status changes')
|
||||
%li
|
||||
= form.check_box :wiki_page_events, class: 'form-check-input'
|
||||
= form.label :wiki_page_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Wiki Page events')
|
||||
%strong= s_('Webhooks|Wiki page events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL will be triggered when a wiki page is created/updated')
|
||||
= s_('Webhooks|URL is triggered when a wiki page is created or updated')
|
||||
%li
|
||||
= form.check_box :deployment_events, class: 'form-check-input'
|
||||
= form.label :deployment_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Deployment events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL is triggered when a deployment starts, finishes, fails, or is canceled')
|
||||
= s_('Webhooks|URL is triggered when a deployment starts, finishes, fails, or is canceled')
|
||||
%li
|
||||
= form.check_box :feature_flag_events, class: 'form-check-input'
|
||||
= form.label :feature_flag_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Feature Flag events')
|
||||
%strong= s_('Webhooks|Feature flag events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL is triggered when a feature flag is turned on or off')
|
||||
= s_('Webhooks|URL is triggered when a feature flag is turned on or off')
|
||||
%li
|
||||
= form.check_box :releases_events, class: 'form-check-input'
|
||||
= form.label :releases_events, class: 'list-label form-check-label gl-ml-1' do
|
||||
%strong= s_('Webhooks|Releases events')
|
||||
%p.text-muted.gl-ml-1
|
||||
= s_('Webhooks|This URL is triggered when a release is created/updated')
|
||||
= s_('Webhooks|URL is triggered when a release is created or updated')
|
||||
.form-group
|
||||
= form.label :enable_ssl_verification, s_('Webhooks|SSL verification'), class: 'label-bold checkbox'
|
||||
.form-check
|
||||
|
|
5
changelogs/unreleased/293720-agent-created-by.yml
Normal file
5
changelogs/unreleased/293720-agent-created-by.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add created_by_user to cluster agents
|
||||
merge_request: 54011
|
||||
author:
|
||||
type: added
|
5
changelogs/unreleased/320836-display-compare-button.yml
Normal file
5
changelogs/unreleased/320836-display-compare-button.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Safe guard repo compare when data is undefined
|
||||
merge_request: 54371
|
||||
author:
|
||||
type: fixed
|
5
changelogs/unreleased/ab-ci-builds-metadata-index.yml
Normal file
5
changelogs/unreleased/ab-ci-builds-metadata-index.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Extend index on ci_builds_metadata
|
||||
merge_request: 52123
|
||||
author:
|
||||
type: performance
|
5
changelogs/unreleased/eread-add-URL-help-text.yml
Normal file
5
changelogs/unreleased/eread-add-URL-help-text.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add URL help text and edit other UI text
|
||||
merge_request: 53578
|
||||
author:
|
||||
type: other
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix unneeded left margin in discussion filter container on mobile
|
||||
merge_request: 54379
|
||||
author:
|
||||
type: fixed
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
name: track_issue_activity_actions
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40904
|
||||
rollout_issue_url:
|
||||
milestone: '13.4'
|
||||
type: development
|
||||
group: group::project management
|
||||
default_enabled: true
|
|
@ -0,0 +1,40 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ExtendIndexOnCiBuildsMetadata < ActiveRecord::Migration[6.0]
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
OLD_INDEX = :index_ci_builds_metadata_on_build_id_and_interruptible
|
||||
NEW_INDEX = :index_ci_builds_metadata_on_build_id_and_id_and_interruptible
|
||||
|
||||
TABLE = :ci_builds_metadata
|
||||
|
||||
def up
|
||||
create_covering_index(TABLE, NEW_INDEX)
|
||||
|
||||
remove_concurrent_index_by_name TABLE, OLD_INDEX
|
||||
end
|
||||
|
||||
def down
|
||||
add_concurrent_index TABLE, :build_id, where: 'interruptible = true', name: OLD_INDEX
|
||||
|
||||
remove_concurrent_index_by_name TABLE, NEW_INDEX
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_covering_index(table, name)
|
||||
return if index_exists_by_name?(table, name)
|
||||
|
||||
disable_statement_timeout do
|
||||
execute <<~SQL
|
||||
CREATE INDEX CONCURRENTLY #{name}
|
||||
ON #{table} (build_id) INCLUDE (id)
|
||||
WHERE interruptible = true
|
||||
SQL
|
||||
end
|
||||
end
|
||||
end
|
27
db/migrate/20210216135504_add_created_by_to_cluster_agent.rb
Normal file
27
db/migrate/20210216135504_add_created_by_to_cluster_agent.rb
Normal file
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddCreatedByToClusterAgent < ActiveRecord::Migration[6.0]
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
INDEX_NAME = 'index_cluster_agents_on_created_by_user_id'
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
unless column_exists?(:cluster_agents, :created_by_user_id)
|
||||
with_lock_retries do
|
||||
add_column :cluster_agents, :created_by_user_id, :bigint
|
||||
end
|
||||
end
|
||||
|
||||
add_concurrent_index :cluster_agents, :created_by_user_id, name: INDEX_NAME
|
||||
add_concurrent_foreign_key :cluster_agents, :users, column: :created_by_user_id, on_delete: :nullify
|
||||
end
|
||||
|
||||
def down
|
||||
with_lock_retries do
|
||||
remove_column :cluster_agents, :created_by_user_id
|
||||
end
|
||||
end
|
||||
end
|
1
db/schema_migrations/20210120180956
Normal file
1
db/schema_migrations/20210120180956
Normal file
|
@ -0,0 +1 @@
|
|||
897815c347f04093da5eba420e95b6310454bd493412914e60a296bd710ebde1
|
1
db/schema_migrations/20210216135504
Normal file
1
db/schema_migrations/20210216135504
Normal file
|
@ -0,0 +1 @@
|
|||
8c676b4142db828b1d2d5dc6bd891eb929d12ab13e9073693ab7d830bcea599a
|
|
@ -11043,6 +11043,7 @@ CREATE TABLE cluster_agents (
|
|||
updated_at timestamp with time zone NOT NULL,
|
||||
project_id bigint NOT NULL,
|
||||
name text NOT NULL,
|
||||
created_by_user_id bigint,
|
||||
CONSTRAINT check_3498369510 CHECK ((char_length(name) <= 255))
|
||||
);
|
||||
|
||||
|
@ -21622,7 +21623,7 @@ CREATE UNIQUE INDEX index_ci_builds_metadata_on_build_id ON ci_builds_metadata U
|
|||
|
||||
CREATE INDEX index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts ON ci_builds_metadata USING btree (build_id) WHERE (has_exposed_artifacts IS TRUE);
|
||||
|
||||
CREATE INDEX index_ci_builds_metadata_on_build_id_and_interruptible ON ci_builds_metadata USING btree (build_id) WHERE (interruptible = true);
|
||||
CREATE INDEX index_ci_builds_metadata_on_build_id_and_id_and_interruptible ON ci_builds_metadata USING btree (build_id) INCLUDE (id) WHERE (interruptible = true);
|
||||
|
||||
CREATE INDEX index_ci_builds_metadata_on_project_id ON ci_builds_metadata USING btree (project_id);
|
||||
|
||||
|
@ -21848,6 +21849,8 @@ CREATE INDEX index_cluster_agent_tokens_on_created_by_user_id ON cluster_agent_t
|
|||
|
||||
CREATE UNIQUE INDEX index_cluster_agent_tokens_on_token_encrypted ON cluster_agent_tokens USING btree (token_encrypted);
|
||||
|
||||
CREATE INDEX index_cluster_agents_on_created_by_user_id ON cluster_agents USING btree (created_by_user_id);
|
||||
|
||||
CREATE UNIQUE INDEX index_cluster_agents_on_project_id_and_name ON cluster_agents USING btree (project_id, name);
|
||||
|
||||
CREATE UNIQUE INDEX index_cluster_groups_on_cluster_id_and_group_id ON cluster_groups USING btree (cluster_id, group_id);
|
||||
|
@ -24777,6 +24780,9 @@ ALTER TABLE ONLY design_management_designs_versions
|
|||
ALTER TABLE ONLY analytics_devops_adoption_segments
|
||||
ADD CONSTRAINT fk_f5aa768998 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY cluster_agents
|
||||
ADD CONSTRAINT fk_f7d43dee13 FOREIGN KEY (created_by_user_id) REFERENCES users(id) ON DELETE SET NULL;
|
||||
|
||||
ALTER TABLE ONLY protected_tag_create_access_levels
|
||||
ADD CONSTRAINT fk_f7dfda8c51 FOREIGN KEY (protected_tag_id) REFERENCES protected_tags(id) ON DELETE CASCADE;
|
||||
|
||||
|
|
|
@ -18,4 +18,6 @@ swap:
|
|||
once the: '"after the"'
|
||||
once you: '"after you"'
|
||||
since: '"because" or "after"'
|
||||
sub-group: '"subgroup"'
|
||||
sub-groups: '"subgroups"'
|
||||
within: '"in"'
|
||||
|
|
|
@ -561,6 +561,8 @@ subfolder
|
|||
subfolders
|
||||
subgraph
|
||||
subgraphs
|
||||
subgroup
|
||||
subgroups
|
||||
subkey
|
||||
subkeys
|
||||
sublicense
|
||||
|
|
|
@ -120,5 +120,7 @@ production environment, you can use the following Prometheus query:
|
|||
sum(rate(gitaly_git_protocol_requests_total[1m])) by (grpc_method,git_protocol,grpc_service)
|
||||
```
|
||||
|
||||
<!-- This link sporadically returns a 503 during automated link checking but is correct -->
|
||||
|
||||
You can view what Git protocol versions are being used on GitLab.com at
|
||||
<https://dashboards.gitlab.com/d/pqlQq0xik/git-protocol-versions>.
|
||||
|
|
|
@ -563,7 +563,7 @@ service = ::Groups::TransferService.new(group, user)
|
|||
service.execute(parent_group)
|
||||
```
|
||||
|
||||
### Count unique users in a group and sub-groups
|
||||
### Count unique users in a group and subgroups
|
||||
|
||||
```ruby
|
||||
group = Group.find_by_path_or_name("groupname")
|
||||
|
|
|
@ -443,7 +443,7 @@ group = Group.find_by_full_path('group/subgroup')
|
|||
# Get group's immediate child projects
|
||||
group.projects
|
||||
|
||||
# Get group's child projects, including those in sub-groups
|
||||
# Get group's child projects, including those in subgroups
|
||||
group.all_projects
|
||||
```
|
||||
|
||||
|
|
|
@ -3394,6 +3394,11 @@ type ClusterAgent {
|
|||
"""
|
||||
createdAt: Time
|
||||
|
||||
"""
|
||||
User object, containing information about the person who created the agent.
|
||||
"""
|
||||
createdByUser: User
|
||||
|
||||
"""
|
||||
ID of the cluster agent.
|
||||
"""
|
||||
|
|
|
@ -9175,6 +9175,20 @@
|
|||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "createdByUser",
|
||||
"description": "User object, containing information about the person who created the agent.",
|
||||
"args": [
|
||||
|
||||
],
|
||||
"type": {
|
||||
"kind": "OBJECT",
|
||||
"name": "User",
|
||||
"ofType": null
|
||||
},
|
||||
"isDeprecated": false,
|
||||
"deprecationReason": null
|
||||
},
|
||||
{
|
||||
"name": "id",
|
||||
"description": "ID of the cluster agent.",
|
||||
|
|
|
@ -536,6 +536,7 @@ Autogenerated return type of CiCdSettingsUpdate.
|
|||
| Field | Type | Description |
|
||||
| ----- | ---- | ----------- |
|
||||
| `createdAt` | Time | Timestamp the cluster agent was created. |
|
||||
| `createdByUser` | User | User object, containing information about the person who created the agent. |
|
||||
| `id` | ID! | ID of the cluster agent. |
|
||||
| `name` | String | Name of the cluster agent. |
|
||||
| `project` | Project | The project this cluster agent is associated with. |
|
||||
|
|
|
@ -19,7 +19,7 @@ Group exports include the following:
|
|||
- Group labels
|
||||
- Group badges
|
||||
- Group members
|
||||
- Sub-groups. Each sub-group includes all data above
|
||||
- Subgroups. Each subgroup includes all data above
|
||||
- Group wikis **(PREMIUM SELF)**
|
||||
|
||||
## Schedule new export
|
||||
|
|
|
@ -526,6 +526,7 @@ You can use these fake tokens as examples:
|
|||
| scalability | Do not use when talking about increasing GitLab performance for additional users. The words scale or scaling are sometimes acceptable, but references to increasing GitLab performance for additional users should direct readers to the GitLab [reference architectures](../../../administration/reference_architectures/index.md) page. |
|
||||
| simply | Do not use. If the user doesn't find the process to be these things, we lose their trust. |
|
||||
| slashes | Instead of **and/or**, use **or** or another sensible construction. This rule also applies to other slashes, like **follow/unfollow**. Some exceptions (like **CI/CD**) are allowed. |
|
||||
| subgroup | Use instead of `sub-group`. |
|
||||
| that | Do not use. Example: `the file that you save` can be `the file you save`. |
|
||||
| useful | Do not use. If the user doesn't find the process to be these things, we lose their trust. |
|
||||
| utilize | Do not use. Use **use** instead. It's more succinct and easier for non-native English speakers to understand. |
|
||||
|
|
|
@ -64,9 +64,9 @@ By default, this seeds an average of 10 issues per week for the last 52 weeks
|
|||
per project. All issues are also randomly labeled with team, type, severity,
|
||||
and priority.
|
||||
|
||||
#### Seeding groups with sub-groups
|
||||
#### Seeding groups with subgroups
|
||||
|
||||
You can seed groups with sub-groups that contain milestones/projects/issues
|
||||
You can seed groups with subgroups that contain milestones/projects/issues
|
||||
with the `gitlab:seed:group_seed` task:
|
||||
|
||||
```shell
|
||||
|
|
|
@ -239,7 +239,7 @@ If you select `Limit namespaces and projects that can be indexed`, more options
|
|||
![limit namespaces and projects options](img/limit_namespaces_projects_options.png)
|
||||
|
||||
You can select namespaces and projects to index exclusively. Note that if the namespace is a group it will include
|
||||
any sub-groups and projects belonging to those sub-groups to be indexed as well.
|
||||
any subgroups and projects belonging to those subgroups to be indexed as well.
|
||||
|
||||
Advanced Search only provides cross-group code/commit search (global) if all name-spaces are indexed. In this particular scenario where only a subset of namespaces are indexed, a global search will not provide a code or commit scope. This will be possible only in the scope of an indexed namespace. Currently there is no way to code/commit search in multiple indexed namespaces (when only a subset of namespaces has been indexed). For example if two groups are indexed, there is no way to run a single code search on both. You can only run a code search on the first group and then on the second.
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ An administrator can "impersonate" any other user, including other administrator
|
|||
This allows the administrator to "see what the user sees," and take actions on behalf of the user.
|
||||
You can impersonate a user in the following ways:
|
||||
|
||||
- Through the UI, by selecting **Admin Area > Overview > Users > [Select a user] > Impersonate**.
|
||||
- Through the UI, by selecting **Admin Area > Overview > Users > Select a user > Impersonate**.
|
||||
- With the API, using [impersonation tokens](../../api/README.md#impersonation-tokens).
|
||||
|
||||
All impersonation activities are [captured with audit events](../../administration/audit_events.md#impersonation-data).
|
||||
|
|
|
@ -38,7 +38,7 @@ in the project namespace.
|
|||
If the project's cluster is available and not disabled, GitLab uses the
|
||||
project's cluster before using any cluster belonging to the group containing
|
||||
the project.
|
||||
In the case of sub-groups, GitLab uses the cluster of the closest ancestor group
|
||||
In the case of subgroups, GitLab uses the cluster of the closest ancestor group
|
||||
to the project, provided the cluster is not disabled.
|
||||
|
||||
## Multiple Kubernetes clusters
|
||||
|
|
|
@ -16,7 +16,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
WARNING:
|
||||
This feature is [under construction](https://gitlab.com/groups/gitlab-org/-/epics/2771) and currently migrates only some of the Group data. Please see below for the full list of what is included in the migration at this time.
|
||||
|
||||
Using GitLab Group Migration, you can migrate existing top-level groups from GitLab.com or a self-managed instance. Groups can be migrated to a target instance, as a top-level group, or as a sub-group of any existing top-level group.
|
||||
Using GitLab Group Migration, you can migrate existing top-level groups from GitLab.com or a self-managed instance. Groups can be migrated to a target instance, as a top-level group, or as a subgroup of any existing top-level group.
|
||||
|
||||
The following resources are migrated to the target instance:
|
||||
|
||||
|
|
|
@ -787,7 +787,7 @@ To enable delayed deletion of projects:
|
|||
1. Click **Save changes**.
|
||||
|
||||
NOTE:
|
||||
The group setting for delayed deletion is not inherited by sub-groups and has to be individually defined for each group.
|
||||
The group setting for delayed deletion is not inherited by subgroups and has to be individually defined for each group.
|
||||
|
||||
#### Prevent project forking outside group **(PREMIUM)**
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ If you follow our guidance to automate user provisioning using [SCIM](scim_setup
|
|||
User synchronization of SAML SSO groups is supported through [SCIM](scim_setup.md). SCIM supports adding and removing users from the GitLab group.
|
||||
For example, if you remove a user from the SCIM app, SCIM removes that same user from the GitLab group.
|
||||
|
||||
SAML SSO is not supported at the subgroup level.
|
||||
SAML SSO is only configurable at the top-level group.
|
||||
|
||||
## Configuring your Identity Provider
|
||||
|
||||
|
|
|
@ -263,7 +263,7 @@ Prerequisite:
|
|||
|
||||
When publishing packages:
|
||||
|
||||
- The Package Registry on GitLab.com can store up to 500 MB of content.
|
||||
- The Package Registry on GitLab.com can store up to 5 GB of content.
|
||||
This limit is [configurable for self-managed GitLab instances](../../../administration/instance_limits.md#package-registry-limits).
|
||||
- If you publish the same package with the same version multiple times, each
|
||||
consecutive upload is saved as a separate file. When installing a package,
|
||||
|
|
|
@ -99,9 +99,9 @@ confidential information prematurely. To make a confidential commit public,
|
|||
open a merge request from the private fork to the public upstream project.
|
||||
|
||||
Permissions are inherited from parent groups. Developers have the same permissions
|
||||
for private forks created in the same group or in a sub-group of the original
|
||||
for private forks created in the same group or in a subgroup of the original
|
||||
Permissions are inherited from parent groups. When private forks are created
|
||||
in the same group or sub-group as the original upstream repository, users
|
||||
in the same group or subgroup as the original upstream repository, users
|
||||
receive the same permissions in both projects. This inheritance ensures
|
||||
Developer users have the needed permissions to both view confidential issues and
|
||||
resolve them.
|
||||
|
|
|
@ -52,7 +52,7 @@ WARNING:
|
|||
This feature might not be available to you. Check the **version history** note above for details.
|
||||
|
||||
GitLab 13.9 introduces custom compliance frameworks at the group-level. A group owner can create a compliance framework label
|
||||
and assign it to any number of projects within that group or sub-groups. When this feature is enabled, projects can only
|
||||
and assign it to any number of projects within that group or subgroups. When this feature is enabled, projects can only
|
||||
be assigned compliance framework labels that already exist within that group.
|
||||
|
||||
If existing [Compliance frameworks](#compliance-framework) are not sufficient, project and group owners
|
||||
|
|
|
@ -145,7 +145,6 @@ module Gitlab
|
|||
private
|
||||
|
||||
def track_unique_action(action, author, time)
|
||||
return unless Feature.enabled?(:track_issue_activity_actions, default_enabled: true)
|
||||
return unless author
|
||||
|
||||
Gitlab::UsageDataCounters::HLLRedisCounter.track_event(action, values: author.id, time: time)
|
||||
|
|
|
@ -288,167 +288,134 @@
|
|||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_description_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_assignee_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_made_confidential
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_made_visible
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_created
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_closed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_reopened
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_label_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_milestone_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_iteration_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_weight_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_cross_referenced
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_moved
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_related
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_unrelated
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_marked_as_duplicate
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_locked
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_unlocked
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_added_to_epic
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_removed_from_epic
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_changed_epic
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_designs_added
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_designs_modified
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_designs_removed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_due_date_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_time_estimate_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_time_spent_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_comment_added
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_comment_edited
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_comment_removed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_health_status_changed
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
- name: g_project_management_issue_cloned
|
||||
category: issues_edit
|
||||
redis_slot: project_management
|
||||
aggregation: daily
|
||||
feature_flag: track_issue_activity_actions
|
||||
# Secrets Management
|
||||
- name: i_ci_secrets_management_vault_build_created
|
||||
category: ci_secrets_management
|
||||
|
|
|
@ -26030,7 +26030,7 @@ msgstr ""
|
|||
msgid "Secret Detection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Secret Token"
|
||||
msgid "Secret token"
|
||||
msgstr ""
|
||||
|
||||
msgid "Security"
|
||||
|
@ -28607,7 +28607,7 @@ msgstr ""
|
|||
msgid "System hook was successfully updated."
|
||||
msgstr ""
|
||||
|
||||
msgid "System hook will be triggered on set of events like creating project or adding ssh key. But you can also enable extra triggers like Push events."
|
||||
msgid "System hooks are triggered on sets of events like creating a project or adding an SSH key. You can also enable extra triggers, such as push events."
|
||||
msgstr ""
|
||||
|
||||
msgid "System metrics (Custom)"
|
||||
|
@ -29880,18 +29880,6 @@ msgstr ""
|
|||
msgid "This URL is already used for another link; duplicate URLs are not allowed"
|
||||
msgstr ""
|
||||
|
||||
msgid "This URL will be triggered for each branch updated to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "This URL will be triggered when a merge request is created/updated/merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "This URL will be triggered when a new tag is pushed to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "This URL will be triggered when repository is updated"
|
||||
msgstr ""
|
||||
|
||||
msgid "This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention."
|
||||
msgstr ""
|
||||
|
||||
|
@ -31317,6 +31305,21 @@ msgstr ""
|
|||
msgid "URL is required"
|
||||
msgstr ""
|
||||
|
||||
msgid "URL is triggered for each branch updated to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "URL is triggered when a merge request is created, updated, or merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "URL is triggered when a new tag is pushed to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "URL is triggered when repository is updated"
|
||||
msgstr ""
|
||||
|
||||
msgid "URL must be percent-encoded if neccessary."
|
||||
msgstr ""
|
||||
|
||||
msgid "URL must start with %{codeStart}http://%{codeEnd}, %{codeStart}https://%{codeEnd}, or %{codeStart}ftp://%{codeEnd}"
|
||||
msgstr ""
|
||||
|
||||
|
@ -31938,7 +31941,7 @@ msgstr ""
|
|||
msgid "Use template"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use this token to validate received payloads"
|
||||
msgid "Use this token to validate received payloads."
|
||||
msgstr ""
|
||||
|
||||
msgid "Use webhook"
|
||||
|
@ -32941,10 +32944,10 @@ msgstr ""
|
|||
msgid "Webhooks|Comments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Confidential Comments"
|
||||
msgid "Webhooks|Confidential comments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Confidential Issues events"
|
||||
msgid "Webhooks|Confidential issues events"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Deployment events"
|
||||
|
@ -32953,7 +32956,7 @@ msgstr ""
|
|||
msgid "Webhooks|Enable SSL verification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Feature Flag events"
|
||||
msgid "Webhooks|Feature flag events"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Issues events"
|
||||
|
@ -32980,7 +32983,7 @@ msgstr ""
|
|||
msgid "Webhooks|SSL verification"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Secret Token"
|
||||
msgid "Webhooks|Secret token"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Subgroup events"
|
||||
|
@ -32989,61 +32992,64 @@ msgstr ""
|
|||
msgid "Webhooks|Tag push events"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL is triggered when a deployment starts, finishes, fails, or is canceled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL is triggered when a feature flag is turned on or off"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL is triggered when a release is created/updated"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered by a push to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when a confidential issue is created/updated/merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when a group member is created/updated/removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when a merge request is created/updated/merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when a new tag is pushed to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when a subgroup is created/removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when a wiki page is created/updated"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when an issue is created/updated/merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when someone adds a comment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when someone adds a comment on a confidential issue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when the job status changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|This URL will be triggered when the pipeline status changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Trigger"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Use this token to validate received payloads. It will be sent with the request in the X-Gitlab-Token HTTP header."
|
||||
msgid "Webhooks|URL is triggered by a push to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Wiki Page events"
|
||||
msgid "Webhooks|URL is triggered when a confidential issue is created, updated, or merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a deployment starts, finishes, fails, or is canceled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a feature flag is turned on or off"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a group member is created, updated, or removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a merge request is created, updated, or merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a new tag is pushed to the repository"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a release is created or updated"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a subgroup is created or removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when a wiki page is created or updated"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when an issue is created, updated, or merged"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when someone adds a comment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when someone adds a comment on a confidential issue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when the job status changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL is triggered when the pipeline status changes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|URL must be percent-encoded if neccessary."
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Use this token to validate received payloads. It is sent with the request in the X-Gitlab-Token HTTP header."
|
||||
msgstr ""
|
||||
|
||||
msgid "Webhooks|Wiki page events"
|
||||
msgstr ""
|
||||
|
||||
msgid "Wednesday"
|
||||
|
|
|
@ -3,7 +3,6 @@ import $ from 'jquery';
|
|||
import initMrPage from 'helpers/init_vue_mr_page_helper';
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
import MergeRequestTabs from '~/merge_request_tabs';
|
||||
import '~/commit/pipelines/pipelines_bundle';
|
||||
import '~/lib/utils/common_utils';
|
||||
|
||||
jest.mock('~/lib/utils/webpack', () => ({
|
||||
|
|
|
@ -5,6 +5,7 @@ require 'spec_helper'
|
|||
RSpec.describe Clusters::Agent do
|
||||
subject { create(:cluster_agent) }
|
||||
|
||||
it { is_expected.to belong_to(:created_by_user).class_name('User').optional }
|
||||
it { is_expected.to belong_to(:project).class_name('::Project') }
|
||||
it { is_expected.to have_many(:agent_tokens).class_name('Clusters::AgentToken') }
|
||||
|
||||
|
|
|
@ -24,12 +24,4 @@ RSpec.shared_examples 'a tracked issue edit event' do |event|
|
|||
it 'does not track edit actions if author is not present' do
|
||||
expect(track_action(author: nil)).to be_nil
|
||||
end
|
||||
|
||||
context 'when feature flag track_issue_activity_actions is disabled' do
|
||||
it 'does not track edit actions' do
|
||||
stub_feature_flags(track_issue_activity_actions: false)
|
||||
|
||||
expect(track_action(author: user1)).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue