Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
ce4918c2e4
commit
3eeaac66d3
|
|
@ -523,7 +523,6 @@ lib/gitlab/checks/**
|
|||
/doc/administration/audit_event_reports.md @eread
|
||||
/doc/administration/audit_event_schema.md @eread
|
||||
/doc/administration/audit_event_streaming/ @eread
|
||||
/doc/administration/audit_event_types.md @eread
|
||||
/doc/administration/auditor_users.md @jglassman1
|
||||
/doc/administration/auth/ @jglassman1
|
||||
/doc/administration/backup_restore/ @axil
|
||||
|
|
@ -885,6 +884,7 @@ lib/gitlab/checks/**
|
|||
/doc/integration/jira/ @eread @ashrafkhamis
|
||||
/doc/integration/mattermost/ @axil
|
||||
/doc/integration/partner_marketplace.md @fneill
|
||||
/doc/integration/snowflake.md @eread
|
||||
/doc/integration/sourcegraph.md @msedlakjakubowski
|
||||
/doc/integration/trello_power_up.md @eread @ashrafkhamis
|
||||
/doc/integration/vault.md @phillipwells
|
||||
|
|
|
|||
|
|
@ -95,6 +95,7 @@ start-as-if-foss:
|
|||
ENABLE_GRAPHQL_SCHEMA_DUMP: $ENABLE_GRAPHQL_SCHEMA_DUMP
|
||||
ENABLE_JEST: $ENABLE_JEST
|
||||
ENABLE_JEST_INTEGRATION: $ENABLE_JEST_INTEGRATION
|
||||
ENABLE_JEST_PREDICTIVE: $ENABLE_JEST_PREDICTIVE
|
||||
ENABLE_RSPEC_PREDICTIVE_PIPELINE_GENERATE: $ENABLE_RSPEC_PREDICTIVE_PIPELINE_GENERATE
|
||||
ENABLE_RSPEC_PREDICTIVE_TRIGGER: $ENABLE_RSPEC_PREDICTIVE_TRIGGER
|
||||
ENABLE_RSPEC_PREDICTIVE_TRIGGER_SINGLE_DB: $ENABLE_RSPEC_PREDICTIVE_TRIGGER_SINGLE_DB
|
||||
|
|
|
|||
|
|
@ -77,12 +77,6 @@ compile-test-assets:
|
|||
- "${WEBPACK_COMPILE_LOG_PATH}"
|
||||
when: always
|
||||
|
||||
compile-test-assets as-if-foss:
|
||||
extends:
|
||||
- compile-test-assets
|
||||
- .frontend:rules:compile-test-assets-as-if-foss
|
||||
- .as-if-foss
|
||||
|
||||
update-assets-compile-production-cache:
|
||||
extends:
|
||||
- compile-production-assets
|
||||
|
|
@ -180,23 +174,6 @@ rspec-all frontend_fixture:
|
|||
- "compile-test-assets"
|
||||
parallel: 7
|
||||
|
||||
# Builds FOSS fixtures in the EE project, with the `ee/` folder removed (due to `as-if-foss`).
|
||||
rspec-all frontend_fixture as-if-foss:
|
||||
extends:
|
||||
- .frontend-fixtures-base
|
||||
- .frontend:rules:frontend_fixture-as-if-foss
|
||||
- .as-if-foss
|
||||
variables:
|
||||
# We explicitly disable Crystalball here so as even in scheduled pipelines we don't need it
|
||||
# since it's already enabled for `rspec-all frontend_fixture` there.
|
||||
CRYSTALBALL: "false"
|
||||
WEBPACK_VENDOR_DLL: "true"
|
||||
KNAPSACK_GENERATE_REPORT: ""
|
||||
FLAKY_RSPEC_GENERATE_REPORT: ""
|
||||
needs:
|
||||
- !reference [.frontend-fixtures-base, needs]
|
||||
- "compile-test-assets as-if-foss"
|
||||
|
||||
# Uploads EE fixtures in the EE project.
|
||||
# Uploads FOSS fixtures in the FOSS project.
|
||||
upload-frontend-fixtures:
|
||||
|
|
@ -357,15 +334,6 @@ jest predictive:
|
|||
script:
|
||||
- if [[ -s "$RSPEC_CHANGED_FILES_PATH" ]] || [[ -s "$RSPEC_MATCHING_JS_FILES_PATH" ]]; then run_timed_command "yarn jest:ci:predictive"; fi
|
||||
|
||||
jest predictive as-if-foss:
|
||||
extends:
|
||||
- jest predictive
|
||||
- .frontend:rules:jest:predictive-as-if-foss
|
||||
- .as-if-foss
|
||||
needs:
|
||||
- "rspec-all frontend_fixture as-if-foss"
|
||||
- "detect-tests"
|
||||
|
||||
jest-integration:
|
||||
extends:
|
||||
- .frontend-test-base
|
||||
|
|
|
|||
|
|
@ -408,9 +408,6 @@
|
|||
.frontend-predictive-patterns: &frontend-predictive-patterns
|
||||
- "{,ee/,jh/}{app/assets/javascripts,spec/frontend}/**/*"
|
||||
|
||||
.frontend-predictive-patterns-as-if-foss: &frontend-predictive-patterns-as-if-foss
|
||||
- "{app/assets/javascripts,spec/frontend}/**/*"
|
||||
|
||||
# Frontend view patterns + .qa-patterns
|
||||
.frontend-qa-patterns: &frontend-qa-patterns
|
||||
- "{,ee/,jh/}{app/assets,app/components,app/helpers,app/presenters,app/views}/**/*"
|
||||
|
|
@ -1259,17 +1256,6 @@
|
|||
- <<: *if-default-refs
|
||||
changes: *workhorse-patterns
|
||||
|
||||
.frontend:rules:compile-test-assets-as-if-foss:
|
||||
rules:
|
||||
- !reference [".strict-ee-only-rules", rules]
|
||||
- <<: *if-merge-request-labels-as-if-foss
|
||||
- <<: *if-merge-request-labels-run-all-rspec
|
||||
- <<: *if-merge-request-labels-frontend-and-feature-flag
|
||||
- <<: *if-default-refs
|
||||
changes: *code-backstage-qa-patterns
|
||||
- <<: *if-default-refs
|
||||
changes: *workhorse-patterns
|
||||
|
||||
.frontend:rules:default-frontend-jobs:
|
||||
rules:
|
||||
- <<: *if-merge-request-labels-pipeline-expedite
|
||||
|
|
@ -1336,20 +1322,6 @@
|
|||
- <<: *if-default-refs
|
||||
changes: *code-backstage-patterns
|
||||
|
||||
.frontend:rules:frontend_fixture-as-if-foss:
|
||||
rules:
|
||||
- !reference [".strict-ee-only-rules", rules]
|
||||
- <<: *if-merge-request-labels-pipeline-expedite
|
||||
when: never
|
||||
- <<: *if-merge-request-labels-as-if-foss
|
||||
- <<: *if-merge-request-labels-run-all-rspec
|
||||
- <<: *if-merge-request-labels-run-all-jest
|
||||
- <<: *if-merge-request-labels-frontend-and-feature-flag
|
||||
- <<: *if-security-merge-request
|
||||
changes: *code-backstage-patterns
|
||||
- <<: *if-merge-request
|
||||
changes: *frontend-predictive-patterns-as-if-foss
|
||||
|
||||
.frontend:rules:upload-frontend-fixtures:
|
||||
rules:
|
||||
# The new strategy to upload fixtures as generic packages is experimental and can be disabled by removing the `REUSE_FRONTEND_FIXTURES_ENABLED` variable
|
||||
|
|
@ -1402,6 +1374,7 @@
|
|||
- <<: *if-merge-request
|
||||
changes: *frontend-dependency-patterns
|
||||
when: never
|
||||
- if: '$ENABLE_JEST_PREDICTIVE == "true"'
|
||||
- <<: *if-merge-request
|
||||
changes: [".gitlab/ci/frontend.gitlab-ci.yml"] # When this file is modified, we run full Jest jobs
|
||||
when: never
|
||||
|
|
@ -1426,20 +1399,6 @@
|
|||
- <<: *if-default-refs
|
||||
changes: *code-backstage-patterns
|
||||
|
||||
.frontend:rules:jest:predictive-as-if-foss:
|
||||
rules:
|
||||
- !reference [".strict-ee-only-rules", rules]
|
||||
- !reference [".frontend:rules:predictive-default-rules", rules]
|
||||
- <<: *if-merge-request-labels-as-if-foss
|
||||
when: never
|
||||
- <<: *if-merge-request
|
||||
changes: *frontend-dependency-patterns
|
||||
when: never
|
||||
- <<: *if-fork-merge-request
|
||||
when: never
|
||||
- <<: *if-merge-request
|
||||
changes: *frontend-predictive-patterns-as-if-foss
|
||||
|
||||
.frontend:rules:coverage-frontend:
|
||||
rules:
|
||||
- <<: *if-not-ee
|
||||
|
|
@ -2386,7 +2345,6 @@
|
|||
- <<: *if-merge-request
|
||||
changes: *rubocop-patterns
|
||||
|
||||
|
||||
.rails:rules:detect-previous-failed-tests:
|
||||
rules:
|
||||
- !reference [".rails:rules:previous-failed-tests-default-rules", rules]
|
||||
|
|
|
|||
|
|
@ -164,19 +164,6 @@ Layout/ArgumentAlignment:
|
|||
- 'lib/api/project_container_repositories.rb'
|
||||
- 'lib/api/project_export.rb'
|
||||
- 'lib/api/project_import.rb'
|
||||
- 'lib/api/project_packages.rb'
|
||||
- 'lib/api/project_snippets.rb'
|
||||
- 'lib/api/project_templates.rb'
|
||||
- 'lib/api/projects.rb'
|
||||
- 'lib/api/protected_branches.rb'
|
||||
- 'lib/api/protected_tags.rb'
|
||||
- 'lib/api/releases.rb'
|
||||
- 'lib/api/remote_mirrors.rb'
|
||||
- 'lib/api/repositories.rb'
|
||||
- 'lib/api/resource_access_tokens.rb'
|
||||
- 'lib/api/settings.rb'
|
||||
- 'lib/api/snippets.rb'
|
||||
- 'lib/api/system_hooks.rb'
|
||||
- 'lib/api/tags.rb'
|
||||
- 'lib/api/terraform/state.rb'
|
||||
- 'lib/api/topics.rb'
|
||||
|
|
@ -294,19 +281,6 @@ Layout/ArgumentAlignment:
|
|||
- 'spec/lib/gitlab/middleware/multipart_spec.rb'
|
||||
- 'spec/lib/gitlab/pagination_delegate_spec.rb'
|
||||
- 'spec/lib/gitlab/path_regex_spec.rb'
|
||||
- 'spec/lib/gitlab/profiler_spec.rb'
|
||||
- 'spec/lib/gitlab/repository_cache/preloader_spec.rb'
|
||||
- 'spec/lib/gitlab/repository_cache_spec.rb'
|
||||
- 'spec/lib/gitlab/search_context/builder_spec.rb'
|
||||
- 'spec/lib/gitlab/seeders/ci/runner/runner_fleet_seeder_spec.rb'
|
||||
- 'spec/lib/gitlab/sidekiq_config_spec.rb'
|
||||
- 'spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/client_spec.rb'
|
||||
- 'spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb'
|
||||
- 'spec/lib/gitlab/sidekiq_queue_spec.rb'
|
||||
- 'spec/lib/gitlab/slash_commands/command_spec.rb'
|
||||
- 'spec/lib/gitlab/slash_commands/deploy_spec.rb'
|
||||
- 'spec/lib/gitlab/slash_commands/issue_move_spec.rb'
|
||||
- 'spec/lib/gitlab/spamcheck/client_spec.rb'
|
||||
- 'spec/lib/gitlab/suggestions/commit_message_spec.rb'
|
||||
- 'spec/lib/gitlab/suggestions/file_suggestion_spec.rb'
|
||||
- 'spec/lib/gitlab/suggestions/suggestion_set_spec.rb'
|
||||
|
|
|
|||
|
|
@ -131,27 +131,12 @@ Lint/SymbolConversion:
|
|||
- 'spec/lib/api/entities/nuget/search_result_spec.rb'
|
||||
- 'spec/lib/api/helpers/rate_limiter_spec.rb'
|
||||
- 'spec/lib/bulk_imports/projects/pipelines/project_feature_pipeline_spec.rb'
|
||||
- 'spec/lib/google_api/cloud_platform/client_spec.rb'
|
||||
- 'spec/lib/service_ping/devops_report_spec.rb'
|
||||
- 'spec/models/appearance_spec.rb'
|
||||
- 'spec/models/concerns/file_store_mounter_spec.rb'
|
||||
- 'spec/models/concerns/project_features_compatibility_spec.rb'
|
||||
- 'spec/models/integrations/prometheus_spec.rb'
|
||||
- 'spec/models/merge_request_diff_commit_spec.rb'
|
||||
- 'spec/models/plan_spec.rb'
|
||||
- 'spec/models/project_feature_spec.rb'
|
||||
- 'spec/policies/project_policy_spec.rb'
|
||||
- 'spec/requests/api/admin/plan_limits_spec.rb'
|
||||
- 'spec/requests/api/ci/job_artifacts_spec.rb'
|
||||
- 'spec/requests/api/ci/runner/jobs_put_spec.rb'
|
||||
- 'spec/requests/api/feature_flags_spec.rb'
|
||||
- 'spec/requests/api/group_debian_distributions_spec.rb'
|
||||
- 'spec/requests/api/integrations_spec.rb'
|
||||
- 'spec/requests/api/maven_packages_spec.rb'
|
||||
- 'spec/requests/api/project_debian_distributions_spec.rb'
|
||||
- 'spec/requests/api/terraform/state_spec.rb'
|
||||
- 'spec/requests/mailgun/webhooks_controller_spec.rb'
|
||||
- 'spec/requests/users_controller_spec.rb'
|
||||
- 'spec/services/ci/job_artifacts/expire_project_build_artifacts_service_spec.rb'
|
||||
- 'spec/services/concerns/rate_limited_service_spec.rb'
|
||||
- 'spec/services/design_management/copy_design_collection/copy_service_spec.rb'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
b98431224ef98fdd8186cc01c064708e4bceb419
|
||||
ac01cedc82a0e1c1a049f59633f61e5e2ad0ee98
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div
|
||||
class="gl-display-flex gl-justify-content-end gl-my-n2 gl-mx-n2"
|
||||
class="gl-display-flex gl-justify-content-end -gl-my-2 gl-mx-n2"
|
||||
:data-testid="`user-actions-${user.id}`"
|
||||
>
|
||||
<div v-if="hasEditAction" class="gl-p-2" :class="{ 'gl-mr-3': hasEditActionOnly }">
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ export default {
|
|||
</li>
|
||||
</ul>
|
||||
</gl-card>
|
||||
<div class="gl-my-n2 gl-mx-n2 gl-display-flex gl-flex-wrap">
|
||||
<div class="-gl-my-2 gl-mx-n2 gl-display-flex gl-flex-wrap">
|
||||
<div class="gl-p-2">
|
||||
<clipboard-button
|
||||
:title="$options.i18n.copyButton"
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ export default {
|
|||
v-gl-tooltip
|
||||
category="tertiary"
|
||||
icon="copy-to-clipboard"
|
||||
class="gl-my-n2 gl-ml-2"
|
||||
class="-gl-my-2 gl-ml-2"
|
||||
size="small"
|
||||
:title="__('Copy key')"
|
||||
:data-clipboard-text="item.key"
|
||||
|
|
@ -329,7 +329,7 @@ export default {
|
|||
v-gl-tooltip
|
||||
category="tertiary"
|
||||
icon="copy-to-clipboard"
|
||||
class="gl-my-n2 gl-ml-2"
|
||||
class="-gl-my-2 gl-ml-2"
|
||||
size="small"
|
||||
:title="__('Copy value')"
|
||||
:data-clipboard-text="item.value"
|
||||
|
|
@ -350,7 +350,7 @@ export default {
|
|||
v-gl-tooltip
|
||||
category="tertiary"
|
||||
icon="copy-to-clipboard"
|
||||
class="gl-my-n2 gl-ml-2"
|
||||
class="-gl-my-2 gl-ml-2"
|
||||
size="small"
|
||||
:title="__('Copy environment')"
|
||||
:data-clipboard-text="convertEnvironmentScopeValue(item.environmentScope)"
|
||||
|
|
|
|||
|
|
@ -65,11 +65,13 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<!-- TODO: remove the span element once bootstrap-vue is updated to version 2.21.1 -->
|
||||
<!-- TODO: https://github.com/bootstrap-vue/bootstrap-vue/issues/6219 -->
|
||||
<span data-testid="badge-click-wrapper" @click="onClick">
|
||||
<gl-badge :href="badgeUrl" class="version-check-badge" :variant="status" :size="size">{{
|
||||
title
|
||||
}}</gl-badge>
|
||||
</span>
|
||||
<gl-badge
|
||||
:href="badgeUrl"
|
||||
class="gl-align-middle"
|
||||
:variant="status"
|
||||
:size="size"
|
||||
data-testid="check-version-badge"
|
||||
@click.native="onClick"
|
||||
>{{ title }}</gl-badge
|
||||
>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div v-if="canCreateSubgroups || canCreateProjects" class="gl-mt-5">
|
||||
<div class="gl-display-flex gl-mx-n3 gl-my-n3 gl-flex-wrap">
|
||||
<div class="gl-display-flex gl-mx-n3 -gl-my-3 gl-flex-wrap">
|
||||
<div v-if="canCreateSubgroups" class="gl-p-3 gl-w-full gl-sm-w-half">
|
||||
<gl-link :href="newSubgroupPath" :class="$options.linkClasses">
|
||||
<div class="svg-content gl-w-15 gl-flex-shrink-0 gl-mr-5">
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ export default {
|
|||
</gl-tab>
|
||||
<template #tabs-end>
|
||||
<li class="gl-flex-grow-1 gl-align-self-center gl-w-full gl-lg-w-auto gl-py-2">
|
||||
<div class="gl-lg-display-flex gl-justify-content-end gl-mx-n2 gl-my-n2">
|
||||
<div class="gl-lg-display-flex gl-justify-content-end gl-mx-n2 -gl-my-2">
|
||||
<div class="gl-p-2 gl-lg-form-input-md gl-w-full">
|
||||
<gl-search-box-by-type
|
||||
:value="search"
|
||||
|
|
|
|||
|
|
@ -459,7 +459,7 @@ export default {
|
|||
category="tertiary"
|
||||
icon="ellipsis_v"
|
||||
placement="bottom-end"
|
||||
class="gl-my-n3!"
|
||||
class="!-gl-my-3"
|
||||
:toggle-text="$options.i18n.moreActionsText"
|
||||
text-sr-only
|
||||
no-caret
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ export default {
|
|||
:title="emptyStateTitle"
|
||||
/>
|
||||
<div v-else>
|
||||
<div class="gl-my-n3 gl-mx-n3 gl-display-flex gl-flex-wrap">
|
||||
<div class="-gl-my-3 gl-mx-n3 gl-display-flex gl-flex-wrap">
|
||||
<div v-for="user in users" :key="user.id" class="gl-p-3 gl-w-full gl-md-w-half gl-lg-w-25p">
|
||||
<gl-avatar-link
|
||||
:href="user.web_url"
|
||||
|
|
|
|||
|
|
@ -261,7 +261,7 @@ export default {
|
|||
<gl-disclosure-dropdown-group :group="itemGroups.helpActions" bordered>
|
||||
<template #list-item="{ item }">
|
||||
<span
|
||||
class="gl-display-flex gl-justify-content-space-between gl-align-items-center gl-my-n1"
|
||||
class="gl-display-flex gl-justify-content-space-between gl-align-items-center -gl-my-1"
|
||||
>
|
||||
{{ item.text }}
|
||||
<gl-badge v-if="item.count" pill size="sm" variant="info">{{ item.count }}</gl-badge>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ export default {
|
|||
</div>
|
||||
</div>
|
||||
<div class="gl-mt-5">
|
||||
<div class="gl-display-flex gl-align-items-center gl-flex-wrap gl-my-n3 gl-mx-n3">
|
||||
<div class="gl-display-flex gl-align-items-center gl-flex-wrap -gl-my-3 gl-mx-n3">
|
||||
<div
|
||||
v-for="{ id, label, backgroundColor, formattedValue } in computedSections"
|
||||
:key="id"
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ export default {
|
|||
</gl-truncate-text>
|
||||
<div v-if="hasTopics" class="gl-mt-3" data-testid="project-topics">
|
||||
<div
|
||||
class="gl-w-full gl-display-inline-flex gl-flex-wrap gl-font-base gl-font-weight-normal gl-align-items-center gl-mx-n2 gl-my-n2"
|
||||
class="gl-w-full gl-display-inline-flex gl-flex-wrap gl-font-base gl-font-weight-normal gl-align-items-center gl-mx-n2 -gl-my-2"
|
||||
>
|
||||
<span class="gl-p-2 gl-font-sm gl-text-secondary">{{ $options.i18n.topics }}:</span>
|
||||
<div v-for="topic in visibleTopics" :key="topic" class="gl-p-2">
|
||||
|
|
@ -330,7 +330,7 @@ export default {
|
|||
</gl-sprintf>
|
||||
</div>
|
||||
<gl-popover :target="topicsPopoverTarget" :title="$options.i18n.moreTopics">
|
||||
<div class="gl-font-base gl-font-weight-normal gl-mx-n2 gl-my-n2">
|
||||
<div class="gl-font-base gl-font-weight-normal gl-mx-n2 -gl-my-2">
|
||||
<div
|
||||
v-for="topic in popoverTopics"
|
||||
:key="topic"
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ export default {
|
|||
},
|
||||
variables() {
|
||||
return {
|
||||
fullPath: this.modalWorkItemFullPath || this.fullPath,
|
||||
fullPath: this.workItemFullPath,
|
||||
iid: this.workItemIid,
|
||||
};
|
||||
},
|
||||
|
|
@ -169,6 +169,9 @@ export default {
|
|||
},
|
||||
},
|
||||
computed: {
|
||||
workItemFullPath() {
|
||||
return this.modalWorkItemFullPath || this.fullPath;
|
||||
},
|
||||
workItemLoading() {
|
||||
return isEmpty(this.workItem) && this.$apollo.queries.workItem.loading;
|
||||
},
|
||||
|
|
@ -439,7 +442,7 @@ export default {
|
|||
:show-work-item-current-user-todos="showWorkItemCurrentUserTodos"
|
||||
:parent-work-item-confidentiality="parentWorkItemConfidentiality"
|
||||
:update-in-progress="updateInProgress"
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:is-modal="isModal"
|
||||
:work-item="workItem"
|
||||
:is-sticky-header-showing="isStickyHeaderShowing"
|
||||
|
|
@ -501,20 +504,20 @@ export default {
|
|||
v-if="showWorkItemCurrentUserTodos"
|
||||
:work-item-id="workItem.id"
|
||||
:work-item-iid="workItemIid"
|
||||
:work-item-fullpath="fullPath"
|
||||
:work-item-fullpath="workItemFullPath"
|
||||
:current-user-todos="currentUserTodos"
|
||||
@error="updateError = $event"
|
||||
/>
|
||||
<work-item-notifications-widget
|
||||
v-if="newTodoAndNotificationsEnabled"
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item-id="workItem.id"
|
||||
:subscribed-to-notifications="workItemNotificationsSubscribed"
|
||||
:can-update="canUpdate"
|
||||
@error="updateError = $event"
|
||||
/>
|
||||
<work-item-actions
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item-id="workItem.id"
|
||||
:hide-subscribe="newTodoAndNotificationsEnabled"
|
||||
:subscribed-to-notifications="workItemNotificationsSubscribed"
|
||||
|
|
@ -560,7 +563,7 @@ export default {
|
|||
/>
|
||||
<work-item-created-updated
|
||||
v-if="!editMode"
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item-iid="workItemIid"
|
||||
:update-in-progress="updateInProgress"
|
||||
/>
|
||||
|
|
@ -570,7 +573,7 @@ export default {
|
|||
<work-item-description
|
||||
v-if="hasDescriptionWidget"
|
||||
:edit-mode="editMode"
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item-id="workItem.id"
|
||||
:work-item-iid="workItem.iid"
|
||||
:update-in-progress="updateInProgress"
|
||||
|
|
@ -582,7 +585,7 @@ export default {
|
|||
<work-item-award-emoji
|
||||
v-if="workItemAwardEmoji"
|
||||
:work-item-id="workItem.id"
|
||||
:work-item-fullpath="fullPath"
|
||||
:work-item-fullpath="workItemFullPath"
|
||||
:award-emoji="workItemAwardEmoji.awardEmoji"
|
||||
:work-item-iid="workItemIid"
|
||||
@error="updateError = $event"
|
||||
|
|
@ -596,7 +599,7 @@ export default {
|
|||
:class="{ 'is-modal': isModal }"
|
||||
>
|
||||
<work-item-attributes-wrapper
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item="workItem"
|
||||
@error="updateError = $event"
|
||||
/>
|
||||
|
|
@ -604,7 +607,7 @@ export default {
|
|||
|
||||
<work-item-tree
|
||||
v-if="showWorkItemTree"
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item-type="workItemType"
|
||||
:parent-work-item-type="workItem.workItemType.name"
|
||||
:work-item-id="workItem.id"
|
||||
|
|
@ -619,13 +622,13 @@ export default {
|
|||
v-if="workItemLinkedItems"
|
||||
:work-item-id="workItem.id"
|
||||
:work-item-iid="workItemIid"
|
||||
:work-item-full-path="fullPath"
|
||||
:work-item-full-path="workItemFullPath"
|
||||
:work-item-type="workItem.workItemType.name"
|
||||
@showModal="openInModal"
|
||||
/>
|
||||
<work-item-notes
|
||||
v-if="workItemNotes"
|
||||
:full-path="fullPath"
|
||||
:full-path="workItemFullPath"
|
||||
:work-item-id="workItem.id"
|
||||
:work-item-iid="workItem.iid"
|
||||
:work-item-type="workItemType"
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import {
|
|||
I18N_WORK_ITEM_CONFIDENTIALITY_CHECKBOX_TOOLTIP,
|
||||
sprintfWorkItem,
|
||||
} from '../../constants';
|
||||
import WorkItemProjectsListbox from './work_item_projects_listbox.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -28,6 +29,7 @@ export default {
|
|||
GlFormCheckbox,
|
||||
GlTooltip,
|
||||
WorkItemTokenInput,
|
||||
WorkItemProjectsListbox,
|
||||
},
|
||||
inject: ['hasIterationsFeature', 'isGroup'],
|
||||
props: {
|
||||
|
|
@ -101,6 +103,7 @@ export default {
|
|||
workItemsToAdd: [],
|
||||
error: null,
|
||||
search: '',
|
||||
selectedProject: null,
|
||||
childToCreateTitle: null,
|
||||
confidential: this.parentConfidential,
|
||||
};
|
||||
|
|
@ -109,7 +112,6 @@ export default {
|
|||
workItemInput() {
|
||||
let workItemInput = {
|
||||
title: this.search?.title || this.search,
|
||||
projectPath: this.fullPath,
|
||||
workItemTypeId: this.childWorkItemType,
|
||||
hierarchyWidget: {
|
||||
parentId: this.issuableGid,
|
||||
|
|
@ -117,6 +119,18 @@ export default {
|
|||
confidential: this.parentConfidential || this.confidential,
|
||||
};
|
||||
|
||||
if (this.selectedProject) {
|
||||
workItemInput = {
|
||||
...workItemInput,
|
||||
namespacePath: this.selectedProject.fullPath,
|
||||
};
|
||||
} else {
|
||||
workItemInput = {
|
||||
...workItemInput,
|
||||
projectPath: this.fullPath,
|
||||
};
|
||||
}
|
||||
|
||||
if (this.parentMilestoneId) {
|
||||
workItemInput = {
|
||||
...workItemInput,
|
||||
|
|
@ -183,11 +197,14 @@ export default {
|
|||
parentMilestoneId() {
|
||||
return this.parentMilestone?.id;
|
||||
},
|
||||
isSubmitButtonDisabled() {
|
||||
canSubmitForm() {
|
||||
if (this.isCreateForm) {
|
||||
return this.search.length === 0;
|
||||
if (this.isGroup) {
|
||||
return this.search.length > 0 && this.selectedProject !== null;
|
||||
}
|
||||
return this.search.length > 0;
|
||||
}
|
||||
return this.workItemsToAdd.length === 0 || !this.areWorkItemsToAddValid;
|
||||
return this.workItemsToAdd.length > 0 && this.areWorkItemsToAddValid;
|
||||
},
|
||||
invalidWorkItemsToAdd() {
|
||||
return this.parentConfidential
|
||||
|
|
@ -251,6 +268,9 @@ export default {
|
|||
});
|
||||
},
|
||||
createChild() {
|
||||
if (!this.canSubmitForm) {
|
||||
return;
|
||||
}
|
||||
this.$apollo
|
||||
.mutate({
|
||||
mutation: createWorkItemMutation,
|
||||
|
|
@ -284,15 +304,17 @@ export default {
|
|||
},
|
||||
},
|
||||
i18n: {
|
||||
inputLabel: __('Title'),
|
||||
titleInputLabel: __('Title'),
|
||||
projectInputLabel: __('Project'),
|
||||
addChildErrorMessage: s__(
|
||||
'WorkItem|Something went wrong when trying to add a child. Please try again.',
|
||||
),
|
||||
createChildErrorMessage: s__(
|
||||
'WorkItem|Something went wrong when trying to create a child. Please try again.',
|
||||
),
|
||||
createPlaceholder: s__('WorkItem|Add a title'),
|
||||
fieldValidationMessage: __('Maximum of 255 characters'),
|
||||
titleInputPlaceholder: s__('WorkItem|Add a title'),
|
||||
projectInputPlaceholder: s__('WorkItem|Select a project'),
|
||||
titleInputValidationMessage: __('Maximum of 255 characters'),
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
@ -304,21 +326,37 @@ export default {
|
|||
@submit.prevent="addOrCreateMethod"
|
||||
>
|
||||
<template v-if="isCreateForm">
|
||||
<gl-form-group
|
||||
:label="$options.i18n.inputLabel"
|
||||
:description="$options.i18n.fieldValidationMessage"
|
||||
:invalid-feedback="error"
|
||||
>
|
||||
<gl-form-input
|
||||
ref="wiTitleInput"
|
||||
v-model="search"
|
||||
:placeholder="$options.i18n.createPlaceholder"
|
||||
maxlength="255"
|
||||
class="gl-mb-3"
|
||||
autofocus
|
||||
/>
|
||||
</gl-form-group>
|
||||
<div class="gl-display-flex gl-gap-x-3">
|
||||
<gl-form-group
|
||||
class="gl-w-full"
|
||||
:label="$options.i18n.titleInputLabel"
|
||||
:description="$options.i18n.titleInputValidationMessage"
|
||||
>
|
||||
<gl-form-input
|
||||
ref="wiTitleInput"
|
||||
v-model="search"
|
||||
:placeholder="$options.i18n.titleInputPlaceholder"
|
||||
maxlength="255"
|
||||
class="gl-mb-3"
|
||||
autofocus
|
||||
/>
|
||||
</gl-form-group>
|
||||
<gl-form-group
|
||||
v-if="isGroup"
|
||||
class="gl-w-full"
|
||||
:label="$options.i18n.projectInputLabel"
|
||||
:description="$options.i18n.projectValidationMessage"
|
||||
>
|
||||
<work-item-projects-listbox
|
||||
v-model="selectedProject"
|
||||
class="gl-w-full"
|
||||
:full-path="fullPath"
|
||||
:is-group="isGroup"
|
||||
/>
|
||||
</gl-form-group>
|
||||
</div>
|
||||
<gl-form-checkbox
|
||||
v-if="isCreateForm"
|
||||
ref="confidentialityCheckbox"
|
||||
v-model="confidential"
|
||||
name="isConfidential"
|
||||
|
|
@ -359,7 +397,7 @@ export default {
|
|||
variant="confirm"
|
||||
size="small"
|
||||
type="submit"
|
||||
:disabled="isSubmitButtonDisabled"
|
||||
:disabled="!canSubmitForm"
|
||||
data-testid="add-child-button"
|
||||
class="gl-mr-2"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,214 @@
|
|||
<script>
|
||||
import { GlCollapsibleListbox } from '@gitlab/ui';
|
||||
import fuzzaldrinPlus from 'fuzzaldrin-plus';
|
||||
import ProjectAvatar from '~/vue_shared/components/project_avatar.vue';
|
||||
import { __, s__ } from '~/locale';
|
||||
import { STORAGE_KEY } from '~/super_sidebar/constants';
|
||||
import AccessorUtilities from '~/lib/utils/accessor';
|
||||
import { getTopFrequentItems } from '~/super_sidebar/utils';
|
||||
import groupProjectsForLinksWidgetQuery from '../../graphql/group_projects_for_links_widget.query.graphql';
|
||||
import { SEARCH_DEBOUNCE, MAX_FREQUENT_PROJECTS } from '../../constants';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlCollapsibleListbox,
|
||||
ProjectAvatar,
|
||||
},
|
||||
model: {
|
||||
prop: 'selectedProject',
|
||||
event: 'selectProject',
|
||||
},
|
||||
props: {
|
||||
fullPath: {
|
||||
required: true,
|
||||
type: String,
|
||||
},
|
||||
isGroup: {
|
||||
required: false,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
selectedProject: {
|
||||
required: false,
|
||||
type: Object,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
projects: [],
|
||||
frequentProjects: [],
|
||||
selectedProjectFullPath: null,
|
||||
searchKey: '',
|
||||
};
|
||||
},
|
||||
apollo: {
|
||||
projects: {
|
||||
query() {
|
||||
return groupProjectsForLinksWidgetQuery;
|
||||
},
|
||||
variables() {
|
||||
return {
|
||||
fullPath: this.fullPath,
|
||||
projectSearch: this.searchKey,
|
||||
};
|
||||
},
|
||||
update(data) {
|
||||
return data.group?.projects?.nodes;
|
||||
},
|
||||
skip() {
|
||||
return !this.isGroup;
|
||||
},
|
||||
debounce: SEARCH_DEBOUNCE,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
dropdownToggleText() {
|
||||
if (this.selectedProject) {
|
||||
/** When selectedProject is fetched from localStorage
|
||||
* name_with_namespace doesn't exist. Therefore we rely on
|
||||
* namespace directly.
|
||||
* */
|
||||
return this.selectedProject.nameWithNamespace || this.selectedProject.namespace;
|
||||
}
|
||||
return s__('WorkItem|Select a project');
|
||||
},
|
||||
listItems() {
|
||||
const items = [];
|
||||
if (this.frequentProjects.length > 0) {
|
||||
const frequent = this.frequentProjects.map((project) => {
|
||||
return {
|
||||
text: project.name,
|
||||
value: project.webUrl,
|
||||
namespace: project.namespace,
|
||||
avatarUrl: project.avatar_url,
|
||||
};
|
||||
});
|
||||
|
||||
items.push({
|
||||
text: __('Recently used'),
|
||||
options: frequent,
|
||||
});
|
||||
}
|
||||
|
||||
if (this.projects.length > 0) {
|
||||
const allProjects = this.projects.map((project) => {
|
||||
return {
|
||||
text: project.name,
|
||||
value: project.fullPath,
|
||||
namespace: project.namespace?.name,
|
||||
avatarUrl: project.avatarUrl,
|
||||
};
|
||||
});
|
||||
|
||||
items.push({
|
||||
text: __('Projects'),
|
||||
options: allProjects,
|
||||
textSrOnly: true,
|
||||
});
|
||||
}
|
||||
|
||||
return items;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
selectedProjectFullPath(projectFullPath) {
|
||||
const project = this.findSelectedProject(projectFullPath);
|
||||
this.$emit('selectProject', project);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleSearch(keyword) {
|
||||
this.searchKey = keyword;
|
||||
this.setFrequentProjects(keyword);
|
||||
},
|
||||
findSelectedProject(projectFullPath) {
|
||||
const project = this.projects.find((proj) => proj.fullPath === projectFullPath);
|
||||
if (project) {
|
||||
return project;
|
||||
}
|
||||
return this.projects.find((proj) => {
|
||||
return `/${proj.fullPath}` === projectFullPath;
|
||||
});
|
||||
},
|
||||
async handleDropdownShow() {
|
||||
this.searchKey = '';
|
||||
this.setFrequentProjects();
|
||||
await this.$nextTick();
|
||||
this.$refs.searchInputField?.focusInput?.();
|
||||
},
|
||||
setFrequentProjects(searchTerm) {
|
||||
const { current_username: currentUsername } = gon;
|
||||
|
||||
if (!currentUsername) {
|
||||
this.frequentProjects = [];
|
||||
return;
|
||||
}
|
||||
|
||||
const storageKey = `${currentUsername}/${STORAGE_KEY.projects}`;
|
||||
|
||||
if (!AccessorUtilities.canUseLocalStorage()) {
|
||||
this.frequentProjects = [];
|
||||
return;
|
||||
}
|
||||
|
||||
const storedRawItems = localStorage.getItem(storageKey);
|
||||
|
||||
let storedFrequentProjects = storedRawItems ? JSON.parse(storedRawItems) : [];
|
||||
|
||||
/* Filter for the current group */
|
||||
storedFrequentProjects = storedFrequentProjects.filter((item) => {
|
||||
return Boolean(item.webUrl?.slice(1)?.startsWith(this.fullPath));
|
||||
});
|
||||
|
||||
if (searchTerm) {
|
||||
storedFrequentProjects = fuzzaldrinPlus.filter(storedFrequentProjects, searchTerm, {
|
||||
key: ['namespace'],
|
||||
});
|
||||
}
|
||||
|
||||
this.frequentProjects = getTopFrequentItems(
|
||||
storedFrequentProjects,
|
||||
MAX_FREQUENT_PROJECTS,
|
||||
).map((item) => {
|
||||
return { ...item, avatar_url: item.avatarUrl, web_url: item.webUrl };
|
||||
});
|
||||
},
|
||||
handleFrequentProjectSelection(selectedProject) {
|
||||
this.project = this.projects.find((proj) => {
|
||||
return `/${proj.fullPath}` === selectedProject.webUrl;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<gl-collapsible-listbox
|
||||
v-model="selectedProjectFullPath"
|
||||
block
|
||||
searchable
|
||||
is-check-centered
|
||||
:items="listItems"
|
||||
:toggle-text="dropdownToggleText"
|
||||
fluid-width
|
||||
class="gl-relative"
|
||||
@search="handleSearch"
|
||||
@shown="handleDropdownShow"
|
||||
>
|
||||
<template #list-item="{ item }">
|
||||
<div class="gl-flex gl-w-full gl-items-center">
|
||||
<project-avatar
|
||||
class="gl-mr-3"
|
||||
:project-id="item.id"
|
||||
:project-avatar-url="item.avatarUrl"
|
||||
:project-name="item.text"
|
||||
/>
|
||||
<span>
|
||||
<span class="gl-block gl-mr-2"> {{ item.text }} </span>
|
||||
<span class="gl-block gl-text-secondary"> {{ item.namespace }} </span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
</gl-collapsible-listbox>
|
||||
</template>
|
||||
|
|
@ -53,6 +53,8 @@ export const WORK_ITEM_TITLE_MAX_LENGTH = 255;
|
|||
export const WORK_ITEM_ROUTE_NAME = 'workItem';
|
||||
export const DESIGN_ROUTE_NAME = 'design';
|
||||
|
||||
export const SEARCH_DEBOUNCE = 500;
|
||||
|
||||
export const i18n = {
|
||||
fetchErrorTitle: s__('WorkItem|Work item not found'),
|
||||
fetchError: s__(
|
||||
|
|
@ -347,4 +349,5 @@ export const EPIC_COLORS = [
|
|||
|
||||
export const DEFAULT_EPIC_COLORS = '#1068bf';
|
||||
|
||||
export const MAX_FREQUENT_PROJECTS = 3;
|
||||
export const CREATE_NEW_WORK_ITEM_MODAL = 'create_new_work_item_modal';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
query groupProjectsForLinksWidget($fullPath: ID!, $projectSearch: String) {
|
||||
group(fullPath: $fullPath) {
|
||||
id
|
||||
projects(search: $projectSearch, includeSubgroups: true) {
|
||||
nodes {
|
||||
id
|
||||
name
|
||||
avatarUrl
|
||||
nameWithNamespace
|
||||
fullPath
|
||||
namespace {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -19,12 +19,12 @@ module Types
|
|||
description: 'ID of the alert.'
|
||||
|
||||
field :iid,
|
||||
GraphQL::Types::ID,
|
||||
GraphQL::Types::String,
|
||||
null: false,
|
||||
description: 'Internal ID of the alert.'
|
||||
|
||||
field :issue_iid,
|
||||
GraphQL::Types::ID,
|
||||
GraphQL::Types::String,
|
||||
null: true,
|
||||
deprecated: { reason: 'Use issue field', milestone: '13.10' },
|
||||
description: 'Internal ID of the GitLab issue attached to the alert.'
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ module Types
|
|||
description: 'Global ID of the deployment.'
|
||||
|
||||
field :iid,
|
||||
GraphQL::Types::ID,
|
||||
GraphQL::Types::String,
|
||||
description: 'Project-level internal ID of the deployment.'
|
||||
|
||||
field :ref,
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ module Types
|
|||
description: 'Description of the issue.'
|
||||
field :id, GraphQL::Types::ID, null: false,
|
||||
description: "ID of the issue."
|
||||
field :iid, GraphQL::Types::ID, null: false,
|
||||
field :iid, GraphQL::Types::String, null: false,
|
||||
description: "Internal ID of the issue."
|
||||
field :state, IssueStateEnum, null: false,
|
||||
description: 'State of the issue.'
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ module Types
|
|||
description: 'Description of the work item.'
|
||||
field :id, Types::GlobalIDType[::WorkItem], null: false,
|
||||
description: 'Global ID of the work item.'
|
||||
field :iid, GraphQL::Types::ID, null: false,
|
||||
field :iid, GraphQL::Types::String, null: false,
|
||||
description: 'Internal ID of the work item.'
|
||||
field :lock_version,
|
||||
GraphQL::Types::Int,
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ module Ci
|
|||
def self.with_preloads
|
||||
preload(
|
||||
:metadata,
|
||||
user: [:followers, :followees],
|
||||
downstream_pipeline: [project: [:route, { namespace: :route }]],
|
||||
project: [:namespace]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ module WorkItems
|
|||
|
||||
self.table_name = 'work_item_parent_links'
|
||||
|
||||
MAX_CHILDREN = 100
|
||||
MAX_CHILDREN = 5000
|
||||
|
||||
belongs_to :work_item
|
||||
belongs_to :work_item_parent, class_name: 'WorkItem'
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
= render_if_exists 'admin/users/auditor_user_badge'
|
||||
= render_if_exists 'admin/users/gma_user_badge'
|
||||
|
||||
.gl-my-3.gl-display-flex.gl-flex-wrap.gl-my-n2.gl-mx-n2
|
||||
.gl-my-3.gl-display-flex.gl-flex-wrap.-gl-my-2.gl-mx-n2
|
||||
- if @user != current_user
|
||||
- if impersonation_enabled?
|
||||
.gl-p-2
|
||||
|
|
|
|||
|
|
@ -4,15 +4,12 @@
|
|||
= markdown_field(Gitlab::CurrentSettings.current_application_settings, :help_page_text)
|
||||
%hr
|
||||
|
||||
.gl-display-flex.gl-align-items-flex-end
|
||||
%h1.gl-mt-5.gl-mb-3
|
||||
= default_brand_title
|
||||
- if user_signed_in?
|
||||
%span= link_to_version
|
||||
%h1{ class: 'gl-heading-1 !gl-mt-5 !gl-mb-3' }
|
||||
= default_brand_title
|
||||
- if user_signed_in?
|
||||
= link_to_version
|
||||
- if show_version_check?
|
||||
%span.gl-mt-5.gl-mb-3.gl-ml-3
|
||||
.js-gitlab-version-check-badge{ data: { "size": "lg", "actionable": "true", "version": gitlab_version_check.to_json } }
|
||||
%hr
|
||||
.js-gitlab-version-check-badge{ data: { "size": "md", "actionable": "true", "version": gitlab_version_check.to_json } }
|
||||
|
||||
- unless Gitlab::CurrentSettings.help_page_hide_commercial_content?
|
||||
%p.slead
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
= render_if_exists 'projects/branches/diverged_from_upstream', branch: branch
|
||||
|
||||
.gl-text-truncate.gl-my-n2.gl-ml-n2
|
||||
.gl-text-truncate.-gl-my-2.gl-ml-n2
|
||||
- if commit
|
||||
= render 'projects/branches/commit', commit: commit, project: @project, class_name: 'gl-p-2'
|
||||
- else
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
- link_url = help_page_path('user/infrastructure/iac/troubleshooting', anchor: 'state-not-found-if-the-state-name-contains-a-period')
|
||||
- link = link_to('', link_url, target: '_blank', rel: 'noopener noreferrer')
|
||||
|
||||
= render Pajamas::AlertComponent.new(variant: 'warning', alert_options: { class: 'gl-mt-5 js-period-in-terraform-state-name-alert', data: { feature_id: Users::CalloutsHelper::PERIOD_IN_TERRAFORM_STATE_NAME_ALERT, dismiss_endpoint: callouts_path, defer_links: 'true' }}) do |c|
|
||||
= render Pajamas::AlertComponent.new(variant: 'info', alert_options: { class: 'gl-mt-5 js-period-in-terraform-state-name-alert', data: { feature_id: Users::CalloutsHelper::PERIOD_IN_TERRAFORM_STATE_NAME_ALERT, dismiss_endpoint: callouts_path, defer_links: 'true' }}) do |c|
|
||||
- c.with_body do
|
||||
= safe_format(s_('Terraform|Support for periods (`.`) in Terraform state names might break existing states. Refer to the %{link_start}troubleshooting%{link_end} to learn more.'), tag_pair(link, :link_start, :link_end))
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
- c.with_body do
|
||||
.gl-new-card-content
|
||||
- if file_hooks.any?
|
||||
%ul.content-list{ class: 'gl-my-n3!' }
|
||||
%ul.content-list{ class: '!-gl-my-3' }
|
||||
- file_hooks.each do |file|
|
||||
%li.gl-border-b.gl-last-of-type-border-b-0
|
||||
.monospace
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
- max_project_topic_length = 15
|
||||
|
||||
- if project.topics.present?
|
||||
.gl-w-full.gl-display-inline-flex.gl-flex-wrap.gl-font-base.gl-font-weight-normal.gl-align-items-center.gl-mx-n2.gl-my-n2{ 'data-testid': 'project_topic_list' }
|
||||
.gl-w-full.gl-display-inline-flex.gl-flex-wrap.gl-font-base.gl-font-weight-normal.gl-align-items-center.gl-mx-n2.-gl-my-2{ 'data-testid': 'project_topic_list' }
|
||||
- project.topics_to_show.each do |topic|
|
||||
- explore_project_topic_path = topic_explore_projects_cleaned_path(topic_name: topic[:name])
|
||||
- if topic[:title].length > max_project_topic_length
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
name: ci_rules_exists_pattern_matches_cache
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/351593
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150805
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/457914
|
||||
milestone: '17.0'
|
||||
group: group::pipeline authoring
|
||||
type: gitlab_com_derisk
|
||||
default_enabled: false
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class EnableCrossHierarchyForHierarchyRestrictions < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
milestone '17.1'
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
class MigrationWorkItemType < MigrationRecord
|
||||
self.table_name = 'work_item_types'
|
||||
end
|
||||
|
||||
class MigrationHierarchyRestriction < MigrationRecord
|
||||
self.table_name = 'work_item_hierarchy_restrictions'
|
||||
end
|
||||
|
||||
def up
|
||||
upsert_enable_cross_hierarchy_restrictions
|
||||
end
|
||||
|
||||
def down
|
||||
upsert_enable_cross_hierarchy_restrictions(stepping_down: true)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def upsert_enable_cross_hierarchy_restrictions(stepping_down: false)
|
||||
issue_type = MigrationWorkItemType.find_by_name_and_namespace_id('Issue', nil)
|
||||
task_type = MigrationWorkItemType.find_by_name_and_namespace_id('Task', nil)
|
||||
objective_type = MigrationWorkItemType.find_by_name_and_namespace_id('Objective', nil)
|
||||
key_result_type = MigrationWorkItemType.find_by_name_and_namespace_id('Key Result', nil)
|
||||
incident_type = MigrationWorkItemType.find_by_name_and_namespace_id('Incident', nil)
|
||||
ticket_type = MigrationWorkItemType.find_by_name_and_namespace_id('Ticket', nil)
|
||||
|
||||
unless issue_type && task_type && objective_type && key_result_type && incident_type && ticket_type
|
||||
Gitlab::AppLogger.warn(
|
||||
'One of Issue, Task, Objective, Key Result, Incident, Ticket work item types not found, ' \
|
||||
'skipping hierarchy restrictions update'
|
||||
)
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
restrictions = [
|
||||
{
|
||||
parent_type_id: objective_type.id,
|
||||
child_type_id: objective_type.id,
|
||||
maximum_depth: 9,
|
||||
cross_hierarchy_enabled: !stepping_down
|
||||
},
|
||||
{
|
||||
parent_type_id: objective_type.id,
|
||||
child_type_id: key_result_type.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: !stepping_down
|
||||
},
|
||||
{
|
||||
parent_type_id: issue_type.id,
|
||||
child_type_id: task_type.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: !stepping_down
|
||||
},
|
||||
{
|
||||
parent_type_id: incident_type.id,
|
||||
child_type_id: task_type.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: !stepping_down
|
||||
},
|
||||
{
|
||||
parent_type_id: ticket_type.id,
|
||||
child_type_id: task_type.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: !stepping_down
|
||||
}
|
||||
]
|
||||
|
||||
MigrationHierarchyRestriction.reset_column_information
|
||||
MigrationHierarchyRestriction.upsert_all(
|
||||
restrictions,
|
||||
unique_by: :index_work_item_hierarchy_restrictions_on_parent_and_child
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
a6a93982683fa9abb0e730ae6ba16f5ec06a9be75d1c0de1b4f4df0d1a660098
|
||||
|
|
@ -1,131 +1,11 @@
|
|||
---
|
||||
stage: Govern
|
||||
group: Compliance
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
redirect_to: '../user/compliance/audit_event_schema.md'
|
||||
remove_date: '2024-08-27'
|
||||
---
|
||||
|
||||
# Audit Event schema and examples
|
||||
This document was moved to [another location](../user/compliance/audit_event_schema.md).
|
||||
|
||||
## Audit Event schema
|
||||
|
||||
> - Documentation for an audit event streaming schema was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/358149) in GitLab 15.3.
|
||||
|
||||
Audit events have a predictable schema in the body of the response.
|
||||
|
||||
| Field | Description | Notes | Streaming Only Field |
|
||||
|------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
|
||||
| `author_id` | User ID of the user who triggered the event | | **{dotted-circle}** No |
|
||||
| `author_name` | Human-readable name of the author that triggered the event | Helpful when the author no longer exists | **{check-circle}** Yes |
|
||||
| `created_at` | Timestamp when event was triggered | | **{dotted-circle}** No |
|
||||
| `details` | JSON object containing additional metadata | Has no defined schema but often contains additional information about an event | **{dotted-circle}** No |
|
||||
| `entity_id` | ID of the audit event's entity | | **{dotted-circle}** No |
|
||||
| `entity_path` | Full path of the entity affected by the auditable event | | **{check-circle}** Yes |
|
||||
| `entity_type` | String representation of the type of entity | Acceptable values include `User`, `Group`, and `Key`. This list is not exhaustive | **{dotted-circle}** No |
|
||||
| `event_type` | String representation of the type of audit event | | **{check-circle}** Yes |
|
||||
| `id` | Unique identifier for the audit event | Can be used for deduplication if required | **{dotted-circle}** No |
|
||||
| `ip_address` | IP address of the host used to trigger the event | | **{check-circle}** Yes |
|
||||
| `target_details` | Additional details about the target | | **{check-circle}** Yes |
|
||||
| `target_id` | ID of the audit event's target | | **{check-circle}** Yes |
|
||||
| `target_type` | String representation of the target's type | | **{check-circle}** Yes |
|
||||
|
||||
### Audit Event JSON schema
|
||||
|
||||
```json
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"author_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"author_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"details": {},
|
||||
"ip_address": {
|
||||
"type": "string"
|
||||
},
|
||||
"entity_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"entity_path": {
|
||||
"type": "string"
|
||||
},
|
||||
"entity_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"target_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_details": {
|
||||
"type": "string"
|
||||
},
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
```
|
||||
|
||||
### Headers
|
||||
|
||||
> - `X-Gitlab-Audit-Event-Type` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86881) in GitLab 15.0.
|
||||
|
||||
Headers are formatted as follows:
|
||||
|
||||
```plaintext
|
||||
POST /logs HTTP/1.1
|
||||
Host: <DESTINATION_HOST>
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
X-Gitlab-Event-Streaming-Token: <DESTINATION_TOKEN>
|
||||
X-Gitlab-Audit-Event-Type: repository_git_operation
|
||||
```
|
||||
|
||||
## Example: audit event streaming on Git operations
|
||||
|
||||
Streaming audit events can be sent when authenticated users push, pull, or clone a project's remote Git repositories:
|
||||
|
||||
- [Using SSH](../user/ssh.md).
|
||||
- Using HTTP or HTTPS.
|
||||
- Using **Download** (**{download}**) in GitLab UI.
|
||||
|
||||
Audit events are not captured for users that are not signed in. For example, when downloading a public project.
|
||||
|
||||
### Example: audit event payloads for Git over SSH events with Deploy Key
|
||||
|
||||
Fetch:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "1",
|
||||
"author_id": -3,
|
||||
"entity_id": 29,
|
||||
"entity_type": "Project",
|
||||
"details": {
|
||||
"author_name": "deploy-key-name",
|
||||
"author_class": "DeployKey",
|
||||
"target_id": 29,
|
||||
"target_type": "Project",
|
||||
"target_details": "example-project",
|
||||
"custom_message": {
|
||||
"protocol": "ssh",
|
||||
"action": "git-upload-pack"
|
||||
},
|
||||
"ip_address": "127.0.0.1",
|
||||
"entity_path": "example-group/example-project"
|
||||
},
|
||||
"ip_address": "127.0.0.1",
|
||||
"author_name": "deploy-key-name",
|
||||
"entity_path": "example-group/example-project",
|
||||
"target_details": "example-project",
|
||||
"created_at": "2022-07-26T05:43:53.662Z",
|
||||
"target_type": "Project",
|
||||
"target_id": 29,
|
||||
"event_type": "repository_git_operation"
|
||||
}
|
||||
```
|
||||
<!-- This redirect file can be deleted after <2024-08-27>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
||||
|
|
|
|||
|
|
@ -1,534 +1,11 @@
|
|||
---
|
||||
stage: Govern
|
||||
group: Compliance
|
||||
info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments"
|
||||
redirect_to: '../user/compliance/audit_event_types.md'
|
||||
remove_date: '2024-08-23'
|
||||
---
|
||||
|
||||
<!--
|
||||
This documentation is auto generated by a Rake task.
|
||||
This document was moved to [another location](../user/compliance/audit_event_types.md).
|
||||
|
||||
Please do not edit this file directly. To update this file, run:
|
||||
bundle exec rake gitlab:audit_event_types:compile_docs
|
||||
|
||||
To make changes to the output of the Rake task,
|
||||
edit `tooling/audit_events/docs/templates/audit_event_types.md.erb`.
|
||||
-->
|
||||
|
||||
# Audit event types
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Premium, Ultimate
|
||||
**Offering:** GitLab.com, Self-managed
|
||||
|
||||
Audit event types are used to [filter streamed audit events](audit_event_streaming/index.md#update-event-filters).
|
||||
|
||||
Every audit event is associated with an event type. Audit event types can allow audit events to be:
|
||||
|
||||
- Saved to the database. Available in the Premium and Ultimate tier. You can retrieve audit events associated with these
|
||||
types by using the audit events dashboard or the [audit events API](../api/audit_events.md).
|
||||
- Streamed to external destinations. Available in the Ultimate tier. You can stream audit events associated with these
|
||||
types [to external destinations](../index.md) if a destination is set.
|
||||
|
||||
Some audit event types don't allow saving audit events to the database. Other audit event types don't allow streaming
|
||||
audit events to external destinations.
|
||||
|
||||
An audit event type's scope limits the availability of the audit event type to either project, group,
|
||||
or instance and user audit events. You can see the audit events in [audit event reports](audit_event_reports.md).
|
||||
|
||||
## Available audit event types
|
||||
|
||||
Audit event types belong to the following product categories.
|
||||
|
||||
### Ai framework
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`duo_features_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145509) | GitLab Duo Features enabled setting on group or project changed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.10](https://gitlab.com/gitlab-org/gitlab/-/issues/442485) | Group, Project |
|
||||
|
||||
### Audit events
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`amazon_s3_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132443) | Triggered when Amazon S3 configuration for audit events streaming is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423229) | Group |
|
||||
| [`amazon_s3_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/133695) | Triggered when Amazon S3 configuration for audit events streaming is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423229) | Group |
|
||||
| [`amazon_s3_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/133691) | Triggered when Amazon S3 configuration for audit events streaming is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423229) | Group |
|
||||
| [`audit_events_streaming_headers_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | Group |
|
||||
| [`audit_events_streaming_headers_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | Group |
|
||||
| [`audit_events_streaming_instance_headers_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125870) | Triggered when a streaming header for instance level external audit event destination is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | Instance |
|
||||
| [`audit_events_streaming_instance_headers_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127228) | Triggered when a streaming header for instance level external audit event destination is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | Instance |
|
||||
| [`audit_events_streaming_instance_headers_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127228) | Triggered when a streaming header for instance level external audit event destination is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | Instance |
|
||||
| [`create_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74632) | Event triggered when an external audit event destination is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/344664) | Group |
|
||||
| [`create_http_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136047) | Event triggered when a namespace filter for an external audit event destination for a top-level group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/424176) | Group |
|
||||
| [`create_instance_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123882) | Event triggered when an instance level external audit event destination is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/gitlab/-/issues/404730) | Instance |
|
||||
| [`created_group_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147888) | Event triggered when an external audit event destination for a top-level group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436610) | Group |
|
||||
| [`created_group_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150712) | Event triggered when a namespace filter for an external audit event destination for a top-level group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/436612) | Group |
|
||||
| [`created_instance_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148383) | Event triggered when an external audit event destination for a GitLab instance is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436615) | Instance |
|
||||
| [`delete_http_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136302) | Event triggered when a namespace filter for an external audit event destination for a top-level group is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/424177) | Group |
|
||||
| [`deleted_group_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148738) | Event triggered when an external audit event destination for a top-level group is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436610) | Group |
|
||||
| [`deleted_group_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150712) | Event triggered when a namespace filter for an external audit event destination for a top-level group is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/436612) | Group |
|
||||
| [`deleted_instance_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/14910) | Event triggered when an external audit event destination for a GitLab instance is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436615) | Instance |
|
||||
| [`destroy_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74632) | Event triggered when an external audit event destination is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/344664) | Group |
|
||||
| [`destroy_instance_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125846) | Event triggered when an instance level external audit event destination is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/gitlab/-/issues/404730) | Instance |
|
||||
| [`event_type_filters_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113081) | Event triggered when a new audit events streaming event type filter is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/344848) | Group |
|
||||
| [`event_type_filters_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113489) | Event triggered when audit events streaming event type filters are deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/344848) | Group |
|
||||
| [`google_cloud_logging_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122025) | Triggered when Google Cloud Logging configuration is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/409422) | Group |
|
||||
| [`google_cloud_logging_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122025) | Triggered when Google Cloud Logging configuration is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/409422) | Group |
|
||||
| [`google_cloud_logging_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122025) | Triggered when Google Cloud Logging configuration is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/409422) | Group |
|
||||
| [`instance_amazon_s3_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137651) | Triggered when instance Amazon S3 configuration for audit events streaming is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/423235) | Instance |
|
||||
| [`instance_amazon_s3_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138318) | Triggered when instance-level Amazon S3 configuration for audit events streaming is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/423235) | Instance |
|
||||
| [`instance_amazon_s3_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138310) | Triggered when instance-level Amazon S3 configuration for audit events streaming is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/423235) | Instance |
|
||||
| [`instance_google_cloud_logging_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130663) | Triggered when Instance level Google Cloud Logging configuration is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/423038) | Instance |
|
||||
| [`instance_google_cloud_logging_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131752) | Triggered when instance level Google Cloud Logging configuration is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423040) | Instance |
|
||||
| [`instance_google_cloud_logging_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131790) | Triggered when instance level Google Cloud Logging configuration is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423039) | Instance |
|
||||
| [`update_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74632) | Event triggered when an external audit event destination is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/344664) | Group |
|
||||
| [`update_instance_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125846) | Event triggered when an instance level external audit event destination is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/gitlab/-/issues/404730) | Instance |
|
||||
| [`updated_group_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148388) | Event triggered when an external audit event destination for a top-level group is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436610) | Group |
|
||||
| [`updated_instance_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149104) | Event triggered when an external audit event destination for a GitLab instance is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436615) | Instance |
|
||||
|
||||
### Build artifacts
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`job_artifact_downloaded`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129608) | Triggered when a user download a job artifact from a project| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.8](https://gitlab.com/gitlab-org/gitlab/-/issues/250663) | Project |
|
||||
|
||||
### Code review
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`delete_merge_request`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful merge request deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Project |
|
||||
|
||||
### Code review workflow
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`merge_request_approval_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92983) | Audit event triggered when a merge request is approved| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/10869) | Project |
|
||||
| [`merge_request_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`merge_request_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`merge_request_invalid_approver_rules`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/100496) | Audit event triggered for an invalid rule when merge request is approved| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.5](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/100496) | Project |
|
||||
| [`merge_request_merged_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is merged using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`merge_request_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`project_merge_requests_template_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Whenever a MR template is updated for a project, this audit event is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`project_remove_source_branch_after_merge_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | Create this audit event whenever a project has its setting to remove branches after merges modified| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
| [`project_reset_approvals_on_push_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66234) | Create this audit event whenever a project has its setting on whether approvals are reset on a push is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.2](https://gitlab.com/gitlab-org/gitlab/-/issues/336211) | Project |
|
||||
| [`selective_code_owner_removals_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148743) | Event triggered when selective code owner removal is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/327562) | Project |
|
||||
|
||||
### Code suggestions
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`project_suggestion_commit_message_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | Create this audit event whenever a project has its suggested commit message updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
|
||||
### Compliance management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`add_gpg_key`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111744) | Event triggered when a GPG Key is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373961) | User |
|
||||
| [`allow_author_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating prevent merge request approval from authors from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`allow_committer_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating prevent merge request approval from committers from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`allow_overrides_to_approver_list_per_merge_request_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating prevent users from modifying MR approval rules in merge requests from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`audit_events_streaming_headers_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | Group |
|
||||
| [`compliance_framework_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65343) | Triggered when a framework gets removed from a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/329362) | Project |
|
||||
| [`compliance_framework_id_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94711) | audit when compliance framework ID is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369310) | Project |
|
||||
| [`create_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | Triggered on successful compliance framework creation| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
|
||||
| [`create_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Event triggered when an external status check is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`delete_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Event triggered when an external status check is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`destroy_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | Triggered on successful compliance framework deletion| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
|
||||
| [`email_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114546) | Event triggered when an email is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`email_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114546) | Event triggered when an email is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`external_status_check_name_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106095) | Event triggered on updating name of a external status check| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369333) | Project |
|
||||
| [`external_status_check_url_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Whenever the URL that is used for external status checks for a pipeline is updated, this audit event is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`group_deletion_marked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is marked for deletion.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | Group |
|
||||
| [`group_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is destroyed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | Group |
|
||||
| [`group_restored`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is restored.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | Group |
|
||||
| [`group_saml_provider_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111227) | Event triggered when a group SAML provider is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373964) | Group |
|
||||
| [`group_saml_provider_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111227) | Event triggered when a group SAML provider is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373964) | Group |
|
||||
| [`inactive_project_scheduled_for_deletion`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130699) | Triggered when inactive project is scheduled for deletion| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/423263) | Project |
|
||||
| [`member_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109711) | Event triggered when a membership is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374112) | Group, Project |
|
||||
| [`member_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109711) | Event triggered when a membership is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374112) | Group, Project |
|
||||
| [`member_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109711) | Event triggered when a membership is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374112) | Group, Project |
|
||||
| [`merge_request_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90911) | Event triggered when a Merge Request is created| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/367239) | Project |
|
||||
| [`omniauth_login_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123080) | Event triggered when an OmniAuth login fails| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`password_reset_requested`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114548) | Event triggered when a user requests a password reset using a registered email address| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`personal_access_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108952) | Event triggered when a user creates a personal access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374113) | User |
|
||||
| [`personal_access_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108952) | Event triggered when a personal access token is revoked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374113) | User |
|
||||
| [`project_archived`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is archived.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_deletion_marked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117546) | Event triggered when a project is marked for deletion.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117546) | Event triggered when a project is destroyed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Group |
|
||||
| [`project_export_file_download_started`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when download of project export file gets started.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_group_link_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108918) | Event triggered when a group is invited to a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374114) | Group |
|
||||
| [`project_group_link_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108918) | Event triggered when a project group link is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374114) | Group |
|
||||
| [`project_group_link_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108918) | Event triggered when a project group link is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374114) | Project |
|
||||
| [`project_imported`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is imported.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Group |
|
||||
| [`project_restored`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is restored.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_unarchived`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is unarchived.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`protected_branch_allow_force_push_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68869) | This audit event is created when a protected branch has its ability to allow force pushes is toggled| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.3](https://gitlab.com/gitlab-org/gitlab/-/issues/338873) | Project |
|
||||
| [`public_repository_download_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149842) | Event triggered when a Git repository for a public project is downloaded| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/383218) | Project |
|
||||
| [`registration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123080) | Event triggered when a user registers for instance access| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`release_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`release_deleted_audit_event`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`release_milestones_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release's associated milestones are updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`release_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`remove_gpg_key`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111744) | Event triggered when a GPG Key is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373961) | User |
|
||||
| [`repository_download_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111218) | Event triggered when a Git repository for a private or internal project is downloaded| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374108) | Project |
|
||||
| [`require_password_to_approve_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating require user password for approvals from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`retain_approvals_on_push_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating require new approvals when new commits are added to an MR from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`saml_group_links_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110525) | Event triggered when a SAML Group Link is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373954) | Group |
|
||||
| [`saml_group_links_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110525) | Event triggered when a SAML Group Link is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373954) | Group |
|
||||
| [`smartcard_authentication_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8120) | Event triggered when a user authenticates with smartcard| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/726) | User |
|
||||
| [`update_approval_rules`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89939) | Event triggered on updating a merge approval rule| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363092) | Project |
|
||||
| [`update_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | Triggered when a compliance framework is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
|
||||
| [`update_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Event triggered when an external status check is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
|
||||
### Continuous delivery
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`deploy_key_added`](https://gitlab.com/gitlab-org/gitlab/-/commit/08586a616909c7f9efe2210c2b74fd3422d4eb62) | Triggered when deploy key is added| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_key_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92219) | Audit event triggered when deploy key is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Audit event triggered when deploy token is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Audit event triggered when deploy token fails to create| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Audit event triggered when deploy token is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Triggered when project deploy token is revoked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deployment_approved`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153375) | Triggered when a deployment is approved| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.1](https://gitlab.com/gitlab-org/gitlab/-/issues/456685) | Project |
|
||||
| [`deployment_rejected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153375) | Triggered when a deployment is rejected| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.1](https://gitlab.com/gitlab-org/gitlab/-/issues/456685) | Project |
|
||||
| [`group_deploy_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when a groups deploy token is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_deploy_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when a groups deploy token fails to create| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_deploy_token_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when group deploy token is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_deploy_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when group deploy token is revoked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
|
||||
### Continuous integration
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`allow_merge_on_skipped_pipeline_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | There is a project setting which toggles the ability to merge when a pipeline is skipped. This audit event tracks changes to that setting. This MR adds a setting to allow this (like previous GitLab versions).| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
| [`ci_group_variable_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a CI variable is created at a group level| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Group |
|
||||
| [`ci_group_variable_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a group's CI variable is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Group |
|
||||
| [`ci_group_variable_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a group's CI variable is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Group |
|
||||
| [`ci_instance_variable_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131882) | When an instance level CI variable is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/8070) | Instance |
|
||||
| [`ci_instance_variable_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131882) | When an instance level CI variable is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/8070) | Instance |
|
||||
| [`ci_instance_variable_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131882) | When an instance level CI variable is changed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/8070) | Instance |
|
||||
| [`ci_variable_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a CI variable is created at a project level| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Project |
|
||||
| [`ci_variable_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a project's CI variable is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Project |
|
||||
| [`ci_variable_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a project's CI variable is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Project |
|
||||
| [`destroy_pipeline`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135255) | Event triggered when a pipeline is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/339041) | Project |
|
||||
|
||||
### Deployment management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`cluster_agent_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112036) | Event triggered when a user creates a cluster agent token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/382133) | Project |
|
||||
| [`cluster_agent_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112036) | Event triggered when a user revokes a cluster agent token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/382133) | Project |
|
||||
|
||||
### Dynamic application security testing
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`dast_profile_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62604) | Triggered when a dynamic application security testing profile is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_profile_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62604) | Triggered when a dynamic application security profile is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_profile_schedule_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68046) | Triggered when a dynamic application security testing profile schedule is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.3](https://gitlab.com/gitlab-org/gitlab/-/issues/330308) | Project |
|
||||
| [`dast_profile_schedule_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66445) | Triggered when a dynamic application security testing profile schedule is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.3](https://gitlab.com/gitlab-org/gitlab/-/issues/330308) | Project |
|
||||
| [`dast_profile_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62604) | Triggered when a dynamic application security profile is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_scanner_profile_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62007) | Triggered when a dynamic application security testing scanner profile is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_scanner_profile_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62007) | Triggered when a dynamic application security testing scanner profile is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_scanner_profile_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62007) | Triggered when a dynamic application security testing scanner profile is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_site_profile_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62465) | Triggered when a dynamic application security testing site profile is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_site_profile_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62465) | Triggered when a dynamic application security testing site profile is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_site_profile_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62465) | Triggered when a dynamic application security testing site profile is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
|
||||
### Environment management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`environment_protected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108247) | This event is triggered when a protected environment is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/216164) | Group, Project |
|
||||
| [`environment_unprotected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108247) | This event is triggered when a protected environment is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/216164) | Group, Project |
|
||||
| [`protected_environment_approval_rule_added`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when an approval rule is added to a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
| [`protected_environment_approval_rule_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when an approval rule is removed from a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Project, Group |
|
||||
| [`protected_environment_approval_rule_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when an approval rule of a protected environment is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Project, Group |
|
||||
| [`protected_environment_deploy_access_level_added`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a deploy access level is added to a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
| [`protected_environment_deploy_access_level_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a deploy access level is removed from a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
| [`protected_environment_deploy_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a deploy access level of a protected environment is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Project |
|
||||
| [`protected_environment_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a protected environment is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
|
||||
### Feature flags
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`feature_flag_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113453) | Triggered when a feature flag is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374109) | Project |
|
||||
| [`feature_flag_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113453) | Triggered when a feature flag is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374109) | Project |
|
||||
| [`feature_flag_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113453) | Triggered when a feature flag is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374109) | Project |
|
||||
|
||||
### Fleet visibility
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`ci_runner_usage_export`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139578) | Triggered when a runner usage report is generated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.8](https://gitlab.com/gitlab-org/gitlab/-/issues/426560) | Instance |
|
||||
|
||||
### Fuzz testing
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`coverage_fuzzing_corpus_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71992) | Event triggered on a corpus action is added| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.5](https://gitlab.com/gitlab-org/gitlab/-/issues/341485) | Project |
|
||||
|
||||
### Groups and projects
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`create_ssh_certificate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134556) | Event triggered when an SSH certificate is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/427413) | Group |
|
||||
| [`delete_ssh_certificate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134556) | Event triggered when an SSH certificate is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/427413) | Group |
|
||||
| [`group_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121005) | Event triggered when a group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/411595) | Group |
|
||||
| [`group_lfs_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups lfs enabled is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369323) | Group |
|
||||
| [`group_membership_lock_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups membership lock is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369323) | Group |
|
||||
| [`group_merge_request_approval_setting_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87880) | Triggered when merge request approval settings are added on a group level.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/356152) | Group |
|
||||
| [`group_name_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups name is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369320) | Group |
|
||||
| [`group_path_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups path is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369321) | Group |
|
||||
| [`group_project_creation_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups project creation level is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369327) | Group |
|
||||
| [`group_repository_size_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups repository size limit is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369322) | Group |
|
||||
| [`group_request_access_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups request access enabled is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369323) | Group |
|
||||
| [`group_require_two_factor_authentication_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups require two factor authentication setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369325) | Group |
|
||||
| [`group_share_with_group_link_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112719) | This event is triggered when you proceed to invite a group to another group via the 'invite group' tab on the group's membership page| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/327909) | Group |
|
||||
| [`group_share_with_group_link_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112719) | This event is triggered when you proceed to invite a group to another group via the 'invite group' tab on the group's membership page| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/327909) | Group |
|
||||
| [`group_share_with_group_link_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112719) | This event is triggered when you proceed to invite a group to another group via the 'invite group' tab on the group's membership page| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/327909) | Group |
|
||||
| [`group_shared_runners_minutes_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups shared runners minutes limit is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369324) | Group |
|
||||
| [`group_two_factor_grace_period_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups two factor grace period is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369326) | Group |
|
||||
| [`group_visibility_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups visibility level is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369322) | Group |
|
||||
| [`merge_commit_template_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107533) | audit when merge commit template is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369314) | Project |
|
||||
| [`project_cicd_merge_pipelines_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107428) | audit when project cicd merge pipelines setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369317) | Project |
|
||||
| [`project_cicd_merge_trains_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107428) | Event triggered on updating project setting for enabling ci cd merge trains| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369317) | Project |
|
||||
| [`project_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117543) | Event triggered when a project is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_default_branch_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117543) | Event triggered when default branch of a project's repository is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_description_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128978) | Triggered when a project's description is updated| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/377769) | Project |
|
||||
| [`project_disable_overriding_approvers_per_merge_request_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project disable overriding approvers per mr setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_feature_analytics_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's analytics access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369299) | Project |
|
||||
| [`project_feature_builds_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's builds access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369294) | Project |
|
||||
| [`project_feature_container_registry_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's container registry access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369303) | Project |
|
||||
| [`project_feature_environments_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's environments access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369307) | Project |
|
||||
| [`project_feature_feature_flags_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's feature flags access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369306) | Project |
|
||||
| [`project_feature_forking_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's feature forking access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369290) | Project |
|
||||
| [`project_feature_infrastructure_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's infrastructure access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369305) | Project |
|
||||
| [`project_feature_issues_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's issues access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369289) | Project |
|
||||
| [`project_feature_merge_requests_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's merge request access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369289) | Project |
|
||||
| [`project_feature_metrics_dashboard_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's metrics dashboard access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369289) | Project |
|
||||
| [`project_feature_monitor_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's monitor access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369304) | Project |
|
||||
| [`project_feature_operations_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's operation access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369300) | Project |
|
||||
| [`project_feature_package_registry_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's package registry access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369296) | Project |
|
||||
| [`project_feature_pages_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's page access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369297) | Project |
|
||||
| [`project_feature_releases_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's releases access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369308) | Project |
|
||||
| [`project_feature_repository_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's repository access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369295) | Project |
|
||||
| [`project_feature_requirements_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's requirements access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369301) | Project |
|
||||
| [`project_feature_security_and_compliance_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's security and compliance access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369302) | Project |
|
||||
| [`project_feature_snippets_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's snippet access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369293) | Project |
|
||||
| [`project_feature_wiki_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's wiki access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369292) | Project |
|
||||
| [`project_merge_method_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | Triggered when a project's merge request method has been changed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
| [`project_merge_requests_author_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project mr author approval setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_merge_requests_disable_committers_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating project setting for disabling committers approval on merge requests| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369277) | Project |
|
||||
| [`project_name_updated`](https://gitlab.com/gitlab-org/gitlab/-/commit/8c0b52247e717cf84bc7b248d817f8baa55b18a4) | Create this audit event whenever a project has its name updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [10.2](https://gitlab.com/gitlab-org/gitlab/-/commit/8c0b52247e717cf84bc7b248d817f8baa55b18a4) | Project |
|
||||
| [`project_namespace_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project namespace is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_only_allow_merge_if_all_discussions_are_resolved_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating project setting for allowing merge only when all discussions are resolved| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369286) | Project |
|
||||
| [`project_only_allow_merge_if_pipeline_succeeds_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project only allow merge if pipeline succeeds setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_packages_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/7962) | When the setting that controls packages for a project is toggled, this audit event is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [11.5](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_path_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/100770) | Event triggered on updating a project's path| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.5](https://gitlab.com/gitlab-org/gitlab/-/issues/369271) | Project |
|
||||
| [`project_printing_merge_request_link_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating setting for projects for enabling printing merge request link| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369283) | Project |
|
||||
| [`project_repository_size_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating repository size limit of a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369274) | Project |
|
||||
| [`project_require_password_to_approve_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating project setting for requiring user's password for approval of merge request| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369280) | Project |
|
||||
| [`project_resolve_outdated_diff_discussions_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project resolve outdated diff discussions setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_security_setting_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150767) | Triggered when a project security setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/457024) | Project |
|
||||
| [`project_visibility_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project visiblity level setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`squash_commit_template_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107533) | Event triggered on updating the merge request squash commit template for a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369314) | Project |
|
||||
| [`squash_option_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Triggered when squash option setting has been changed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
|
||||
### Importers
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`group_export_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/TODO) | Triggered when a group file export is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/294168) | Group |
|
||||
| [`project_export_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/TODO) | Triggered when a project file export is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/294168) | Project |
|
||||
|
||||
### Incident management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`incident_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`incident_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`incident_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
|
||||
### MLOps
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`project_feature_model_experiments_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121027) | Model experiments access level was updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/412384) | Project |
|
||||
| [`project_feature_model_registry_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138399) | Model registry access level was updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/412734) | Project |
|
||||
|
||||
### Not categorized
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`experiment_features_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118222) | Event triggered on toggling setting for enabling experiment AI features| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/404856/) | Group |
|
||||
|
||||
### Permissions
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`member_role_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137087) | Event triggered when a custom role is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/388934) | Group, Instance |
|
||||
| [`member_role_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/141630) | Event triggered when a custom role is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.9](https://gitlab.com/gitlab-org/gitlab/-/issues/437672) | Group, Instance |
|
||||
| [`member_role_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/141630) | Event triggered when a custom role is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.9](https://gitlab.com/gitlab-org/gitlab/-/issues/437672) | Group, Instance |
|
||||
|
||||
### Portfolio management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`delete_epic`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful epic deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Group |
|
||||
| [`epic_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an epic is closed by a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Group |
|
||||
| [`epic_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an epic is created by a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Group |
|
||||
| [`epic_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an epic is reopened by a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Group |
|
||||
|
||||
### Project
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`project_access_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on creating a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`project_access_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to create a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`project_access_token_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on creating a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`project_access_token_deletion_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to delete a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
|
||||
### Quality management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`test_case_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a test case is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`test_case_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a test case is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`test_case_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a test case is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
|
||||
### Runner
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`set_runner_associated_projects`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97666) | Event triggered on successful assignment of associated projects to a CI runner| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/359958) | User |
|
||||
|
||||
### Secret detection
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`skip_pre_receive_secret_detection`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147855) | Triggered when secret push protection is skipped by the user| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/441185) | Project |
|
||||
|
||||
### Security policy management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`policy_project_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102154) | This event is triggered whenever the security policy project is updated for a project.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/377877) | Group, Project |
|
||||
|
||||
### Source code management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`approval_rule_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89939) | Triggered when a merge request approval rule is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363092) | Project |
|
||||
| [`approval_rule_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/82297) | Triggered on successful approval rule deletion| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.9](https://gitlab.com/gitlab-org/gitlab/-/issues/329514) | Project |
|
||||
| [`group_push_rules_author_email_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for author email regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369343) | Group |
|
||||
| [`group_push_rules_branch_name_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for branch name regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369340) | Group |
|
||||
| [`group_push_rules_commit_committer_check_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated for reject unverified users.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_commit_message_negative_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for commit message negative regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369342) | Group |
|
||||
| [`group_push_rules_commit_message_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for commit message regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369341) | Group |
|
||||
| [`group_push_rules_file_name_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for filename regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369344) | Group |
|
||||
| [`group_push_rules_max_file_size_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for max file size.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369345) | Group |
|
||||
| [`group_push_rules_prevent_secrets_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated to prevent pushing secret files.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_deny_delete_tag_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated to deny deletion of tags using Git push.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_member_check_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated to check if commit author is a GitLab user.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_non_dco_commits_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated for reject non DCO certified commits.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_unsigned_commits_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated for reject unsigned commits.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`merged_merge_request_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118793) | Audit event triggered when a merged merge request is deleted| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/408288) | Project |
|
||||
| [`merged_merge_request_deletion_started`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118793) | Audit event triggered when a merged merge request's deletion is started| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/408288) | Project |
|
||||
| [`project_fork_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90916) | Audit event triggered when a project is forked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90916) | Project |
|
||||
| [`project_fork_relationship_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/101017) | Event triggered on successful removal of project's fork relationship| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/272532) | Project |
|
||||
| [`project_push_rules_commit_committer_check_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132157) | Triggered when project push rule setting is updated for reject unverified users.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/268116) | Project |
|
||||
| [`protected_branch_code_owner_approval_required_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107530) | audit when protected branch code owner approval required setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369318) | Project |
|
||||
| [`protected_branch_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92074) | Triggered when a protected branch is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363091) | Project |
|
||||
| [`protected_branch_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92074) | Triggered when a protected branch is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363091) | Project |
|
||||
| [`protected_branch_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107530) | Event triggered on the setting for protected branches is update| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369318) | Project |
|
||||
| [`repository_git_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/76719) | Triggered when authenticated users push, pull, or clone a project using SSH, HTTP(S), or the UI| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [14.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373950) | Project |
|
||||
| [`manually_trigger_housekeeping`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112095) | Triggered when manually triggering housekeeping via API or admin UI| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/390761) | Project |
|
||||
| [`project_blobs_removal`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/152522) | Triggered when removing blobs via the GraphQL API or project settings UI| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/450701) | Project |
|
||||
|
||||
### Subgroup
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`group_access_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on creating a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_access_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failing to create a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_access_token_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on deleting a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_access_token_deletion_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to delete a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
|
||||
### System access
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`application_setting_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124639) | Triggered when Application setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/282428) | Instance |
|
||||
| [`ip_restrictions_changed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86037) | Event triggered on any changes in the IP AllowList| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/358986) | Group |
|
||||
| [`login_failed_with_otp_authentication`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129595) | Triggered when the login fails due to an incorrect OTP| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377758) | User |
|
||||
| [`login_failed_with_standard_authentication`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129595) | Triggered when login to GitLab fails with standard authentication like password.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377758) | Instance |
|
||||
| [`login_failed_with_webauthn_authentication`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129595) | Triggered when login fails via WebAuthn device| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377758) | User |
|
||||
| [`update_mismatched_group_saml_extern_uid`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/104791) | Triggered when the external UID is changed on a SAML identity.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/382256) | User |
|
||||
| [`user_access_locked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124169) | Event triggered when user access to the instance is locked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/modelops/anti-abuse/team-tasks/-/issues/244) | User |
|
||||
| [`user_access_unlocked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124973) | Event triggered when user access to the instance is unlocked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/modelops/anti-abuse/team-tasks/-/issues/244) | User |
|
||||
| [`user_disable_two_factor`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89598) | Audit event triggered when user disables two factor authentication| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/238177) | User |
|
||||
| [`user_enable_admin_mode`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/104754) | Event triggered on enabling Admin Mode| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/362101) | User |
|
||||
|
||||
### Team planning
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`comment_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a comment is added to an issue or an MR using the project access token| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`delete_issue`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful issue deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Project |
|
||||
| [`delete_work_item`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful work item deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Project |
|
||||
| [`issue_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an issue is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`issue_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an issue is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`issue_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an issue is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`task_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a task is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`task_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a task is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`task_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a task is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
|
||||
### User management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`authenticated_with_group_saml`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28575) | Triggered after successfully signing in with SAML authentication| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/35710) | Group |
|
||||
| [`ban_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116103) | Event triggered on user ban action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | User |
|
||||
| [`change_membership_state`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87924) | Event triggered on a users membership is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/362200) | Group |
|
||||
| [`password_reset_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129079) | Event triggered when a password reset fails for a user| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377762) | User |
|
||||
| [`unban_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116221) | Event triggered on user unban action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | User |
|
||||
| [`unblock_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115727) | Event triggered on user unblock action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | User |
|
||||
| [`user_activate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121708) | Event triggered on user activate action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/13473) | User |
|
||||
| [`user_approved`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is approved for an instance| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_blocked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is blocked| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_deactivate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117776) | Event triggered on user deactivate action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/13473) | User |
|
||||
| [`user_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is scheduled for removal from the instance| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_email_changed_and_user_signed_in`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106090) | audit when user emailed changed and user signed in| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369331) | User |
|
||||
| [`user_impersonation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/79340) | Triggered when an instance administrator starts or stops impersonating a user| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.8](https://gitlab.com/gitlab-org/gitlab/-/issues/300961) | User, Group |
|
||||
| [`user_password_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106086) | audit when user password is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369330) | User |
|
||||
| [`user_rejected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user registration is rejected| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
|
||||
### User profile
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`email_confirmation_sent`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129261) | Triggered when users add or change and email address and it needs to be confirmed.| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/377625) | User |
|
||||
| [`remove_ssh_key`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65615) | Audit event triggered when a SSH key is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/220127) | User |
|
||||
| [`user_admin_status_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65168) | Adds an audit event when a user is either made an administrator, or removed as an administrator| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323905) | User |
|
||||
| [`user_auditor_status_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136456) | Adds an audit event when a user is either made an auditor, or removed as an auditor| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/430235) | User |
|
||||
| [`user_email_address_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/2103) | Adds an audit event when a user updates their email address| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [10.1](https://gitlab.com/gitlab-org/gitlab-ee/issues/1370) | User |
|
||||
| [`user_profile_visiblity_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129149) | Triggered when user toggles private profile user setting| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129149) | User |
|
||||
| [`user_username_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106086) | Event triggered on updating a user's username| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369329) | User |
|
||||
|
||||
### Verify security
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`secure_ci_job_token_inbound_disabled`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when CI_JOB_TOKEN permissions disabled for inbound| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
| [`secure_ci_job_token_inbound_enabled`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when CI_JOB_TOKEN permissions enabled for inbound| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
| [`secure_ci_job_token_project_added`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when project added to inbound CI_JOB_TOKEN scope| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
| [`secure_ci_job_token_project_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when project removed from inbound CI_JOB_TOKEN scope| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
|
||||
### Webhooks
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`webhook_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102342) | Event triggered when a webhook is destroyed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/458817) | Project, Group, Instance |
|
||||
<!-- This redirect file can be deleted after <2024-08-23>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ For example, if the backup directory name is `1714053314_2024_04_25_17.0.0-pre`,
|
|||
|
||||
## Limitations
|
||||
|
||||
- The tool has only been tested on the [1K architecture](../reference_architectures/1k_users.md)
|
||||
- The tool has only been tested on the [1K architecture](../reference_architectures/1k_users.md)
|
||||
and therefore only recommended to be used on relevant environments.
|
||||
- The initial version doesn't use the [copy strategy](backup_gitlab.md#backup-strategy-option),
|
||||
so as long as there is nothing changing existing files while you perform the backup, you should be fine.
|
||||
|
|
|
|||
|
|
@ -16212,9 +16212,9 @@ Describes an alert from the project's Alert Management.
|
|||
| <a id="alertmanagementalerteventcount"></a>`eventCount` | [`Int`](#int) | Number of events of this alert. |
|
||||
| <a id="alertmanagementalerthosts"></a>`hosts` | [`[String!]`](#string) | List of hosts the alert came from. |
|
||||
| <a id="alertmanagementalertid"></a>`id` | [`ID!`](#id) | ID of the alert. |
|
||||
| <a id="alertmanagementalertiid"></a>`iid` | [`ID!`](#id) | Internal ID of the alert. |
|
||||
| <a id="alertmanagementalertiid"></a>`iid` | [`String!`](#string) | Internal ID of the alert. |
|
||||
| <a id="alertmanagementalertissue"></a>`issue` | [`Issue`](#issue) | Issue attached to the alert. |
|
||||
| <a id="alertmanagementalertissueiid"></a>`issueIid` **{warning-solid}** | [`ID`](#id) | **Deprecated** in GitLab 13.10. Use issue field. |
|
||||
| <a id="alertmanagementalertissueiid"></a>`issueIid` **{warning-solid}** | [`String`](#string) | **Deprecated** in GitLab 13.10. Use issue field. |
|
||||
| <a id="alertmanagementalertmetricsdashboardurl"></a>`metricsDashboardUrl` **{warning-solid}** | [`String`](#string) | **Deprecated** in GitLab 16.0. Returns no data. Underlying feature was removed in 16.0. |
|
||||
| <a id="alertmanagementalertmonitoringtool"></a>`monitoringTool` | [`String`](#string) | Monitoring tool the alert came from. |
|
||||
| <a id="alertmanagementalertprometheusalert"></a>`prometheusAlert` | [`PrometheusAlert`](#prometheusalert) | Alert condition for Prometheus. |
|
||||
|
|
@ -17066,7 +17066,7 @@ Represents an epic on an issue board.
|
|||
| <a id="boardepichasparent"></a>`hasParent` | [`Boolean!`](#boolean) | Indicates if the epic has a parent epic. |
|
||||
| <a id="boardepichealthstatus"></a>`healthStatus` | [`EpicHealthStatus`](#epichealthstatus) | Current health status of the epic. |
|
||||
| <a id="boardepicid"></a>`id` | [`ID!`](#id) | ID of the epic. |
|
||||
| <a id="boardepiciid"></a>`iid` | [`ID!`](#id) | Internal ID of the epic. |
|
||||
| <a id="boardepiciid"></a>`iid` | [`String!`](#string) | Internal ID of the epic. |
|
||||
| <a id="boardepicissues"></a>`issues` | [`EpicIssueConnection`](#epicissueconnection) | A list of issues associated with the epic. (see [Connections](#connections)) |
|
||||
| <a id="boardepiclabels"></a>`labels` | [`LabelConnection`](#labelconnection) | Labels assigned to the epic. (see [Connections](#connections)) |
|
||||
| <a id="boardepicparent"></a>`parent` | [`Epic`](#epic) | Parent epic of the epic. |
|
||||
|
|
@ -19537,7 +19537,7 @@ The deployment of an environment.
|
|||
| <a id="deploymentcreatedat"></a>`createdAt` | [`Time`](#time) | When the deployment record was created. |
|
||||
| <a id="deploymentfinishedat"></a>`finishedAt` | [`Time`](#time) | When the deployment finished. |
|
||||
| <a id="deploymentid"></a>`id` | [`ID`](#id) | Global ID of the deployment. |
|
||||
| <a id="deploymentiid"></a>`iid` | [`ID`](#id) | Project-level internal ID of the deployment. |
|
||||
| <a id="deploymentiid"></a>`iid` | [`String`](#string) | Project-level internal ID of the deployment. |
|
||||
| <a id="deploymentjob"></a>`job` | [`CiJob`](#cijob) | Pipeline job of the deployment. |
|
||||
| <a id="deploymentpendingapprovalcount"></a>`pendingApprovalCount` | [`Int`](#int) | Number of pending unified approvals on the deployment. |
|
||||
| <a id="deploymentref"></a>`ref` | [`String`](#string) | Git-Ref that the deployment ran on. |
|
||||
|
|
@ -20266,7 +20266,7 @@ Represents an epic.
|
|||
| <a id="epichasparent"></a>`hasParent` | [`Boolean!`](#boolean) | Indicates if the epic has a parent epic. |
|
||||
| <a id="epichealthstatus"></a>`healthStatus` | [`EpicHealthStatus`](#epichealthstatus) | Current health status of the epic. |
|
||||
| <a id="epicid"></a>`id` | [`ID!`](#id) | ID of the epic. |
|
||||
| <a id="epiciid"></a>`iid` | [`ID!`](#id) | Internal ID of the epic. |
|
||||
| <a id="epiciid"></a>`iid` | [`String!`](#string) | Internal ID of the epic. |
|
||||
| <a id="epicissues"></a>`issues` | [`EpicIssueConnection`](#epicissueconnection) | A list of issues associated with the epic. (see [Connections](#connections)) |
|
||||
| <a id="epiclabels"></a>`labels` | [`LabelConnection`](#labelconnection) | Labels assigned to the epic. (see [Connections](#connections)) |
|
||||
| <a id="epicparent"></a>`parent` | [`Epic`](#epic) | Parent epic of the epic. |
|
||||
|
|
@ -20528,7 +20528,7 @@ Relationship between an epic and an issue.
|
|||
| <a id="epicissuehumantimeestimate"></a>`humanTimeEstimate` | [`String`](#string) | Human-readable time estimate of the issue. |
|
||||
| <a id="epicissuehumantotaltimespent"></a>`humanTotalTimeSpent` | [`String`](#string) | Human-readable total time reported as spent on the issue. |
|
||||
| <a id="epicissueid"></a>`id` | [`ID`](#id) | Global ID of the epic-issue relation. |
|
||||
| <a id="epicissueiid"></a>`iid` | [`ID!`](#id) | Internal ID of the issue. |
|
||||
| <a id="epicissueiid"></a>`iid` | [`String!`](#string) | Internal ID of the issue. |
|
||||
| <a id="epicissueiteration"></a>`iteration` | [`Iteration`](#iteration) | Iteration of the issue. |
|
||||
| <a id="epicissuelabels"></a>`labels` | [`LabelConnection`](#labelconnection) | Labels of the issue. (see [Connections](#connections)) |
|
||||
| <a id="epicissuemergerequestscount"></a>`mergeRequestsCount` | [`Int!`](#int) | Number of merge requests that close the issue on merge. |
|
||||
|
|
@ -23080,7 +23080,7 @@ Describes an incident management on-call schedule.
|
|||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="incidentmanagementoncallscheduledescription"></a>`description` | [`String`](#string) | Description of the on-call schedule. |
|
||||
| <a id="incidentmanagementoncallscheduleiid"></a>`iid` | [`ID!`](#id) | Internal ID of the on-call schedule. |
|
||||
| <a id="incidentmanagementoncallscheduleiid"></a>`iid` | [`String!`](#string) | Internal ID of the on-call schedule. |
|
||||
| <a id="incidentmanagementoncallschedulename"></a>`name` | [`String!`](#string) | Name of the on-call schedule. |
|
||||
| <a id="incidentmanagementoncallscheduleoncallusers"></a>`oncallUsers` | [`[UserCore!]`](#usercore) | |
|
||||
| <a id="incidentmanagementoncallschedulerotations"></a>`rotations` | [`IncidentManagementOncallRotationConnection!`](#incidentmanagementoncallrotationconnection) | On-call rotations for the on-call schedule. (see [Connections](#connections)) |
|
||||
|
|
@ -23333,7 +23333,7 @@ Describes an issuable resource link for incident issues.
|
|||
| <a id="issuehumantimeestimate"></a>`humanTimeEstimate` | [`String`](#string) | Human-readable time estimate of the issue. |
|
||||
| <a id="issuehumantotaltimespent"></a>`humanTotalTimeSpent` | [`String`](#string) | Human-readable total time reported as spent on the issue. |
|
||||
| <a id="issueid"></a>`id` | [`ID!`](#id) | ID of the issue. |
|
||||
| <a id="issueiid"></a>`iid` | [`ID!`](#id) | Internal ID of the issue. |
|
||||
| <a id="issueiid"></a>`iid` | [`String!`](#string) | Internal ID of the issue. |
|
||||
| <a id="issueiteration"></a>`iteration` | [`Iteration`](#iteration) | Iteration of the issue. |
|
||||
| <a id="issuelabels"></a>`labels` | [`LabelConnection`](#labelconnection) | Labels of the issue. (see [Connections](#connections)) |
|
||||
| <a id="issuemergerequestscount"></a>`mergeRequestsCount` | [`Int!`](#int) | Number of merge requests that close the issue on merge. |
|
||||
|
|
@ -23495,7 +23495,7 @@ Represents an iteration object.
|
|||
| <a id="iterationdescriptionhtml"></a>`descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. |
|
||||
| <a id="iterationduedate"></a>`dueDate` | [`Time`](#time) | Timestamp of the iteration due date. |
|
||||
| <a id="iterationid"></a>`id` | [`ID!`](#id) | ID of the iteration. |
|
||||
| <a id="iterationiid"></a>`iid` | [`ID!`](#id) | Internal ID of the iteration. |
|
||||
| <a id="iterationiid"></a>`iid` | [`String!`](#string) | Internal ID of the iteration. |
|
||||
| <a id="iterationiterationcadence"></a>`iterationCadence` | [`IterationCadence!`](#iterationcadence) | Cadence of the iteration. |
|
||||
| <a id="iterationscopedpath"></a>`scopedPath` | [`String`](#string) | Web path of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. |
|
||||
| <a id="iterationscopedurl"></a>`scopedUrl` | [`String`](#string) | Web URL of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. |
|
||||
|
|
@ -25503,7 +25503,7 @@ Represents a metric image upload.
|
|||
| <a id="metricimagefilename"></a>`fileName` | [`String`](#string) | File name of the metric image. |
|
||||
| <a id="metricimagefilepath"></a>`filePath` | [`String`](#string) | File path of the metric image. |
|
||||
| <a id="metricimageid"></a>`id` | [`ID!`](#id) | ID of the metric upload. |
|
||||
| <a id="metricimageiid"></a>`iid` | [`ID!`](#id) | Internal ID of the metric upload. |
|
||||
| <a id="metricimageiid"></a>`iid` | [`String!`](#string) | Internal ID of the metric upload. |
|
||||
| <a id="metricimageurl"></a>`url` | [`String!`](#string) | URL of the metric source. |
|
||||
|
||||
### `MetricsDashboardAnnotation`
|
||||
|
|
@ -29740,7 +29740,7 @@ Represents a requirement.
|
|||
| <a id="requirementdescription"></a>`description` | [`String`](#string) | Description of the requirement. |
|
||||
| <a id="requirementdescriptionhtml"></a>`descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. |
|
||||
| <a id="requirementid"></a>`id` | [`ID!`](#id) | ID of the requirement. |
|
||||
| <a id="requirementiid"></a>`iid` **{warning-solid}** | [`ID!`](#id) | **Deprecated** in GitLab 15.8. Use work_item_iid instead. |
|
||||
| <a id="requirementiid"></a>`iid` **{warning-solid}** | [`String!`](#string) | **Deprecated** in GitLab 15.8. Use work_item_iid instead. |
|
||||
| <a id="requirementlasttestreportmanuallycreated"></a>`lastTestReportManuallyCreated` | [`Boolean`](#boolean) | Indicates if latest test report was created by user. |
|
||||
| <a id="requirementlasttestreportstate"></a>`lastTestReportState` | [`TestReportState`](#testreportstate) | Latest requirement test report state. |
|
||||
| <a id="requirementproject"></a>`project` | [`Project!`](#project) | Project to which the requirement belongs. |
|
||||
|
|
@ -29749,7 +29749,7 @@ Represents a requirement.
|
|||
| <a id="requirementtitlehtml"></a>`titleHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `title`. |
|
||||
| <a id="requirementupdatedat"></a>`updatedAt` | [`Time!`](#time) | Timestamp of when the requirement was last updated. |
|
||||
| <a id="requirementuserpermissions"></a>`userPermissions` | [`RequirementPermissions!`](#requirementpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="requirementworkitemiid"></a>`workItemIid` | [`ID!`](#id) | Work item IID of the requirement, will replace current IID as identifier soon. |
|
||||
| <a id="requirementworkitemiid"></a>`workItemIid` | [`String!`](#string) | Work item IID of the requirement, will replace current IID as identifier soon. |
|
||||
|
||||
#### Fields with arguments
|
||||
|
||||
|
|
@ -32072,7 +32072,7 @@ Represents vulnerability letter grades with associated projects.
|
|||
| <a id="workitemdescription"></a>`description` | [`String`](#string) | Description of the work item. |
|
||||
| <a id="workitemdescriptionhtml"></a>`descriptionHtml` | [`String`](#string) | GitLab Flavored Markdown rendering of `description`. |
|
||||
| <a id="workitemid"></a>`id` | [`WorkItemID!`](#workitemid) | Global ID of the work item. |
|
||||
| <a id="workitemiid"></a>`iid` | [`ID!`](#id) | Internal ID of the work item. |
|
||||
| <a id="workitemiid"></a>`iid` | [`String!`](#string) | Internal ID of the work item. |
|
||||
| <a id="workitemlockversion"></a>`lockVersion` | [`Int!`](#int) | Lock version of the work item. Incremented each time the work item is updated. |
|
||||
| <a id="workitemnamespace"></a>`namespace` **{warning-solid}** | [`Namespace`](#namespace) | **Introduced** in GitLab 15.10. **Status**: Experiment. Namespace the work item belongs to. |
|
||||
| <a id="workitemproject"></a>`project` **{warning-solid}** | [`Project`](#project) | **Introduced** in GitLab 15.3. **Status**: Experiment. Project the work item belongs to. |
|
||||
|
|
|
|||
|
|
@ -549,7 +549,7 @@ curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://git
|
|||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86705) in GitLab 15.0.
|
||||
|
||||
Changes the membership state of a user in a group.
|
||||
Changes the membership state of a user in a group.
|
||||
When a user is over [the free user limit](../user/free_user_limit.md), changing their membership state for a group or project to `awaiting` or `active` can allow them to
|
||||
access that group or project. The change is applied to applied to all subgroups and projects.
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ In GitLab 18.0, the [Runners API](../runners.md) will return `""` in place of `v
|
|||
and `architecture` for runners.
|
||||
In v5 of the REST API, the fields will be removed.
|
||||
|
||||
## `default_branch_protection` API field
|
||||
## `default_branch_protection` API field
|
||||
|
||||
Breaking change. [Related issue](https://gitlab.com/gitlab-org/gitlab/-/issues/408315).
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ Repository X Ray hasn't yet implemented any semantic seach and this section is b
|
|||
- Data source: Repository X Ray report CI artifact
|
||||
- Data size: N/A
|
||||
- Example of user input: "# generate function that fetches sales report for vendor from App Store"
|
||||
- Example of expected AI-generated response:
|
||||
- Example of expected AI-generated response:
|
||||
|
||||
```python
|
||||
def sales_reports(vendor_id)\n app_store_connect.sales_reports(\n filter: {\n report_type: 'SALES',\n report_sub_type: 'SUMMARY',\n frequency: 'DAILY',
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ Repository X Ray hasn't yet implemented any semantic seach and this section is b
|
|||
- Data source: Repository X Ray report CI artifact
|
||||
- Data size: N/A
|
||||
- Example of user input: "# generate function that fetches sales report for vendor from App Store"
|
||||
- Example of expected AI-generated response:
|
||||
- Example of expected AI-generated response:
|
||||
|
||||
```python
|
||||
def sales_reports(vendor_id)\n app_store_connect.sales_reports(\n filter: {\n report_type: 'SALES',\n report_sub_type: 'SUMMARY',\n frequency: 'DAILY',
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ Integrate the existing Repository X-Ray scan flow with the RAG platform.
|
|||
|
||||
Proof of concept has been built at [merge request 144715](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144715). This MR contains a large amount of information that can be helpful during implementation.
|
||||
|
||||
## Implementation
|
||||
## Implementation
|
||||
|
||||
### Current state
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ authors: [ "@fabiopitino" ]
|
|||
## Context
|
||||
|
||||
How do we assign stewardship to domain and platform modules? We have a large amount of shared code
|
||||
that does not have explicit stewards who can provide a vision and direction on that part of code.
|
||||
that does not have explicit stewards who can provide a vision and direction on that part of code.
|
||||
|
||||
## Decision
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ with the `--cache-from` argument must be pulled
|
|||
|
||||
## Docker caching example
|
||||
|
||||
This example `.gitlab-ci.yml` file shows how to use Docker caching with
|
||||
This example `.gitlab-ci.yml` file shows how to use Docker caching with
|
||||
the `inline` cache backend with the default `docker build` command. For
|
||||
more advanced caching options, see the [`docker buildx build` command and its cache options](https://docs.docker.com/build/cache/backends/).
|
||||
|
||||
|
|
|
|||
|
|
@ -297,6 +297,9 @@ Use one of the following methods to determine the value for `DOCKER_AUTH_CONFIG`
|
|||
bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=
|
||||
```
|
||||
|
||||
NOTE:
|
||||
If your username includes special characters like `@`, you must escape them with a backslash (`\`) to prevent authentication problems.
|
||||
|
||||
Create the Docker JSON configuration content as follows:
|
||||
|
||||
```json
|
||||
|
|
|
|||
|
|
@ -784,7 +784,7 @@ problematic deployment, they can roll back to a previous stable version.
|
|||
|
||||
GitLab Auto Rollback eases this workflow by automatically triggering a rollback when a
|
||||
[critical alert](../../operations/incident_management/alerts.md)
|
||||
is detected.
|
||||
is detected.
|
||||
For GitLab to select the appropriate environment for the rollback, the alert should contain a `gitlab_environment_name` key with the name of the environment.
|
||||
GitLab selects and redeploys the most recent successful deployment.
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ To protect an environment:
|
|||
- There are two roles to choose from:
|
||||
- **Maintainers**: Allows access to all of the project's users with the Maintainer role.
|
||||
- **Developers**: Allows access to all of the project's users with the Maintainer and Developer role.
|
||||
- You can also select groups that are already [invited](../../user/project/members/share_project_with_groups.md#share-a-project-with-a-group) to the project. Invited groups added to the project with the Reporter role appear in the dropdown list for [deployment-only access](#deployment-only-access-to-protected-environments).
|
||||
- You can also select groups that are already [invited](../../user/project/members/share_project_with_groups.md#share-a-project-with-a-group) to the project. Invited groups added to the project with the Reporter role appear in the dropdown list for [deployment-only access](#deployment-only-access-to-protected-environments).
|
||||
- You can also select specific users. The users must have at least the Developer role to appear in
|
||||
the **Allowed to deploy** list.
|
||||
1. In the **Approvers** list, select the role, users, or groups you
|
||||
|
|
|
|||
|
|
@ -329,6 +329,53 @@ You cannot use [`!reference` tags](yaml_optimization.md#reference-tags) in input
|
|||
but [issue 424481](https://gitlab.com/gitlab-org/gitlab/-/issues/424481) proposes adding
|
||||
this functionality.
|
||||
|
||||
## `inputs` examples
|
||||
|
||||
### Use `inputs` with `needs`
|
||||
|
||||
You can use array type inputs with [`needs`](index.md#needs) for complex job dependencies.
|
||||
|
||||
For example, in a file named `component.yml`:
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
inputs:
|
||||
first_needs:
|
||||
type: array
|
||||
second_needs:
|
||||
type: array
|
||||
---
|
||||
|
||||
test_job:
|
||||
script: echo "this job has needs"
|
||||
needs:
|
||||
- $[[ inputs.first_needs ]]
|
||||
- $[[ inputs.second_needs ]]
|
||||
```
|
||||
|
||||
In this example, the inputs are `first_needs` and `second_needs`, both [array type inputs](#array-type).
|
||||
Then, in a `.gitlab-ci.yml` file, you can add this configuration and set the input values:
|
||||
|
||||
```yaml
|
||||
include:
|
||||
- local: 'component.yml'
|
||||
inputs:
|
||||
first_needs:
|
||||
- build1
|
||||
second_needs:
|
||||
- build2
|
||||
```
|
||||
|
||||
When the pipeline starts, the items in the `needs` array for `test_job` get concatenated into:
|
||||
|
||||
```yaml
|
||||
test_job:
|
||||
script: echo "this job has needs"
|
||||
needs:
|
||||
- build1
|
||||
- build2
|
||||
```
|
||||
|
||||
## Specify functions to manipulate input values
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/409462) in GitLab 16.3.
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ To add a new audit event type:
|
|||
|
||||
### Generate documentation
|
||||
|
||||
Audit event types documentation is automatically generated and [published](../../administration/audit_event_types.md)
|
||||
Audit event types documentation is automatically generated and [published](../../user/compliance/audit_event_types.md)
|
||||
to the GitLab documentation site.
|
||||
|
||||
If you add a new audit event type, run the
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ that are coded across multiple repositories.
|
|||
| [GitLab Runner feature flags](https://docs.gitlab.com/runner/configuration/feature-flags.html) | [Page source](https://gitlab.com/gitlab-org/gitlab-runner/-/blob/ec6e1797d2173a95c8ac7f726bd62f6f110b7211/docs/configuration/feature-flags.md?plain=1#L39) | [Runner](https://handbook.gitlab.com/handbook/engineering/development/ops/verify/runner/) |
|
||||
| [Deprecations and removals by version](../../../update/deprecations.md) | [Deprecating GitLab features](../../deprecation_guidelines/index.md) | |
|
||||
| [GraphQL API resources](../../../api/graphql/reference/index.md) | [GraphQL API style guide](../../api_graphql_styleguide.md#documentation-and-schema) | [Import and Integrate](https://handbook.gitlab.com/handbook/engineering/development/dev/manage/import-and-integrate/) |
|
||||
| [Audit event types](../../../administration/audit_event_types.md) | [Audit event development guidelines](../../audit_event_guide/index.md) | [Compliance](https://handbook.gitlab.com/handbook/engineering/development/sec/govern/compliance/) |
|
||||
| [Audit event types](../../../user/compliance/audit_event_types.md) | [Audit event development guidelines](../../audit_event_guide/index.md) | [Compliance](https://handbook.gitlab.com/handbook/engineering/development/sec/govern/compliance/) |
|
||||
| [Available custom role permissions](../../../user/custom_roles/abilities.md) | [Generated by Rake task](https://gitlab.com/gitlab-org/gitlab/-/blob/master/tooling/custom_roles/docs/templates/custom_abilities.md.erb) | [Authorization](https://handbook.gitlab.com/handbook/product/categories/#authorization-group)|
|
||||
| DAST vulnerability check documentation ([Example](../../../user/application_security/dast/browser/checks/798.19.md)) | [How to generate the Markdown](https://gitlab.com/gitlab-org/security-products/dast-cwe-checks/-/blob/main/doc/how-to-generate-the-markdown-documentation.md) | [Dynamic Analysis](https://handbook.gitlab.com/handbook/product/categories/#dynamic-analysis-group) |
|
||||
| Blueprints ([Example](../../../architecture/blueprints/ci_data_decay/pipeline_partitioning.md)) | | |
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ To update the linting images:
|
|||
1. Open merge requests to update each of these configuration files to point to the new image.
|
||||
In each merge request, include a small doc update to trigger the job that uses the image.
|
||||
- <https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/docs.gitlab-ci.yml> ([Example MR](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85177))
|
||||
- <https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/.gitlab/ci/test.gitlab-ci.yml> ([Example MR](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3408))
|
||||
- <https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/.gitlab/ci/docs.gitlab-ci.yml> ([Example MR](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3408))
|
||||
- <https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/master/gitlab-ci-config/gitlab-com.yml> ([Example MR](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/6037))
|
||||
- <https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/.gitlab-ci.yml> ([Example MR](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/2511))
|
||||
- <https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/master/.gitlab-ci.yml> ([Example MR](https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/merge_requests/462))
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ and merged by the Solutions Architect team.
|
|||
|
||||
Community members can make AI-generated contributions to GitLab documentation, provided they follow the guidelines in our [DCO or our CLA terms](https://about.gitlab.com/community/contribute/dco-cla/).
|
||||
|
||||
GitLab team members must follow the guidelines documented in the [internal handbook](https://internal.gitlab.com/handbook/product/ai-strategy/ai-integration-effort/legal_restrictions/).
|
||||
GitLab team members must follow the guidelines documented in the [internal handbook](https://internal.gitlab.com/handbook/product/ai-strategy/ai-integration-effort/legal_restrictions/).
|
||||
|
||||
## Related topics
|
||||
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ In most cases you do not want to test accessibility of a whole page. There are a
|
|||
When axe test case fails, it outputs the violation found and an element that it concerns. Because we often use Pajamas Components,
|
||||
it may happen that the element will be a `<div>` without any annotation that could help you identify it. However, we can take
|
||||
advantage of a fact that axe_core rules is used both for Ruby tests and Deque browser extension - axe devTools. They both
|
||||
provide the same output.
|
||||
provide the same output.
|
||||
|
||||
1. Make sure you have axe DevTools extension installed in a browser of your choice. See [axe DevTools official website for more information](https://www.deque.com/axe/browser-extensions/).
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ Below are some Tailwind CSS basics and information about how it has been configu
|
|||
|
||||
##### Prefix
|
||||
|
||||
We have configured Tailwind CSS to use a [prefix](https://tailwindcss.com/docs/configuration#prefix) so all utility classes are prefixed with `gl-`.
|
||||
We have configured Tailwind CSS to use a [prefix](https://tailwindcss.com/docs/configuration#prefix) so all utility classes are prefixed with `gl-`.
|
||||
When using responsive utilities or state modifiers the prefix goes after the colon.
|
||||
**Examples:** `gl-mt-5`, `lg:gl-mt-5`.
|
||||
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ and `public/assets`).
|
|||
|
||||
## `compile-*-assets`
|
||||
|
||||
We also changed the `compile-test-assets`, `compile-test-assets as-if-foss`,
|
||||
We also changed the `compile-test-assets`,
|
||||
and `compile-production-assets` jobs to:
|
||||
|
||||
1. First download the "native" cache assets, which contain:
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ Security incidents related to credentials exposure can vary in severity from low
|
|||
#### Event types
|
||||
|
||||
- Review the available [audit events](../administration/audit_event_reports.md) for your group or namespace.
|
||||
- Adversaries may attempt to create tokens, SSH keys, or user accounts to maintain persistence. Look for [audit events](../administration/audit_event_types.md) related to these activities.
|
||||
- Focus on CI-related [audit events](../administration/audit_event_types.md#continuous-integration) to identify any modifications to CI/CD variables.
|
||||
- Adversaries may attempt to create tokens, SSH keys, or user accounts to maintain persistence. Look for [audit events](../user/compliance/audit_event_types.md) related to these activities.
|
||||
- Focus on CI-related [audit events](../user/compliance/audit_event_types.md#continuous-integration) to identify any modifications to CI/CD variables.
|
||||
- Review [job logs](../administration/job_logs.md) for any pipelines ran by an adversary
|
||||
|
||||
### Suspected compromised user account
|
||||
|
|
@ -145,7 +145,7 @@ If you suspect that your GitLab instance has been compromised, you should:
|
|||
|
||||
#### Event types
|
||||
|
||||
Review [system access audit events](../administration/audit_event_types.md#system-access) to determine any changes related to system settings, user permissions and user login events.
|
||||
Review [system access audit events](../user/compliance/audit_event_types.md#system-access) to determine any changes related to system settings, user permissions and user login events.
|
||||
|
||||
### Misconfigured project or group settings
|
||||
|
||||
|
|
@ -168,7 +168,7 @@ If you suspect unauthorized modifications to project settings, consider taking t
|
|||
#### Event types
|
||||
|
||||
- Audit logs can be filtered based on the `target_type` field. Based on the security incident context, apply a filter to this field to narrow down the scope.
|
||||
- Look for specific audit events of [compliance management](../administration/audit_event_types.md#compliance-management) and [audit events of groups and projects](../administration/audit_event_types.md#groups-and-projects).
|
||||
- Look for specific audit events of [compliance management](../user/compliance/audit_event_types.md#compliance-management) and [audit events of groups and projects](../user/compliance/audit_event_types.md#groups-and-projects).
|
||||
|
||||
### Engaging GitLab for assistance with a security incident
|
||||
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ end
|
|||
|
||||
Non-batched migrations are superseded by batched background migrations. Non-batched
|
||||
migrations were gradually phased out during GitLab 14, with the last one
|
||||
used in GitLab 15.0.
|
||||
used in GitLab 15.0.
|
||||
|
||||
### Check for pending background migrations
|
||||
|
||||
|
|
|
|||
|
|
@ -94,14 +94,14 @@ To fix this issue:
|
|||
```shell
|
||||
sudo gitlab-ctl restart
|
||||
```
|
||||
|
||||
|
||||
## 500 errors with `PG::UndefinedColumn: ERROR:..` message in logs
|
||||
|
||||
After upgrading, if you start getting `500` errors in the logs showings messages similar to `PG::UndefinedColumn: ERROR:...`, these errors could be cause by either:
|
||||
|
||||
- [Database migrations](../background_migrations.md) not being complete. Wait until migrations are completed.
|
||||
- [Database migrations](../background_migrations.md) not being complete. Wait until migrations are completed.
|
||||
- Database migrations being complete, but GitLab needing to load the new schema. To load the new schema, [restart GitLab](../../administration/restart_gitlab.md).
|
||||
|
||||
|
||||
## Error: Failed to connect to the internal GitLab API
|
||||
|
||||
If you receive the error `Failed to connect to the internal GitLab API` on a separate GitLab Pages server,
|
||||
|
|
|
|||
|
|
@ -10,58 +10,6 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
The following GitLab Duo features are
|
||||
[experiments](../policy/experiment-beta-support.md#experiment).
|
||||
|
||||
## Explain code in the Web UI with Code explanation
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Freely available for Premium and Ultimate for a limited time. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md).
|
||||
**Offering:** GitLab.com
|
||||
**Status:** Experiment
|
||||
|
||||
> - Introduced in GitLab 15.11 as an [experiment](../policy/experiment-beta-support.md#experiment) on GitLab.com.
|
||||
|
||||
To use this feature:
|
||||
|
||||
- The parent group of the project must:
|
||||
- Enable the [experiment and beta features setting](ai_features_enable.md#turn-on-beta-and-experimental-features).
|
||||
- You must:
|
||||
- Belong to at least one group with the [experiment and beta features setting](ai_features_enable.md#turn-on-beta-and-experimental-features) enabled.
|
||||
- Have sufficient permissions to view the project.
|
||||
|
||||
GitLab can help you get up to speed faster if you:
|
||||
|
||||
- Spend a lot of time trying to understand pieces of code that others have created, or
|
||||
- Struggle to understand code written in a language that you are not familiar with.
|
||||
|
||||
By using a large language model, GitLab can explain the code in natural language.
|
||||
|
||||
To explain your code:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your project.
|
||||
1. Select any file in your project that contains code.
|
||||
1. On the file, select the lines that you want to have explained.
|
||||
1. On the left side, select the question mark (**{question}**). You might have to scroll to the first line of your selection to view it. This sends the selected code, together with a prompt, to provide an explanation to the large language model.
|
||||
1. A drawer is displayed on the right side of the page. Wait a moment for the explanation to be generated.
|
||||
1. Provide feedback about how satisfied you are with the explanation, so we can improve the results.
|
||||
|
||||
You can also have code explained in the context of a merge request. To explain
|
||||
code in a merge request:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your project.
|
||||
1. Select **Code > Merge requests**, then select your merge request.
|
||||
1. On the secondary menu, select **Changes**.
|
||||
1. On the file you would like explained, select the three dots (**{ellipsis_v}**) and select **View File @ $SHA**.
|
||||
|
||||
A separate browser tab opens and shows the full file with the latest changes.
|
||||
|
||||
1. On the new tab, select the lines that you want to have explained.
|
||||
1. On the left side, select the question mark (**{question}**). You might have to scroll to the first line of your selection to view it. This sends the selected code, together with a prompt, to provide an explanation to the large language model.
|
||||
1. A drawer is displayed on the right side of the page. Wait a moment for the explanation to be generated.
|
||||
1. Provide feedback about how satisfied you are with the explanation, so we can improve the results.
|
||||
|
||||

|
||||
|
||||
We cannot guarantee that the large language model produces results that are correct. Use the explanation with caution.
|
||||
|
||||
## Summarize issue discussions with Discussion summary
|
||||
|
||||
DETAILS:
|
||||
|
|
|
|||
|
|
@ -79,6 +79,16 @@ DETAILS:
|
|||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=zWhwuixUkYU&list=PLFGfElNsQthYDx0A_FaNNfUm9NHsK6zED)
|
||||
- [View documentation](gitlab_duo_chat_examples.md#write-tests-in-the-ide).
|
||||
|
||||
### Code explanation in the IDE
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Freely available for Premium and Ultimate for a limited time. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md).
|
||||
**Offering:** GitLab.com
|
||||
|
||||
- Helps you understand code by explaining it in English language.
|
||||
- LLM: Anthropic: [`claude-3-haiku-20240307`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
- View documentation for [explaining code in the IDE](../user/gitlab_duo_chat_examples.md#explain-code-in-the-ide).
|
||||
|
||||
## Beta features
|
||||
|
||||
### Merge request summary
|
||||
|
|
@ -166,16 +176,17 @@ DETAILS:
|
|||
- LLM: Vertex AI Codey [`code-bison`](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/code-generation)
|
||||
- [View documentation](application_security/vulnerabilities/index.md#vulnerability-resolution).
|
||||
|
||||
### Code explanation
|
||||
### Code explanation in a file or merge request
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Freely available for Premium and Ultimate for a limited time. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md).
|
||||
**Offering:** GitLab.com
|
||||
|
||||
- Helps you understand code by explaining it in English language.
|
||||
- LLM: Vertex AI Codey [`codechat-bison`](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/code-chat)
|
||||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=1izKaLmmaCA)
|
||||
- [View documentation](ai_experiments.md#explain-code-in-the-web-ui-with-code-explanation).
|
||||
- LLM: Anthropic: [`claude-3-haiku-20240307`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
- View documentation for explaining code in:
|
||||
- [A file](../user/project/repository/code_explain.md).
|
||||
- [A merge request](../user/project/merge_requests/changes.md#explain-code-in-a-merge-request).
|
||||
|
||||
### Root cause analysis
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,131 @@
|
|||
---
|
||||
stage: Govern
|
||||
group: Compliance
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
---
|
||||
|
||||
# Audit Event schema and examples
|
||||
|
||||
## Audit Event schema
|
||||
|
||||
> - Documentation for an audit event streaming schema was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/358149) in GitLab 15.3.
|
||||
|
||||
Audit events have a predictable schema in the body of the response.
|
||||
|
||||
| Field | Description | Notes | Streaming Only Field |
|
||||
|------------------|------------------------------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
|
||||
| `author_id` | User ID of the user who triggered the event | | **{dotted-circle}** No |
|
||||
| `author_name` | Human-readable name of the author that triggered the event | Helpful when the author no longer exists | **{check-circle}** Yes |
|
||||
| `created_at` | Timestamp when event was triggered | | **{dotted-circle}** No |
|
||||
| `details` | JSON object containing additional metadata | Has no defined schema but often contains additional information about an event | **{dotted-circle}** No |
|
||||
| `entity_id` | ID of the audit event's entity | | **{dotted-circle}** No |
|
||||
| `entity_path` | Full path of the entity affected by the auditable event | | **{check-circle}** Yes |
|
||||
| `entity_type` | String representation of the type of entity | Acceptable values include `User`, `Group`, and `Key`. This list is not exhaustive | **{dotted-circle}** No |
|
||||
| `event_type` | String representation of the type of audit event | | **{check-circle}** Yes |
|
||||
| `id` | Unique identifier for the audit event | Can be used for deduplication if required | **{dotted-circle}** No |
|
||||
| `ip_address` | IP address of the host used to trigger the event | | **{check-circle}** Yes |
|
||||
| `target_details` | Additional details about the target | | **{check-circle}** Yes |
|
||||
| `target_id` | ID of the audit event's target | | **{check-circle}** Yes |
|
||||
| `target_type` | String representation of the target's type | | **{check-circle}** Yes |
|
||||
|
||||
### Audit Event JSON schema
|
||||
|
||||
```json
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"author_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"author_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"details": {},
|
||||
"ip_address": {
|
||||
"type": "string"
|
||||
},
|
||||
"entity_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"entity_path": {
|
||||
"type": "string"
|
||||
},
|
||||
"entity_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"event_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"target_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_details": {
|
||||
"type": "string"
|
||||
},
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
```
|
||||
|
||||
### Headers
|
||||
|
||||
> - `X-Gitlab-Audit-Event-Type` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86881) in GitLab 15.0.
|
||||
|
||||
Headers are formatted as follows:
|
||||
|
||||
```plaintext
|
||||
POST /logs HTTP/1.1
|
||||
Host: <DESTINATION_HOST>
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
X-Gitlab-Event-Streaming-Token: <DESTINATION_TOKEN>
|
||||
X-Gitlab-Audit-Event-Type: repository_git_operation
|
||||
```
|
||||
|
||||
## Example: audit event streaming on Git operations
|
||||
|
||||
Streaming audit events can be sent when authenticated users push, pull, or clone a project's remote Git repositories:
|
||||
|
||||
- [Using SSH](../ssh.md).
|
||||
- Using HTTP or HTTPS.
|
||||
- Using **Download** (**{download}**) in GitLab UI.
|
||||
|
||||
Audit events are not captured for users that are not signed in. For example, when downloading a public project.
|
||||
|
||||
### Example: audit event payloads for Git over SSH events with Deploy Key
|
||||
|
||||
Fetch:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "1",
|
||||
"author_id": -3,
|
||||
"entity_id": 29,
|
||||
"entity_type": "Project",
|
||||
"details": {
|
||||
"author_name": "deploy-key-name",
|
||||
"author_class": "DeployKey",
|
||||
"target_id": 29,
|
||||
"target_type": "Project",
|
||||
"target_details": "example-project",
|
||||
"custom_message": {
|
||||
"protocol": "ssh",
|
||||
"action": "git-upload-pack"
|
||||
},
|
||||
"ip_address": "127.0.0.1",
|
||||
"entity_path": "example-group/example-project"
|
||||
},
|
||||
"ip_address": "127.0.0.1",
|
||||
"author_name": "deploy-key-name",
|
||||
"entity_path": "example-group/example-project",
|
||||
"target_details": "example-project",
|
||||
"created_at": "2022-07-26T05:43:53.662Z",
|
||||
"target_type": "Project",
|
||||
"target_id": 29,
|
||||
"event_type": "repository_git_operation"
|
||||
}
|
||||
```
|
||||
|
|
@ -0,0 +1,539 @@
|
|||
---
|
||||
stage: Govern
|
||||
group: Compliance
|
||||
info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments"
|
||||
---
|
||||
|
||||
<!--
|
||||
This documentation is auto generated by a Rake task.
|
||||
|
||||
Please do not edit this file directly. To update this file, run:
|
||||
bundle exec rake gitlab:audit_event_types:compile_docs
|
||||
|
||||
To make changes to the output of the Rake task,
|
||||
edit `tooling/audit_events/docs/templates/audit_event_types.md.erb`.
|
||||
-->
|
||||
|
||||
# Audit event types
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Premium, Ultimate
|
||||
**Offering:** GitLab.com, Self-managed
|
||||
|
||||
Audit event types are used to filter streamed audit events:
|
||||
|
||||
- [For instances](../../administration/audit_event_streaming/index.md#update-event-filters).
|
||||
- [For top-level groups](audit_event_streaming.md#update-event-filters)
|
||||
|
||||
Every audit event is associated with an event type. Audit event types can allow audit events to be:
|
||||
|
||||
- Saved to the database. Available in the Premium and Ultimate tier. You can retrieve audit events associated with these
|
||||
types by using the audit events dashboard or the [audit events API](../../api/audit_events.md).
|
||||
- Streamed to external destinations. Available in the Ultimate tier. You can stream audit events associated with these
|
||||
types to external destinations if a destination is set.
|
||||
|
||||
Some audit event types don't allow saving audit events to the database. Other audit event types don't allow streaming
|
||||
audit events to external destinations.
|
||||
|
||||
An audit event type's scope limits the availability of the audit event type to either:
|
||||
|
||||
- [Project, group, or user](audit_events.md) audit events.
|
||||
- [Instance](../../administration/audit_event_reports.md) audit events.
|
||||
|
||||
## Available audit event types
|
||||
|
||||
Audit event types belong to the following product categories.
|
||||
|
||||
### Ai framework
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`duo_features_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145509) | GitLab Duo Features enabled setting on group or project changed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.10](https://gitlab.com/gitlab-org/gitlab/-/issues/442485) | Group, Project |
|
||||
|
||||
### Audit events
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`amazon_s3_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132443) | Triggered when Amazon S3 configuration for audit events streaming is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423229) | Group |
|
||||
| [`amazon_s3_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/133695) | Triggered when Amazon S3 configuration for audit events streaming is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423229) | Group |
|
||||
| [`amazon_s3_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/133691) | Triggered when Amazon S3 configuration for audit events streaming is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423229) | Group |
|
||||
| [`audit_events_streaming_headers_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | Group |
|
||||
| [`audit_events_streaming_headers_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | Group |
|
||||
| [`audit_events_streaming_instance_headers_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125870) | Triggered when a streaming header for instance level external audit event destination is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | Instance |
|
||||
| [`audit_events_streaming_instance_headers_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127228) | Triggered when a streaming header for instance level external audit event destination is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | Instance |
|
||||
| [`audit_events_streaming_instance_headers_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127228) | Triggered when a streaming header for instance level external audit event destination is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | Instance |
|
||||
| [`create_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74632) | Event triggered when an external audit event destination is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/344664) | Group |
|
||||
| [`create_http_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136047) | Event triggered when a namespace filter for an external audit event destination for a top-level group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/424176) | Group |
|
||||
| [`create_instance_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123882) | Event triggered when an instance level external audit event destination is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/gitlab/-/issues/404730) | Instance |
|
||||
| [`created_group_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147888) | Event triggered when an external audit event destination for a top-level group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436610) | Group |
|
||||
| [`created_group_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150712) | Event triggered when a namespace filter for an external audit event destination for a top-level group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/436612) | Group |
|
||||
| [`created_instance_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148383) | Event triggered when an external audit event destination for a GitLab instance is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436615) | Instance |
|
||||
| [`delete_http_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136302) | Event triggered when a namespace filter for an external audit event destination for a top-level group is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/424177) | Group |
|
||||
| [`deleted_group_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148738) | Event triggered when an external audit event destination for a top-level group is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436610) | Group |
|
||||
| [`deleted_group_namespace_filter`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150712) | Event triggered when a namespace filter for an external audit event destination for a top-level group is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/436612) | Group |
|
||||
| [`deleted_instance_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/14910) | Event triggered when an external audit event destination for a GitLab instance is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436615) | Instance |
|
||||
| [`destroy_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74632) | Event triggered when an external audit event destination is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/344664) | Group |
|
||||
| [`destroy_instance_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125846) | Event triggered when an instance level external audit event destination is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/gitlab/-/issues/404730) | Instance |
|
||||
| [`event_type_filters_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113081) | Event triggered when a new audit events streaming event type filter is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/344848) | Group |
|
||||
| [`event_type_filters_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113489) | Event triggered when audit events streaming event type filters are deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/344848) | Group |
|
||||
| [`google_cloud_logging_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122025) | Triggered when Google Cloud Logging configuration is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/409422) | Group |
|
||||
| [`google_cloud_logging_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122025) | Triggered when Google Cloud Logging configuration is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/409422) | Group |
|
||||
| [`google_cloud_logging_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122025) | Triggered when Google Cloud Logging configuration is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/409422) | Group |
|
||||
| [`instance_amazon_s3_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137651) | Triggered when instance Amazon S3 configuration for audit events streaming is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/423235) | Instance |
|
||||
| [`instance_amazon_s3_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138318) | Triggered when instance-level Amazon S3 configuration for audit events streaming is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/423235) | Instance |
|
||||
| [`instance_amazon_s3_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138310) | Triggered when instance-level Amazon S3 configuration for audit events streaming is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/423235) | Instance |
|
||||
| [`instance_google_cloud_logging_configuration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130663) | Triggered when Instance level Google Cloud Logging configuration is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/423038) | Instance |
|
||||
| [`instance_google_cloud_logging_configuration_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131752) | Triggered when instance level Google Cloud Logging configuration is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423040) | Instance |
|
||||
| [`instance_google_cloud_logging_configuration_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131790) | Triggered when instance level Google Cloud Logging configuration is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/423039) | Instance |
|
||||
| [`update_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74632) | Event triggered when an external audit event destination is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/344664) | Group |
|
||||
| [`update_instance_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125846) | Event triggered when an instance level external audit event destination is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/gitlab/-/issues/404730) | Instance |
|
||||
| [`updated_group_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148388) | Event triggered when an external audit event destination for a top-level group is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436610) | Group |
|
||||
| [`updated_instance_audit_event_streaming_destination`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149104) | Event triggered when an external audit event destination for a GitLab instance is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/436615) | Instance |
|
||||
|
||||
### Build artifacts
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`job_artifact_downloaded`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129608) | Triggered when a user download a job artifact from a project| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.8](https://gitlab.com/gitlab-org/gitlab/-/issues/250663) | Project |
|
||||
|
||||
### Code review
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`delete_merge_request`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful merge request deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Project |
|
||||
|
||||
### Code review workflow
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`merge_request_approval_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92983) | Audit event triggered when a merge request is approved| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/10869) | Project |
|
||||
| [`merge_request_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`merge_request_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`merge_request_invalid_approver_rules`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/100496) | Audit event triggered for an invalid rule when merge request is approved| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.5](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/100496) | Project |
|
||||
| [`merge_request_merged_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is merged using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`merge_request_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a merge request is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`project_merge_requests_template_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Whenever a MR template is updated for a project, this audit event is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`project_remove_source_branch_after_merge_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | Create this audit event whenever a project has its setting to remove branches after merges modified| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
| [`project_reset_approvals_on_push_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66234) | Create this audit event whenever a project has its setting on whether approvals are reset on a push is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.2](https://gitlab.com/gitlab-org/gitlab/-/issues/336211) | Project |
|
||||
| [`selective_code_owner_removals_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148743) | Event triggered when selective code owner removal is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/327562) | Project |
|
||||
|
||||
### Code suggestions
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`project_suggestion_commit_message_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | Create this audit event whenever a project has its suggested commit message updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
|
||||
### Compliance management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`add_gpg_key`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111744) | Event triggered when a GPG Key is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373961) | User |
|
||||
| [`allow_author_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating prevent merge request approval from authors from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`allow_committer_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating prevent merge request approval from committers from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`allow_overrides_to_approver_list_per_merge_request_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating prevent users from modifying MR approval rules in merge requests from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`audit_events_streaming_headers_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | Group |
|
||||
| [`compliance_framework_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65343) | Triggered when a framework gets removed from a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/329362) | Project |
|
||||
| [`compliance_framework_id_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94711) | audit when compliance framework ID is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369310) | Project |
|
||||
| [`create_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | Triggered on successful compliance framework creation| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
|
||||
| [`create_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Event triggered when an external status check is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`delete_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Event triggered when an external status check is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`destroy_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | Triggered on successful compliance framework deletion| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
|
||||
| [`email_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114546) | Event triggered when an email is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`email_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114546) | Event triggered when an email is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`external_status_check_name_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106095) | Event triggered on updating name of a external status check| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369333) | Project |
|
||||
| [`external_status_check_url_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Whenever the URL that is used for external status checks for a pipeline is updated, this audit event is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
| [`group_deletion_marked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is marked for deletion.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | Group |
|
||||
| [`group_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is destroyed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | Group |
|
||||
| [`group_restored`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is restored.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | Group |
|
||||
| [`group_saml_provider_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111227) | Event triggered when a group SAML provider is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373964) | Group |
|
||||
| [`group_saml_provider_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111227) | Event triggered when a group SAML provider is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373964) | Group |
|
||||
| [`inactive_project_scheduled_for_deletion`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130699) | Triggered when inactive project is scheduled for deletion| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/423263) | Project |
|
||||
| [`member_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109711) | Event triggered when a membership is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374112) | Group, Project |
|
||||
| [`member_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109711) | Event triggered when a membership is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374112) | Group, Project |
|
||||
| [`member_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/109711) | Event triggered when a membership is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374112) | Group, Project |
|
||||
| [`merge_request_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90911) | Event triggered when a Merge Request is created| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/367239) | Project |
|
||||
| [`omniauth_login_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123080) | Event triggered when an OmniAuth login fails| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`password_reset_requested`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114548) | Event triggered when a user requests a password reset using a registered email address| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`personal_access_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108952) | Event triggered when a user creates a personal access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374113) | User |
|
||||
| [`personal_access_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108952) | Event triggered when a personal access token is revoked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374113) | User |
|
||||
| [`project_archived`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is archived.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_deletion_marked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117546) | Event triggered when a project is marked for deletion.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117546) | Event triggered when a project is destroyed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Group |
|
||||
| [`project_export_file_download_started`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when download of project export file gets started.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_group_link_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108918) | Event triggered when a group is invited to a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374114) | Group |
|
||||
| [`project_group_link_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108918) | Event triggered when a project group link is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374114) | Group |
|
||||
| [`project_group_link_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108918) | Event triggered when a project group link is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374114) | Project |
|
||||
| [`project_imported`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is imported.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Group |
|
||||
| [`project_restored`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is restored.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_unarchived`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117528) | Event triggered when a project is unarchived.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`protected_branch_allow_force_push_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68869) | This audit event is created when a protected branch has its ability to allow force pushes is toggled| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.3](https://gitlab.com/gitlab-org/gitlab/-/issues/338873) | Project |
|
||||
| [`public_repository_download_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149842) | Event triggered when a Git repository for a public project is downloaded| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/383218) | Project |
|
||||
| [`registration_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123080) | Event triggered when a user registers for instance access| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`release_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`release_deleted_audit_event`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`release_milestones_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release's associated milestones are updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`release_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111080) | Event triggered when a release is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374111) | Project |
|
||||
| [`remove_gpg_key`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111744) | Event triggered when a GPG Key is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373961) | User |
|
||||
| [`repository_download_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111218) | Event triggered when a Git repository for a private or internal project is downloaded| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/374108) | Project |
|
||||
| [`require_password_to_approve_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating require user password for approvals from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`retain_approvals_on_push_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102256) | Event triggered on updating require new approvals when new commits are added to an MR from group merge request setting| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/373949) | Group |
|
||||
| [`saml_group_links_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110525) | Event triggered when a SAML Group Link is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373954) | Group |
|
||||
| [`saml_group_links_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110525) | Event triggered when a SAML Group Link is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373954) | Group |
|
||||
| [`smartcard_authentication_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8120) | Event triggered when a user authenticates with smartcard| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/726) | User |
|
||||
| [`update_approval_rules`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89939) | Event triggered on updating a merge approval rule| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363092) | Project |
|
||||
| [`update_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | Triggered when a compliance framework is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
|
||||
| [`update_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Event triggered when an external status check is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
|
||||
|
||||
### Continuous delivery
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`deploy_key_added`](https://gitlab.com/gitlab-org/gitlab/-/commit/08586a616909c7f9efe2210c2b74fd3422d4eb62) | Triggered when deploy key is added| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_key_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92219) | Audit event triggered when deploy key is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Audit event triggered when deploy token is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Audit event triggered when deploy token fails to create| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Audit event triggered when deploy token is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deploy_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89391) | Triggered when project deploy token is revoked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`deployment_approved`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153375) | Triggered when a deployment is approved| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.1](https://gitlab.com/gitlab-org/gitlab/-/issues/456685) | Project |
|
||||
| [`deployment_rejected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/153375) | Triggered when a deployment is rejected| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.1](https://gitlab.com/gitlab-org/gitlab/-/issues/456685) | Project |
|
||||
| [`group_deploy_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when a groups deploy token is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_deploy_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when a groups deploy token fails to create| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_deploy_token_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when group deploy token is destroyed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_deploy_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when group deploy token is revoked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
|
||||
### Continuous integration
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`allow_merge_on_skipped_pipeline_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | There is a project setting which toggles the ability to merge when a pipeline is skipped. This audit event tracks changes to that setting. This MR adds a setting to allow this (like previous GitLab versions).| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
| [`ci_group_variable_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a CI variable is created at a group level| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Group |
|
||||
| [`ci_group_variable_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a group's CI variable is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Group |
|
||||
| [`ci_group_variable_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a group's CI variable is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Group |
|
||||
| [`ci_instance_variable_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131882) | When an instance level CI variable is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/8070) | Instance |
|
||||
| [`ci_instance_variable_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131882) | When an instance level CI variable is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/8070) | Instance |
|
||||
| [`ci_instance_variable_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131882) | When an instance level CI variable is changed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/8070) | Instance |
|
||||
| [`ci_variable_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a CI variable is created at a project level| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Project |
|
||||
| [`ci_variable_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a project's CI variable is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Project |
|
||||
| [`ci_variable_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91983) | Triggered when a project's CI variable is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363090) | Project |
|
||||
| [`destroy_pipeline`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135255) | Event triggered when a pipeline is deleted| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/339041) | Project |
|
||||
|
||||
### Deployment management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`cluster_agent_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112036) | Event triggered when a user creates a cluster agent token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/382133) | Project |
|
||||
| [`cluster_agent_token_revoked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112036) | Event triggered when a user revokes a cluster agent token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/382133) | Project |
|
||||
|
||||
### Dynamic application security testing
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`dast_profile_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62604) | Triggered when a dynamic application security testing profile is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_profile_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62604) | Triggered when a dynamic application security profile is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_profile_schedule_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68046) | Triggered when a dynamic application security testing profile schedule is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.3](https://gitlab.com/gitlab-org/gitlab/-/issues/330308) | Project |
|
||||
| [`dast_profile_schedule_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66445) | Triggered when a dynamic application security testing profile schedule is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.3](https://gitlab.com/gitlab-org/gitlab/-/issues/330308) | Project |
|
||||
| [`dast_profile_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62604) | Triggered when a dynamic application security profile is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_scanner_profile_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62007) | Triggered when a dynamic application security testing scanner profile is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_scanner_profile_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62007) | Triggered when a dynamic application security testing scanner profile is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_scanner_profile_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62007) | Triggered when a dynamic application security testing scanner profile is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_site_profile_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62465) | Triggered when a dynamic application security testing site profile is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_site_profile_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62465) | Triggered when a dynamic application security testing site profile is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
| [`dast_site_profile_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62465) | Triggered when a dynamic application security testing site profile is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.0](https://gitlab.com/gitlab-org/gitlab/-/issues/217872) | Project |
|
||||
|
||||
### Environment management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`environment_protected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108247) | This event is triggered when a protected environment is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/216164) | Group, Project |
|
||||
| [`environment_unprotected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/108247) | This event is triggered when a protected environment is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/216164) | Group, Project |
|
||||
| [`protected_environment_approval_rule_added`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when an approval rule is added to a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
| [`protected_environment_approval_rule_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when an approval rule is removed from a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Project, Group |
|
||||
| [`protected_environment_approval_rule_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when an approval rule of a protected environment is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Project, Group |
|
||||
| [`protected_environment_deploy_access_level_added`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a deploy access level is added to a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
| [`protected_environment_deploy_access_level_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a deploy access level is removed from a protected environment.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
| [`protected_environment_deploy_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a deploy access level of a protected environment is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Project |
|
||||
| [`protected_environment_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131484) | This event is triggered when a protected environment is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/415603) | Group, Project |
|
||||
|
||||
### Feature flags
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`feature_flag_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113453) | Triggered when a feature flag is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374109) | Project |
|
||||
| [`feature_flag_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113453) | Triggered when a feature flag is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374109) | Project |
|
||||
| [`feature_flag_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113453) | Triggered when a feature flag is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374109) | Project |
|
||||
|
||||
### Fleet visibility
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`ci_runner_usage_export`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139578) | Triggered when a runner usage report is generated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.8](https://gitlab.com/gitlab-org/gitlab/-/issues/426560) | Instance |
|
||||
|
||||
### Fuzz testing
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`coverage_fuzzing_corpus_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71992) | Event triggered on a corpus action is added| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.5](https://gitlab.com/gitlab-org/gitlab/-/issues/341485) | Project |
|
||||
|
||||
### Groups and projects
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`create_ssh_certificate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134556) | Event triggered when an SSH certificate is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/427413) | Group |
|
||||
| [`delete_ssh_certificate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134556) | Event triggered when an SSH certificate is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/427413) | Group |
|
||||
| [`group_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121005) | Event triggered when a group is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/411595) | Group |
|
||||
| [`group_lfs_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups lfs enabled is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369323) | Group |
|
||||
| [`group_membership_lock_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups membership lock is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369323) | Group |
|
||||
| [`group_merge_request_approval_setting_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87880) | Triggered when merge request approval settings are added on a group level.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/356152) | Group |
|
||||
| [`group_name_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups name is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369320) | Group |
|
||||
| [`group_path_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups path is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369321) | Group |
|
||||
| [`group_project_creation_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups project creation level is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369327) | Group |
|
||||
| [`group_repository_size_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups repository size limit is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369322) | Group |
|
||||
| [`group_request_access_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups request access enabled is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369323) | Group |
|
||||
| [`group_require_two_factor_authentication_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups require two factor authentication setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369325) | Group |
|
||||
| [`group_share_with_group_link_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112719) | This event is triggered when you proceed to invite a group to another group via the 'invite group' tab on the group's membership page| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/327909) | Group |
|
||||
| [`group_share_with_group_link_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112719) | This event is triggered when you proceed to invite a group to another group via the 'invite group' tab on the group's membership page| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/327909) | Group |
|
||||
| [`group_share_with_group_link_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112719) | This event is triggered when you proceed to invite a group to another group via the 'invite group' tab on the group's membership page| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/327909) | Group |
|
||||
| [`group_shared_runners_minutes_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups shared runners minutes limit is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369324) | Group |
|
||||
| [`group_two_factor_grace_period_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups two factor grace period is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369326) | Group |
|
||||
| [`group_visibility_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups visibility level is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369322) | Group |
|
||||
| [`merge_commit_template_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107533) | audit when merge commit template is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369314) | Project |
|
||||
| [`project_cicd_merge_pipelines_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107428) | audit when project cicd merge pipelines setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369317) | Project |
|
||||
| [`project_cicd_merge_trains_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107428) | Event triggered on updating project setting for enabling ci cd merge trains| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369317) | Project |
|
||||
| [`project_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117543) | Event triggered when a project is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_default_branch_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117543) | Event triggered when default branch of a project's repository is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/374105) | Project |
|
||||
| [`project_description_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128978) | Triggered when a project's description is updated| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/377769) | Project |
|
||||
| [`project_disable_overriding_approvers_per_merge_request_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project disable overriding approvers per mr setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_feature_analytics_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's analytics access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369299) | Project |
|
||||
| [`project_feature_builds_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's builds access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369294) | Project |
|
||||
| [`project_feature_container_registry_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's container registry access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369303) | Project |
|
||||
| [`project_feature_environments_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's environments access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369307) | Project |
|
||||
| [`project_feature_feature_flags_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's feature flags access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369306) | Project |
|
||||
| [`project_feature_forking_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's feature forking access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369290) | Project |
|
||||
| [`project_feature_infrastructure_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's infrastructure access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369305) | Project |
|
||||
| [`project_feature_issues_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's issues access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369289) | Project |
|
||||
| [`project_feature_merge_requests_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's merge request access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369289) | Project |
|
||||
| [`project_feature_metrics_dashboard_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's metrics dashboard access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369289) | Project |
|
||||
| [`project_feature_monitor_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's monitor access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369304) | Project |
|
||||
| [`project_feature_operations_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's operation access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369300) | Project |
|
||||
| [`project_feature_package_registry_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's package registry access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369296) | Project |
|
||||
| [`project_feature_pages_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's page access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369297) | Project |
|
||||
| [`project_feature_releases_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's releases access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369308) | Project |
|
||||
| [`project_feature_repository_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's repository access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369295) | Project |
|
||||
| [`project_feature_requirements_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's requirements access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369301) | Project |
|
||||
| [`project_feature_security_and_compliance_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's security and compliance access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369302) | Project |
|
||||
| [`project_feature_snippets_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's snippet access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369293) | Project |
|
||||
| [`project_feature_wiki_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106919) | Event triggered when a project's wiki access level setting is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369292) | Project |
|
||||
| [`project_merge_method_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83922) | Triggered when a project's merge request method has been changed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.10](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
| [`project_merge_requests_author_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project mr author approval setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_merge_requests_disable_committers_approval_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating project setting for disabling committers approval on merge requests| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369277) | Project |
|
||||
| [`project_name_updated`](https://gitlab.com/gitlab-org/gitlab/-/commit/8c0b52247e717cf84bc7b248d817f8baa55b18a4) | Create this audit event whenever a project has its name updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [10.2](https://gitlab.com/gitlab-org/gitlab/-/commit/8c0b52247e717cf84bc7b248d817f8baa55b18a4) | Project |
|
||||
| [`project_namespace_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project namespace is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_only_allow_merge_if_all_discussions_are_resolved_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating project setting for allowing merge only when all discussions are resolved| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369286) | Project |
|
||||
| [`project_only_allow_merge_if_pipeline_succeeds_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project only allow merge if pipeline succeeds setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_packages_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/7962) | When the setting that controls packages for a project is toggled, this audit event is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [11.5](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_path_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/100770) | Event triggered on updating a project's path| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.5](https://gitlab.com/gitlab-org/gitlab/-/issues/369271) | Project |
|
||||
| [`project_printing_merge_request_link_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating setting for projects for enabling printing merge request link| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369283) | Project |
|
||||
| [`project_repository_size_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating repository size limit of a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369274) | Project |
|
||||
| [`project_require_password_to_approve_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | Event triggered on updating project setting for requiring user's password for approval of merge request| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369280) | Project |
|
||||
| [`project_resolve_outdated_diff_discussions_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project resolve outdated diff discussions setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`project_security_setting_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150767) | Triggered when a project security setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/457024) | Project |
|
||||
| [`project_visibility_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106652) | audit when project visiblity level setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369288) | Project |
|
||||
| [`squash_commit_template_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107533) | Event triggered on updating the merge request squash commit template for a project| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369314) | Project |
|
||||
| [`squash_option_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | Triggered when squash option setting has been changed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/301124) | Project |
|
||||
|
||||
### Importers
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`group_export_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/TODO) | Triggered when a group file export is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/294168) | Group |
|
||||
| [`project_export_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/TODO) | Triggered when a project file export is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/294168) | Project |
|
||||
|
||||
### Incident management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`incident_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`incident_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`incident_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
|
||||
### MLOps
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`project_feature_model_experiments_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121027) | Model experiments access level was updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/412384) | Project |
|
||||
| [`project_feature_model_registry_access_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138399) | Model registry access level was updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/412734) | Project |
|
||||
|
||||
### Not categorized
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`experiment_features_enabled_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118222) | Event triggered on toggling setting for enabling experiment AI features| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/404856/) | Group |
|
||||
|
||||
### Permissions
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`member_role_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137087) | Event triggered when a custom role is created.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.7](https://gitlab.com/gitlab-org/gitlab/-/issues/388934) | Group, Instance |
|
||||
| [`member_role_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/141630) | Event triggered when a custom role is deleted.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.9](https://gitlab.com/gitlab-org/gitlab/-/issues/437672) | Group, Instance |
|
||||
| [`member_role_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/141630) | Event triggered when a custom role is updated.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.9](https://gitlab.com/gitlab-org/gitlab/-/issues/437672) | Group, Instance |
|
||||
|
||||
### Portfolio management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`delete_epic`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful epic deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Group |
|
||||
| [`epic_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an epic is closed by a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Group |
|
||||
| [`epic_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an epic is created by a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Group |
|
||||
| [`epic_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an epic is reopened by a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Group |
|
||||
|
||||
### Project
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`project_access_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on creating a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`project_access_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to create a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`project_access_token_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on creating a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
| [`project_access_token_deletion_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to delete a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Project |
|
||||
|
||||
### Quality management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`test_case_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a test case is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`test_case_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a test case is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`test_case_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a test case is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
|
||||
### Runner
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`set_runner_associated_projects`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97666) | Event triggered on successful assignment of associated projects to a CI runner| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/359958) | User |
|
||||
|
||||
### Secret detection
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`skip_pre_receive_secret_detection`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/147855) | Triggered when secret push protection is skipped by the user| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.11](https://gitlab.com/gitlab-org/gitlab/-/issues/441185) | Project |
|
||||
|
||||
### Security policy management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`policy_project_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102154) | This event is triggered whenever the security policy project is updated for a project.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/377877) | Group, Project |
|
||||
|
||||
### Source code management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`approval_rule_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89939) | Triggered when a merge request approval rule is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363092) | Project |
|
||||
| [`approval_rule_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/82297) | Triggered on successful approval rule deletion| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.9](https://gitlab.com/gitlab-org/gitlab/-/issues/329514) | Project |
|
||||
| [`group_push_rules_author_email_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for author email regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369343) | Group |
|
||||
| [`group_push_rules_branch_name_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for branch name regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369340) | Group |
|
||||
| [`group_push_rules_commit_committer_check_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated for reject unverified users.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_commit_message_negative_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for commit message negative regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369342) | Group |
|
||||
| [`group_push_rules_commit_message_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for commit message regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369341) | Group |
|
||||
| [`group_push_rules_file_name_regex_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for filename regex.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369344) | Group |
|
||||
| [`group_push_rules_max_file_size_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105791) | Event triggered when a groups push rules settings is changed for max file size.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369345) | Group |
|
||||
| [`group_push_rules_prevent_secrets_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated to prevent pushing secret files.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_deny_delete_tag_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated to deny deletion of tags using Git push.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_member_check_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated to check if commit author is a GitLab user.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_non_dco_commits_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated for reject non DCO certified commits.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`group_push_rules_reject_unsigned_commits_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86046) | Triggered when group push rule setting is updated for reject unsigned commits.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/227629) | Group |
|
||||
| [`merged_merge_request_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118793) | Audit event triggered when a merged merge request is deleted| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/408288) | Project |
|
||||
| [`merged_merge_request_deletion_started`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118793) | Audit event triggered when a merged merge request's deletion is started| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/408288) | Project |
|
||||
| [`project_fork_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90916) | Audit event triggered when a project is forked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90916) | Project |
|
||||
| [`project_fork_relationship_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/101017) | Event triggered on successful removal of project's fork relationship| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.6](https://gitlab.com/gitlab-org/gitlab/-/issues/272532) | Project |
|
||||
| [`project_push_rules_commit_committer_check_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132157) | Triggered when project push rule setting is updated for reject unverified users.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.5](https://gitlab.com/gitlab-org/gitlab/-/issues/268116) | Project |
|
||||
| [`protected_branch_code_owner_approval_required_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107530) | audit when protected branch code owner approval required setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369318) | Project |
|
||||
| [`protected_branch_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92074) | Triggered when a protected branch is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363091) | Project |
|
||||
| [`protected_branch_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92074) | Triggered when a protected branch is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363091) | Project |
|
||||
| [`protected_branch_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107530) | Event triggered on the setting for protected branches is update| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369318) | Project |
|
||||
| [`repository_git_operation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/76719) | Triggered when authenticated users push, pull, or clone a project using SSH, HTTP(S), or the UI| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [14.9](https://gitlab.com/gitlab-org/gitlab/-/issues/373950) | Project |
|
||||
| [`manually_trigger_housekeeping`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112095) | Triggered when manually triggering housekeeping via API or admin UI| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/390761) | Project |
|
||||
| [`project_blobs_removal`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/152522) | Triggered when removing blobs via the GraphQL API or project settings UI| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/450701) | Project |
|
||||
|
||||
### Subgroup
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`group_access_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on creating a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_access_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failing to create a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_access_token_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on deleting a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
| [`group_access_token_deletion_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to delete a group access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | Group |
|
||||
|
||||
### System access
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`application_setting_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124639) | Triggered when Application setting is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/282428) | Instance |
|
||||
| [`ip_restrictions_changed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86037) | Event triggered on any changes in the IP AllowList| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/358986) | Group |
|
||||
| [`login_failed_with_otp_authentication`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129595) | Triggered when the login fails due to an incorrect OTP| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377758) | User |
|
||||
| [`login_failed_with_standard_authentication`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129595) | Triggered when login to GitLab fails with standard authentication like password.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377758) | Instance |
|
||||
| [`login_failed_with_webauthn_authentication`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129595) | Triggered when login fails via WebAuthn device| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377758) | User |
|
||||
| [`update_mismatched_group_saml_extern_uid`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/104791) | Triggered when the external UID is changed on a SAML identity.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/382256) | User |
|
||||
| [`user_access_locked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124169) | Event triggered when user access to the instance is locked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/modelops/anti-abuse/team-tasks/-/issues/244) | User |
|
||||
| [`user_access_unlocked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124973) | Event triggered when user access to the instance is unlocked| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.2](https://gitlab.com/gitlab-org/modelops/anti-abuse/team-tasks/-/issues/244) | User |
|
||||
| [`user_disable_two_factor`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89598) | Audit event triggered when user disables two factor authentication| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/238177) | User |
|
||||
| [`user_enable_admin_mode`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/104754) | Event triggered on enabling Admin Mode| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/362101) | User |
|
||||
|
||||
### Team planning
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`comment_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120927) | Triggered when a comment is added to an issue or an MR using the project access token| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`delete_issue`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful issue deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Project |
|
||||
| [`delete_work_item`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96773) | Event triggered on successful work item deletion| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [15.4](https://gitlab.com/gitlab-org/gitlab/-/issues/370487) | Project |
|
||||
| [`issue_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an issue is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`issue_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an issue is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`issue_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an issue is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`task_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a task is closed using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`task_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a task is created using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
| [`task_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when a task is reopened using a project access token| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | Project |
|
||||
|
||||
### User management
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`authenticated_with_group_saml`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28575) | Triggered after successfully signing in with SAML authentication| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/35710) | Group |
|
||||
| [`ban_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116103) | Event triggered on user ban action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | User |
|
||||
| [`change_membership_state`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87924) | Event triggered on a users membership is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/362200) | Group |
|
||||
| [`password_reset_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129079) | Event triggered when a password reset fails for a user| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/377762) | User |
|
||||
| [`unban_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116221) | Event triggered on user unban action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | User |
|
||||
| [`unblock_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115727) | Event triggered on user unblock action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | User |
|
||||
| [`user_activate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121708) | Event triggered on user activate action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/13473) | User |
|
||||
| [`user_approved`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is approved for an instance| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_blocked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is blocked| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is created| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.10](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_deactivate`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117776) | Event triggered on user deactivate action| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/13473) | User |
|
||||
| [`user_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user is scheduled for removal from the instance| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
| [`user_email_changed_and_user_signed_in`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106090) | audit when user emailed changed and user signed in| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.8](https://gitlab.com/gitlab-org/gitlab/-/issues/369331) | User |
|
||||
| [`user_impersonation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/79340) | Triggered when an instance administrator starts or stops impersonating a user| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.8](https://gitlab.com/gitlab-org/gitlab/-/issues/300961) | User, Group |
|
||||
| [`user_password_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106086) | audit when user password is updated| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369330) | User |
|
||||
| [`user_rejected`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113784) | Event triggered when a user registration is rejected| **{check-circle}** Yes | **{dotted-circle}** No | GitLab [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374107) | User |
|
||||
|
||||
### User profile
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`email_confirmation_sent`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129261) | Triggered when users add or change and email address and it needs to be confirmed.| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/377625) | User |
|
||||
| [`remove_ssh_key`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65615) | Audit event triggered when a SSH key is removed| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/220127) | User |
|
||||
| [`user_admin_status_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65168) | Adds an audit event when a user is either made an administrator, or removed as an administrator| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323905) | User |
|
||||
| [`user_auditor_status_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136456) | Adds an audit event when a user is either made an auditor, or removed as an auditor| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.6](https://gitlab.com/gitlab-org/gitlab/-/issues/430235) | User |
|
||||
| [`user_email_address_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/2103) | Adds an audit event when a user updates their email address| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [10.1](https://gitlab.com/gitlab-org/gitlab-ee/issues/1370) | User |
|
||||
| [`user_profile_visiblity_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129149) | Triggered when user toggles private profile user setting| **{dotted-circle}** No | **{check-circle}** Yes | GitLab [16.3](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129149) | User |
|
||||
| [`user_username_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106086) | Event triggered on updating a user's username| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369329) | User |
|
||||
|
||||
### Verify security
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`secure_ci_job_token_inbound_disabled`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when CI_JOB_TOKEN permissions disabled for inbound| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
| [`secure_ci_job_token_inbound_enabled`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when CI_JOB_TOKEN permissions enabled for inbound| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
| [`secure_ci_job_token_project_added`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when project added to inbound CI_JOB_TOKEN scope| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
| [`secure_ci_job_token_project_removed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115350) | Event triggered when project removed from inbound CI_JOB_TOKEN scope| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [16.0](https://gitlab.com/gitlab-org/gitlab/-/issues/338255) | Project |
|
||||
|
||||
### Webhooks
|
||||
|
||||
| Name | Description | Saved to database | Streamed | Introduced in | Scope |
|
||||
|:------------|:------------|:------------------|:---------|:--------------|:--------------|
|
||||
| [`webhook_destroyed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102342) | Event triggered when a webhook is destroyed.| **{check-circle}** Yes | **{check-circle}** Yes | GitLab [17.0](https://gitlab.com/gitlab-org/gitlab/-/issues/458817) | Project, Group, Instance |
|
||||
|
|
@ -23,7 +23,7 @@ For example, you can use audit events to track:
|
|||
- Who added a new user or removed a user, and when.
|
||||
|
||||
These events can be used to in an audit to assess risk, strengthen security measures, respond to incidents, and adhere to compliance. For a complete list the audit
|
||||
events GitLab provides, see [Audit event types](../../administration/audit_event_types.md). For example:
|
||||
events GitLab provides, see [Audit event types](../../user/compliance/audit_event_types.md). For example:
|
||||
|
||||
- Generate a report of audit events to provide to an external auditor requesting proof of certain logging capabilities.
|
||||
- Provide a report of all users showing their group and project memberships for a quarterly access review so the auditor can verify compliance with an organization's access management policy.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Pro or Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** GitLab UI, Web IDE, VS Code, and JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai), [Vertex AI Search](https://cloud.google.com/enterprise-search)
|
||||
**LLMs:** Anthropic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai), [Vertex AI Search](https://cloud.google.com/enterprise-search)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117695) for GitLab.com in GitLab 16.0.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/451215) ability to ask doc-related questions on self-managed in GitLab 17.0 [with a flag](../administration/feature_flags.md) named `ai_gateway_docs_search`. Disabled by default.
|
||||
|
|
@ -33,7 +33,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Pro or Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** GitLab UI, Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
**LLMs:** Anthropic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122235) for GitLab.com in GitLab 16.1.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122235) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
@ -59,7 +59,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Pro or Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** GitLab UI, Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-2.1`](https://docs.anthropic.com/en/docs/legacy-model-guide#anthropics-legacy-models)
|
||||
**LLMs:** Anthropic: [`claude-2.1`](https://docs.anthropic.com/en/docs/legacy-model-guide#anthropics-legacy-models)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/423524) for GitLab.com in GitLab 16.7.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/423524) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
@ -85,7 +85,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Pro or Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
**LLMs:** Anthropic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429915) for GitLab.com in GitLab 16.7.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429915) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
@ -102,13 +102,18 @@ See [Use GitLab Duo Chat in VS Code](gitlab_duo_chat.md#use-gitlab-duo-chat-in-v
|
|||
- `/explain how concurrency works in this context` (Go)
|
||||
- `/explain how the request reaches the client` (REST API, database)
|
||||
|
||||
You can also use the Web UI to explain code in:
|
||||
|
||||
- A [file](../user/project/repository/code_explain.md).
|
||||
- A [merge request](../user/project/merge_requests/changes.md#explain-code-in-a-merge-request).
|
||||
|
||||
## Refactor code in the IDE
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Pro or Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
**LLMs:** Anthropic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429915) for GitLab.com in GitLab 16.7.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429915) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
@ -129,7 +134,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Pro or Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Pro or Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
**LLMs:** Anthropic: [`claude-3-sonnet-20240229`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429915) for GitLab.com in GitLab 16.7.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429915) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
@ -173,7 +178,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** GitLab UI, Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-haiku-20240307`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
**LLMs:** Anthropic: [`claude-3-haiku-20240307`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122235) for GitLab.com in GitLab 16.0.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122235) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
@ -197,7 +202,7 @@ DETAILS:
|
|||
**Tier:** Freely available for Premium and Ultimate for a limited time for GitLab.com and self-managed. In the future, will require [GitLab Duo Enterprise](../subscriptions/subscription-add-ons.md). For GitLab Dedicated, you must have GitLab Duo Enterprise.
|
||||
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
|
||||
**Editors:** GitLab UI, Web IDE, VS Code, JetBrains IDEs
|
||||
**LLMs:** Anthopic: [`claude-3-haiku-20240307`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
**LLMs:** Anthropic: [`claude-3-haiku-20240307`](https://docs.anthropic.com/en/docs/models-overview#claude-3-a-new-generation-of-ai)
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128487) for GitLab.com in GitLab 16.3.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128487) for self-managed and GitLab Dedicated in GitLab 16.8.
|
||||
|
|
|
|||
|
|
@ -604,7 +604,7 @@ instance.
|
|||
|
||||
### Mismatched group or project path names
|
||||
|
||||
If a source group or project path doesn't conform to naming [limitations](../../reserved_names.md#limitations-on-usernames-project-and-group-names), the path is normalized to
|
||||
If a source group or project path doesn't conform to naming [limitations](../../reserved_names.md#limitations-on-usernames-project-and-group-names), the path is normalized to
|
||||
ensure it is valid. For example, `Destination-Project-Path` is normalized to `destination-project-path`.
|
||||
|
||||
### Reducing migration duration
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ As with all sensitive information, you should ensure only those who need access
|
|||
For human interactions, use credentials tied to users such as Personal Access Tokens.
|
||||
|
||||
To help detect a potential secret leak, you can use the
|
||||
[Audit Event](../../../administration/audit_event_schema.md#example-audit-event-payloads-for-git-over-ssh-events-with-deploy-key) feature.
|
||||
[Audit Event](../../compliance/audit_event_schema.md#example-audit-event-payloads-for-git-over-ssh-events-with-deploy-key) feature.
|
||||
|
||||
## View deploy keys
|
||||
|
||||
|
|
|
|||
|
|
@ -197,6 +197,55 @@ To change how a merge request shows changed lines:
|
|||
|
||||
::EndTabs
|
||||
|
||||
## Explain code in a merge request
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Freely available for Premium and Ultimate for a limited time. In the future, will require [GitLab Duo Pro or Enterprise](../../../subscriptions/subscription-add-ons.md).
|
||||
**Offering:** GitLab.com
|
||||
**Status:** Experiment
|
||||
|
||||
> - Introduced in GitLab 15.11 as an [experiment](../../../policy/experiment-beta-support.md#experiment) on GitLab.com.
|
||||
|
||||
GitLab Duo Code explanation is an [experiment](../../../policy/experiment-beta-support.md#experiment).
|
||||
|
||||
To use this feature:
|
||||
|
||||
- The parent group of the project must:
|
||||
- Enable the [experiment and beta features setting](../../../user/ai_features_enable.md#turn-on-beta-and-experimental-features).
|
||||
- You must:
|
||||
- Belong to at least one group with the [experiment and beta features setting](../../../user/ai_features_enable.md#turn-on-beta-and-experimental-features) enabled.
|
||||
- Have sufficient permissions to view the project.
|
||||
|
||||
GitLab can help you get up to speed faster if you:
|
||||
|
||||
- Spend a lot of time trying to understand pieces of code that others have created, or
|
||||
- Struggle to understand code written in a language that you are not familiar with.
|
||||
|
||||
By using a large language model, GitLab can explain the code in natural language.
|
||||
|
||||
To explain your code in a merge request:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your project.
|
||||
1. Select **Code > Merge requests**, then select your merge request.
|
||||
1. On the secondary menu, select **Changes**.
|
||||
1. On the file you would like explained, select the three dots (**{ellipsis_v}**) and select **View File @ $SHA**.
|
||||
|
||||
A separate browser tab opens and shows the full file with the latest changes.
|
||||
|
||||
1. On the new tab, select the lines that you want to have explained.
|
||||
1. On the left side, select the question mark (**{question}**). You might have to scroll to the first line of your selection to view it. This sends the selected code, together with a prompt, to provide an explanation to the large language model.
|
||||
1. A drawer is displayed on the right side of the page. Wait a moment for the explanation to be generated.
|
||||
1. Provide feedback about how satisfied you are with the explanation, so we can improve the results.
|
||||
|
||||

|
||||
|
||||
We cannot guarantee that the large language model produces results that are correct. Use the explanation with caution.
|
||||
|
||||
You can also explain code in:
|
||||
|
||||
- A [file](../../../user/project/repository/code_explain.md).
|
||||
- The [IDE](../../../user/gitlab_duo_chat_examples.md#explain-code-in-the-ide).
|
||||
|
||||
## Expand or collapse comments
|
||||
|
||||
When reviewing code changes, you can hide inline comments:
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ if a new version can be deployed without changes to the application:
|
|||
- **Minor (integer):** A change in the minor component signifies a non-breaking change, and that the
|
||||
consumer can safely use the new version without breaking, although the consumer might
|
||||
need to be updated to use its new functionality. For example, adding a non-mandatory
|
||||
feature column with a default value to the model is a minor bump, because when a value for
|
||||
feature column with a default value to the model is a minor bump, because when a value for
|
||||
the added column is not passed, inference will still work.
|
||||
|
||||
- **Patch (integer):** A change in the patch component means that a new version is out that does not
|
||||
|
|
@ -80,7 +80,7 @@ if a new version can be deployed without changes to the application:
|
|||
model does not change the feature set or how the application consumes the
|
||||
model version. Auto updating to a new patch is a safe update.
|
||||
|
||||
- **Prerelease (text):** Represents a version that is not yet ready for production use.
|
||||
- **Prerelease (text):** Represents a version that is not yet ready for production use.
|
||||
Used to identify alpha, beta, or release candidate versions of the model.
|
||||
|
||||
### Model version examples
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
stage: AI-powered
|
||||
group: AI Model Validation
|
||||
description: AI-powered features and functionality.
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
---
|
||||
|
||||
# Explain code in a file
|
||||
|
||||
DETAILS:
|
||||
**Tier:** Freely available for Premium and Ultimate for a limited time. In the future, will require [GitLab Duo Pro or Enterprise](../../../subscriptions/subscription-add-ons.md).
|
||||
**Offering:** GitLab.com
|
||||
**Status:** Experiment
|
||||
|
||||
> - Introduced in GitLab 15.11 as an [experiment](../../../policy/experiment-beta-support.md#experiment) on GitLab.com.
|
||||
|
||||
GitLab Duo Code explanation is an [experiment](../../../policy/experiment-beta-support.md#experiment).
|
||||
|
||||
To use this feature:
|
||||
|
||||
- The parent group of the project must:
|
||||
- Enable the [experiment and beta features setting](../../../user/ai_features_enable.md#turn-on-beta-and-experimental-features).
|
||||
- You must:
|
||||
- Belong to at least one group with the [experiment and beta features setting](../../../user/ai_features_enable.md#turn-on-beta-and-experimental-features) enabled.
|
||||
- Have sufficient permissions to view the project.
|
||||
|
||||
GitLab can help you get up to speed faster if you:
|
||||
|
||||
- Spend a lot of time trying to understand pieces of code that others have created, or
|
||||
- Struggle to understand code written in a language that you are not familiar with.
|
||||
|
||||
By using a large language model, GitLab can explain the code in natural language.
|
||||
|
||||
To explain your code in a file:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your project.
|
||||
1. Select any file in your project that contains code.
|
||||
1. On the file, select the lines that you want to have explained.
|
||||
1. On the left side, select the question mark (**{question}**). You might have to scroll to the first line of your selection to view it. This sends the selected code, together with a prompt, to provide an explanation to the large language model.
|
||||
1. A drawer is displayed on the right side of the page. Wait a moment for the explanation to be generated.
|
||||
1. Provide feedback about how satisfied you are with the explanation, so we can improve the results.
|
||||
|
||||

|
||||
|
||||
We cannot guarantee that the large language model produces results that are correct. Use the explanation with caution.
|
||||
|
||||
You can also explain code in:
|
||||
|
||||
- A [merge request](../../../user/project/merge_requests/changes.md#explain-code-in-a-merge-request).
|
||||
- The [IDE](../../../user/gitlab_duo_chat_examples.md#explain-code-in-the-ide).
|
||||
|
|
@ -52,6 +52,15 @@ GitLab checks certificate revocation lists on a daily basis with a background wo
|
|||
`subjectKeyIdentifier`, and `crlDistributionPoints` display as **Unverified**. We
|
||||
recommend using certificates from a PKI that are in line with
|
||||
[RFC 5280](https://www.rfc-editor.org/rfc/rfc5280).
|
||||
- Setting values in the Extended Key Usage (EKU) section of your certificate in addition to
|
||||
the required Key Usage (KU) of `Digital Signature` is likely to cause your commits to
|
||||
display as **Unverified**.
|
||||
To resolve this, add `emailProtection` to your EKU list.
|
||||
RFC 5280 specifies this limitation.
|
||||
|
||||
To diagnose it, follow [S/MIME verification with OpenSSL](#smime-verification-with-openssl).
|
||||
If this change doesn't resolve the issue,
|
||||
please provide feedback in [issue 440189](https://gitlab.com/gitlab-org/gitlab/-/issues/440189).
|
||||
- In GitLab 16.2 and earlier, if you have more than one email in the Subject Alternative Name list in
|
||||
your signing certificate,
|
||||
[only the first one is used to verify commits](https://gitlab.com/gitlab-org/gitlab/-/issues/336677).
|
||||
|
|
@ -508,19 +517,20 @@ This data can now be investigated on the Linux command line using OpenSSL:
|
|||
- `certificate verify error .. unable to get local issuer certificate`:
|
||||
- The trust chain couldn't be established.
|
||||
- This OpenSSL binary uses the GitLab trust store. Either the root certificate is missing from the trust store
|
||||
or the signature is missing the intermediate certificate(s) and a chain to a trusted root can't be built.
|
||||
or the signature is missing the intermediate certificates and a chain to a trusted root can't be built.
|
||||
- Intermediate certificates can be put in the trust store if it's not possible to include them in the signature.
|
||||
- [The procedure for adding certificates](https://docs.gitlab.com/omnibus/settings/ssl/#install-custom-public-certificates)
|
||||
to the trust store for packaged GitLab - using `/etc/gitlab/trusted-certs`.
|
||||
- Test additional trusted certificates using OpenSSL with: `-CAfile /path/to/rootcertificate.pem`
|
||||
- `unsupported certificate purpose`:
|
||||
- The certificate must specify `Digital Signature` under `Key Usage`.
|
||||
- This is usually in the `X509v3 Key Usage` section of the signer's certificate.
|
||||
- There is also a `X509v3 Extended Key Usage` section: if this is specified, it must include `Digital Signature` as well.
|
||||
- The certificate must specify `Digital Signature` in the `X509v3 Key Usage` section of the signer's certificate.
|
||||
- If the `X509v3 Extended Key Usage` (EKU) section is specified, it must include `emailProtection`.
|
||||
See [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280#page-44) for more details:
|
||||
|
||||
> If there is no purpose consistent with both (Key Usage) extensions, then the certificate MUST NOT be used for any purpose.
|
||||
|
||||
If this addition to the EKU list doesn't resolve the issue,
|
||||
please provide feedback in [issue 440189](https://gitlab.com/gitlab-org/gitlab/-/issues/440189).
|
||||
- `signer certificate not found`, either:
|
||||
- You have added the `-nointern` argument, but not supplied `-certfile`.
|
||||
- The signature is missing the signer's certificate.
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ pre-push:
|
|||
audit_event_types_docs:
|
||||
tags: documentation
|
||||
files: git diff --name-only --diff-filter=d $(git merge-base origin/master HEAD)..HEAD
|
||||
glob: '{config/audit_events/types/*.yml,ee/config/audit_events/types/*yml,doc/administration/audit_event_types.md,tooling/audit_events/docs/templates/audit_event_types.md.erb}'
|
||||
glob: '{config/audit_events/types/*.yml,ee/config/audit_events/types/*yml,doc/user/compliance/audit_event_types.md,tooling/audit_events/docs/templates/audit_event_types.md.erb}'
|
||||
run: bundle exec rake gitlab:audit_event_types:check_docs
|
||||
custom_roles_docs:
|
||||
tags: documentation
|
||||
|
|
|
|||
|
|
@ -64,7 +64,13 @@ module API
|
|||
project: user_project,
|
||||
merged_branch_names: merged_branch_names,
|
||||
expires_in: 60.minutes,
|
||||
cache_context: ->(branch) { [current_user&.cache_key, merged_branch_names.include?(branch.name)] }
|
||||
cache_context: ->(branch) {
|
||||
[
|
||||
current_user&.cache_key,
|
||||
merged_branch_names.include?(branch.name),
|
||||
user_project.default_branch
|
||||
]
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -39,19 +39,19 @@ module API
|
|||
params do
|
||||
use :pagination
|
||||
optional :order_by, type: String, values: %w[created_at name version type], default: 'created_at',
|
||||
desc: 'Return packages ordered by `created_at`, `name`, `version` or `type` fields.'
|
||||
desc: 'Return packages ordered by `created_at`, `name`, `version` or `type` fields.'
|
||||
optional :sort, type: String, values: %w[asc desc], default: 'asc',
|
||||
desc: 'Return packages sorted in `asc` or `desc` order.'
|
||||
desc: 'Return packages sorted in `asc` or `desc` order.'
|
||||
optional :package_type, type: String, values: Packages::Package.package_types.keys,
|
||||
desc: 'Return packages of a certain type'
|
||||
desc: 'Return packages of a certain type'
|
||||
optional :package_name, type: String,
|
||||
desc: 'Return packages with this name'
|
||||
desc: 'Return packages with this name'
|
||||
optional :package_version, type: String,
|
||||
desc: 'Return packages with this version'
|
||||
desc: 'Return packages with this version'
|
||||
optional :include_versionless, type: Boolean,
|
||||
desc: 'Returns packages without a version'
|
||||
desc: 'Returns packages without a version'
|
||||
optional :status, type: String, values: Packages::Package.statuses.keys,
|
||||
desc: 'Return packages with specified status'
|
||||
desc: 'Return packages with specified status'
|
||||
end
|
||||
route_setting :authentication, job_token_allowed: true
|
||||
get ':id/packages' do
|
||||
|
|
@ -98,8 +98,8 @@ module API
|
|||
optional :cursor, type: String, desc: 'Cursor for obtaining the next set of records'
|
||||
# Overrides the original definition to add the `values: 1..20` restriction
|
||||
optional :per_page, type: Integer, default: 20,
|
||||
desc: 'Number of items per page', documentation: { example: 20 },
|
||||
values: 1..20
|
||||
desc: 'Number of items per page', documentation: { example: 20 },
|
||||
values: 1..20
|
||||
end
|
||||
route_setting :authentication, job_token_allowed: true
|
||||
get ':id/packages/:package_id/pipelines' do
|
||||
|
|
|
|||
|
|
@ -80,8 +80,8 @@ module API
|
|||
requires :title, type: String, allow_blank: false, desc: 'The title of the snippet'
|
||||
optional :description, type: String, desc: 'The description of a snippet'
|
||||
requires :visibility, type: String,
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'The visibility of the snippet'
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'The visibility of the snippet'
|
||||
use :create_file_params
|
||||
end
|
||||
post ":id/snippets" do
|
||||
|
|
@ -118,8 +118,8 @@ module API
|
|||
optional :file_name, type: String, desc: 'The file name of the snippet'
|
||||
optional :title, type: String, allow_blank: false, desc: 'The title of the snippet'
|
||||
optional :visibility, type: String,
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'The visibility of the snippet'
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'The visibility of the snippet'
|
||||
|
||||
use :update_file_params
|
||||
use :minimum_update_params
|
||||
|
|
|
|||
|
|
@ -47,16 +47,16 @@ module API
|
|||
end
|
||||
params do
|
||||
requires :name, type: String,
|
||||
desc: 'The key of the template, as obtained from the collection endpoint.', documentation: { example: 'MIT' }
|
||||
desc: 'The key of the template, as obtained from the collection endpoint.', documentation: { example: 'MIT' }
|
||||
optional :source_template_project_id, type: Integer,
|
||||
desc: 'The project id where a given template is being stored. This is useful when multiple templates from different projects have the same name',
|
||||
documentation: { example: 1 }
|
||||
desc: 'The project id where a given template is being stored. This is useful when multiple templates from different projects have the same name',
|
||||
documentation: { example: 1 }
|
||||
optional :project, type: String,
|
||||
desc: 'The project name to use when expanding placeholders in the template. Only affects licenses',
|
||||
documentation: { example: 'GitLab' }
|
||||
desc: 'The project name to use when expanding placeholders in the template. Only affects licenses',
|
||||
documentation: { example: 'GitLab' }
|
||||
optional :fullname, type: String,
|
||||
desc: 'The full name of the copyright holder to use when expanding placeholders in the template. Only affects licenses',
|
||||
documentation: { example: 'GitLab B.V.' }
|
||||
desc: 'The full name of the copyright holder to use when expanding placeholders in the template. Only affects licenses',
|
||||
documentation: { example: 'GitLab B.V.' }
|
||||
end
|
||||
|
||||
get ':id/templates/:type/:name', requirements: TEMPLATE_NAMES_ENDPOINT_REQUIREMENTS do
|
||||
|
|
|
|||
|
|
@ -133,21 +133,21 @@ module API
|
|||
use :pagination
|
||||
|
||||
optional :simple, type: Boolean, default: false,
|
||||
desc: 'Return only the ID, URL, name, and path of each project'
|
||||
desc: 'Return only the ID, URL, name, and path of each project'
|
||||
end
|
||||
|
||||
params :sort_params do
|
||||
optional :order_by, type: String,
|
||||
values: %w[id name path created_at updated_at last_activity_at similarity] + Helpers::ProjectsHelpers::STATISTICS_SORT_PARAMS,
|
||||
default: 'created_at', desc: "Return projects ordered by field. #{Helpers::ProjectsHelpers::STATISTICS_SORT_PARAMS.join(', ')} are only available to admins. Similarity is available when searching and is limited to projects the user has access to."
|
||||
values: %w[id name path created_at updated_at last_activity_at similarity] + Helpers::ProjectsHelpers::STATISTICS_SORT_PARAMS,
|
||||
default: 'created_at', desc: "Return projects ordered by field. #{Helpers::ProjectsHelpers::STATISTICS_SORT_PARAMS.join(', ')} are only available to admins. Similarity is available when searching and is limited to projects the user has access to."
|
||||
optional :sort, type: String, values: %w[asc desc], default: 'desc',
|
||||
desc: 'Return projects sorted in ascending and descending order'
|
||||
desc: 'Return projects sorted in ascending and descending order'
|
||||
end
|
||||
|
||||
params :filter_params do
|
||||
optional :archived, type: Boolean, desc: 'Limit by archived status'
|
||||
optional :visibility, type: String, values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'Limit by visibility'
|
||||
desc: 'Limit by visibility'
|
||||
optional :search, type: String, desc: 'Return list of projects matching the search criteria'
|
||||
optional :search_namespaces, type: Boolean, desc: "Include ancestor namespaces when matching search criteria"
|
||||
optional :owned, type: Boolean, default: false, desc: 'Limit by owned by authenticated user'
|
||||
|
|
@ -279,7 +279,7 @@ module API
|
|||
use :pagination
|
||||
|
||||
optional :simple, type: Boolean, default: false,
|
||||
desc: 'Return only the ID, URL, name, and path of each project'
|
||||
desc: 'Return only the ID, URL, name, and path of each project'
|
||||
end
|
||||
get ":user_id/contributed_projects", feature_category: :groups_and_projects, urgency: :low do
|
||||
if Feature.enabled?(:rate_limit_groups_and_projects_api, current_user)
|
||||
|
|
@ -371,8 +371,8 @@ module API
|
|||
|
||||
if project.saved?
|
||||
present_project project, with: Entities::Project,
|
||||
user_can_admin_project: can?(current_user, :admin_project, project),
|
||||
current_user: current_user
|
||||
user_can_admin_project: can?(current_user, :admin_project, project),
|
||||
current_user: current_user
|
||||
else
|
||||
if project.errors[:limit_reached].present?
|
||||
error!(project.errors[:limit_reached], 403)
|
||||
|
|
@ -419,8 +419,8 @@ module API
|
|||
|
||||
if project.saved?
|
||||
present_project project, with: Entities::Project,
|
||||
user_can_admin_project: can?(current_user, :admin_project, project),
|
||||
current_user: current_user
|
||||
user_can_admin_project: can?(current_user, :admin_project, project),
|
||||
current_user: current_user
|
||||
else
|
||||
forbidden! if project.errors[:import_source_disabled].present?
|
||||
|
||||
|
|
@ -457,7 +457,7 @@ module API
|
|||
use :with_custom_attributes
|
||||
|
||||
optional :license, type: Boolean, default: false,
|
||||
desc: 'Include project license data'
|
||||
desc: 'Include project license data'
|
||||
end
|
||||
# TODO: Set higher urgency https://gitlab.com/gitlab-org/gitlab/-/issues/357622
|
||||
get ":id", feature_category: :groups_and_projects, urgency: :low do
|
||||
|
|
@ -594,8 +594,8 @@ module API
|
|||
|
||||
if result[:status] == :success
|
||||
present_project user_project, with: Entities::Project,
|
||||
user_can_admin_project: can?(current_user, :admin_project, user_project),
|
||||
current_user: current_user
|
||||
user_can_admin_project: can?(current_user, :admin_project, user_project),
|
||||
current_user: current_user
|
||||
else
|
||||
render_validation_error!(user_project)
|
||||
end
|
||||
|
|
@ -936,11 +936,11 @@ module API
|
|||
optional :search, type: String, desc: 'Return list of groups matching the search criteria', documentation: { example: 'group' }
|
||||
optional :skip_groups, type: Array[Integer], coerce_with: ::API::Validations::Types::CommaSeparatedToIntegerArray.coerce, desc: 'Array of group ids to exclude from list'
|
||||
optional :with_shared, type: Boolean, default: false,
|
||||
desc: 'Include shared groups'
|
||||
desc: 'Include shared groups'
|
||||
optional :shared_visible_only, type: Boolean, default: false,
|
||||
desc: 'Limit to shared groups user has access to'
|
||||
desc: 'Limit to shared groups user has access to'
|
||||
optional :shared_min_access_level, type: Integer, values: Gitlab::Access.all_values,
|
||||
desc: 'Limit returned shared groups by minimum access level to the project'
|
||||
desc: 'Limit returned shared groups by minimum access level to the project'
|
||||
use :pagination
|
||||
end
|
||||
get ':id/groups', feature_category: :source_code_management do
|
||||
|
|
|
|||
|
|
@ -75,14 +75,14 @@ module API
|
|||
params do
|
||||
requires :name, type: String, desc: 'The name of the protected branch', documentation: { example: 'main' }
|
||||
optional :push_access_level, type: Integer,
|
||||
values: ProtectedBranch::PushAccessLevel.allowed_access_levels,
|
||||
desc: 'Access levels allowed to push (defaults: `40`, maintainer access level)'
|
||||
values: ProtectedBranch::PushAccessLevel.allowed_access_levels,
|
||||
desc: 'Access levels allowed to push (defaults: `40`, maintainer access level)'
|
||||
optional :merge_access_level, type: Integer,
|
||||
values: ProtectedBranch::MergeAccessLevel.allowed_access_levels,
|
||||
desc: 'Access levels allowed to merge (defaults: `40`, maintainer access level)'
|
||||
values: ProtectedBranch::MergeAccessLevel.allowed_access_levels,
|
||||
desc: 'Access levels allowed to merge (defaults: `40`, maintainer access level)'
|
||||
optional :allow_force_push, type: Boolean,
|
||||
default: false,
|
||||
desc: 'Allow force push for all users with push access.'
|
||||
default: false,
|
||||
desc: 'Allow force push for all users with push access.'
|
||||
|
||||
use :optional_params_ee
|
||||
end
|
||||
|
|
@ -120,8 +120,8 @@ module API
|
|||
params do
|
||||
requires :name, type: String, desc: 'The name of the branch', documentation: { example: 'main' }
|
||||
optional :allow_force_push, type: Boolean,
|
||||
desc: 'Allow force push for all users with push access.',
|
||||
allow_blank: false
|
||||
desc: 'Allow force push for all users with push access.',
|
||||
allow_blank: false
|
||||
|
||||
use :optional_params_ee
|
||||
end
|
||||
|
|
|
|||
|
|
@ -70,10 +70,10 @@ module API
|
|||
params do
|
||||
requires :name, type: String, desc: 'The name of the protected tag', documentation: { example: 'release-1-0' }
|
||||
optional :create_access_level,
|
||||
type: Integer,
|
||||
values: ProtectedTag::CreateAccessLevel.allowed_access_levels,
|
||||
desc: 'Access levels allowed to create (defaults: `40`, maintainer access level)',
|
||||
documentation: { example: 30 }
|
||||
type: Integer,
|
||||
values: ProtectedTag::CreateAccessLevel.allowed_access_levels,
|
||||
desc: 'Access levels allowed to create (defaults: `40`, maintainer access level)',
|
||||
documentation: { example: 30 }
|
||||
use :optional_params_ee
|
||||
end
|
||||
post ':id/protected_tags' do
|
||||
|
|
@ -83,8 +83,8 @@ module API
|
|||
}
|
||||
|
||||
protected_tag = ::ProtectedTags::CreateService.new(user_project,
|
||||
current_user,
|
||||
protected_tags_params).execute
|
||||
current_user,
|
||||
protected_tags_params).execute
|
||||
|
||||
if protected_tag.persisted?
|
||||
present protected_tag, with: Entities::ProtectedTag, project: user_project
|
||||
|
|
|
|||
|
|
@ -105,14 +105,14 @@ module API
|
|||
# Since the cached result could contain sensitive information,
|
||||
# it will expire in a short interval.
|
||||
present_cached paginate(releases),
|
||||
with: Entities::Release,
|
||||
# `current_user` could be absent if the releases are publicly accesible.
|
||||
# We should not use `cache_key` for the user because the version/updated_at
|
||||
# context is unnecessary here.
|
||||
cache_context: ->(_) { "user:{#{current_user&.id}}" },
|
||||
expires_in: 5.minutes,
|
||||
current_user: current_user,
|
||||
include_html_description: declared_params[:include_html_description]
|
||||
with: Entities::Release,
|
||||
# `current_user` could be absent if the releases are publicly accesible.
|
||||
# We should not use `cache_key` for the user because the version/updated_at
|
||||
# context is unnecessary here.
|
||||
cache_context: ->(_) { "user:{#{current_user&.id}}" },
|
||||
expires_in: 5.minutes,
|
||||
current_user: current_user,
|
||||
include_html_description: declared_params[:include_html_description]
|
||||
end
|
||||
|
||||
desc 'Get a release by a tag name' do
|
||||
|
|
@ -253,9 +253,9 @@ module API
|
|||
desc: 'The title of each milestone the release is associated with. GitLab Premium customers can specify group milestones. Cannot be combined with `milestone_ids` parameter.'
|
||||
|
||||
optional :milestone_ids,
|
||||
type: Array[String, Integer],
|
||||
coerce_with: ::API::Validations::Types::CommaSeparatedToIntegerArray.coerce,
|
||||
desc: 'The ID of each milestone the release is associated with. GitLab Premium customers can specify group milestones. Cannot be combined with `milestones` parameter.'
|
||||
type: Array[String, Integer],
|
||||
coerce_with: ::API::Validations::Types::CommaSeparatedToIntegerArray.coerce,
|
||||
desc: 'The ID of each milestone the release is associated with. GitLab Premium customers can specify group milestones. Cannot be combined with `milestones` parameter.'
|
||||
|
||||
mutually_exclusive :milestones, :milestone_ids, message: 'Cannot specify milestones and milestone_ids at the same time'
|
||||
|
||||
|
|
|
|||
|
|
@ -92,9 +92,9 @@ module API
|
|||
requires :url, type: String, desc: 'The URL for a remote mirror', documentation: { example: 'https://*****:*****@example.com/gitlab/example.git' }
|
||||
optional :enabled, type: Boolean, desc: 'Determines if the mirror is enabled', documentation: { example: false }
|
||||
optional :auth_method, type: String, desc: 'Determines the mirror authentication method',
|
||||
values: %w[ssh_public_key password]
|
||||
values: %w[ssh_public_key password]
|
||||
optional :keep_divergent_refs, type: Boolean, desc: 'Determines if divergent refs are kept on the target',
|
||||
documentation: { example: false }
|
||||
documentation: { example: false }
|
||||
use :mirror_branches_setting
|
||||
end
|
||||
post ':id/remote_mirrors' do
|
||||
|
|
@ -127,7 +127,7 @@ module API
|
|||
optional :enabled, type: Boolean, desc: 'Determines if the mirror is enabled', documentation: { example: true }
|
||||
optional :auth_method, type: String, desc: 'Determines the mirror authentication method'
|
||||
optional :keep_divergent_refs, type: Boolean, desc: 'Determines if divergent refs are kept on the target',
|
||||
documentation: { example: false }
|
||||
documentation: { example: false }
|
||||
use :mirror_branches_setting
|
||||
end
|
||||
put ':id/remote_mirrors/:mirror_id' do
|
||||
|
|
|
|||
|
|
@ -48,8 +48,8 @@ module API
|
|||
|
||||
params do
|
||||
requires :id, types: [String, Integer],
|
||||
desc: 'The ID or URL-encoded path of the project',
|
||||
documentation: { example: 1 }
|
||||
desc: 'The ID or URL-encoded path of the project',
|
||||
documentation: { example: 1 }
|
||||
end
|
||||
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
|
||||
helpers do
|
||||
|
|
@ -107,8 +107,8 @@ module API
|
|||
end
|
||||
params do
|
||||
optional :ref, type: String,
|
||||
desc: 'The name of a repository branch or tag, if not given the default branch is used',
|
||||
documentation: { example: 'main' }
|
||||
desc: 'The name of a repository branch or tag, if not given the default branch is used',
|
||||
documentation: { example: 'main' }
|
||||
optional :path, type: String, desc: 'The path of the tree', documentation: { example: 'files/html' }
|
||||
optional :recursive, type: Boolean, default: false, desc: 'Used to get a recursive tree'
|
||||
|
||||
|
|
@ -117,8 +117,8 @@ module API
|
|||
|
||||
given pagination: ->(value) { value == 'keyset' } do
|
||||
optional :page_token, type: String,
|
||||
desc: 'Record from which to start the keyset pagination',
|
||||
documentation: { example: 'a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba' }
|
||||
desc: 'Record from which to start the keyset pagination',
|
||||
documentation: { example: 'a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba' }
|
||||
end
|
||||
|
||||
given pagination: ->(value) { value == 'none' } do
|
||||
|
|
@ -143,7 +143,7 @@ module API
|
|||
desc 'Get raw blob contents from the repository'
|
||||
params do
|
||||
requires :sha, type: String,
|
||||
desc: 'The commit hash', documentation: { example: '7d70e02340bac451f281cecf0a980907974bd8be' }
|
||||
desc: 'The commit hash', documentation: { example: '7d70e02340bac451f281cecf0a980907974bd8be' }
|
||||
end
|
||||
get ':id/repository/blobs/:sha/raw' do
|
||||
# Load metadata enough to ask Workhorse to load the whole blob
|
||||
|
|
@ -157,7 +157,7 @@ module API
|
|||
desc 'Get a blob from the repository'
|
||||
params do
|
||||
requires :sha, type: String,
|
||||
desc: 'The commit hash', documentation: { example: '7d70e02340bac451f281cecf0a980907974bd8be' }
|
||||
desc: 'The commit hash', documentation: { example: '7d70e02340bac451f281cecf0a980907974bd8be' }
|
||||
end
|
||||
get ':id/repository/blobs/:sha' do
|
||||
assign_blob_vars!(limit: -1)
|
||||
|
|
@ -173,11 +173,11 @@ module API
|
|||
desc 'Get an archive of the repository'
|
||||
params do
|
||||
optional :sha, type: String,
|
||||
desc: 'The commit sha of the archive to be downloaded',
|
||||
documentation: { example: '7d70e02340bac451f281cecf0a980907974bd8be' }
|
||||
desc: 'The commit sha of the archive to be downloaded',
|
||||
documentation: { example: '7d70e02340bac451f281cecf0a980907974bd8be' }
|
||||
optional :format, type: String, desc: 'The archive format', documentation: { example: 'tar.gz' }
|
||||
optional :path, type: String,
|
||||
desc: 'Subfolder of the repository to be downloaded', documentation: { example: 'files/archives' }
|
||||
desc: 'Subfolder of the repository to be downloaded', documentation: { example: 'files/archives' }
|
||||
end
|
||||
get ':id/repository/archive', requirements: { format: Gitlab::PathRegex.archive_formats_regex } do
|
||||
check_archive_rate_limit!(current_user, user_project) do
|
||||
|
|
@ -196,11 +196,11 @@ module API
|
|||
end
|
||||
params do
|
||||
requires :from, type: String,
|
||||
desc: 'The commit, branch name, or tag name to start comparison',
|
||||
documentation: { example: 'main' }
|
||||
desc: 'The commit, branch name, or tag name to start comparison',
|
||||
documentation: { example: 'main' }
|
||||
requires :to, type: String,
|
||||
desc: 'The commit, branch name, or tag name to stop comparison',
|
||||
documentation: { example: 'feature' }
|
||||
desc: 'The commit, branch name, or tag name to stop comparison',
|
||||
documentation: { example: 'feature' }
|
||||
optional :from_project_id, type: Integer, desc: 'The project to compare from', documentation: { example: 1 }
|
||||
optional :straight, type: Boolean, desc: 'Comparison method, `true` for direct comparison between `from` and `to` (`from`..`to`), `false` to compare using merge base (`from`...`to`)', default: false
|
||||
use :with_unidiff
|
||||
|
|
@ -249,9 +249,9 @@ module API
|
|||
end
|
||||
params do
|
||||
requires :refs, type: Array[String],
|
||||
coerce_with: ::API::Validations::Types::CommaSeparatedToArray.coerce,
|
||||
desc: 'The refs to find the common ancestor of, multiple refs can be passed',
|
||||
documentation: { example: 'main' }
|
||||
coerce_with: ::API::Validations::Types::CommaSeparatedToArray.coerce,
|
||||
desc: 'The refs to find the common ancestor of, multiple refs can be passed',
|
||||
documentation: { example: 'main' }
|
||||
end
|
||||
get ':id/repository/merge_base' do
|
||||
refs = params[:refs]
|
||||
|
|
|
|||
|
|
@ -142,9 +142,9 @@ module API
|
|||
requires :id, type: String, desc: "The #{source_type} ID"
|
||||
requires :token_id, type: String, desc: "The ID of the token"
|
||||
optional :expires_at,
|
||||
type: Date,
|
||||
desc: "The expiration date of the token",
|
||||
documentation: { example: '2021-01-31' }
|
||||
type: Date,
|
||||
desc: "The expiration date of the token",
|
||||
documentation: { example: '2021-01-31' }
|
||||
end
|
||||
post ':id/access_tokens/:token_id/rotate' do
|
||||
resource = find_source(source_type, params[:id])
|
||||
|
|
|
|||
|
|
@ -109,8 +109,8 @@ module API
|
|||
end
|
||||
optional :html_emails_enabled, type: Boolean, desc: 'By default GitLab sends emails in HTML and plain text formats so mail clients can choose what format to use. Disable this option if you only want to send emails in plain text format.'
|
||||
optional :import_sources, type: Array[String], coerce_with: Validations::Types::CommaSeparatedToArray.coerce,
|
||||
values: %w[github bitbucket bitbucket_server fogbugz git gitlab_project gitea manifest],
|
||||
desc: 'Enabled sources for code import during project creation. OmniAuth must be configured for GitHub, Bitbucket, and GitLab.com'
|
||||
values: %w[github bitbucket bitbucket_server fogbugz git gitlab_project gitea manifest],
|
||||
desc: 'Enabled sources for code import during project creation. OmniAuth must be configured for GitHub, Bitbucket, and GitLab.com'
|
||||
optional :invisible_captcha_enabled, type: Boolean, desc: 'Enable Invisible Captcha spam detection during signup.'
|
||||
optional :max_artifacts_size, type: Integer, desc: "Set the maximum file size for each job's artifacts"
|
||||
optional :max_attachment_size, type: Integer, desc: 'Maximum attachment size in MB'
|
||||
|
|
@ -236,9 +236,9 @@ module API
|
|||
|
||||
Gitlab::SSHPublicKey.supported_types.each do |type|
|
||||
optional :"#{type}_key_restriction",
|
||||
type: Integer,
|
||||
values: KeyRestrictionValidator.supported_key_restrictions(type),
|
||||
desc: "Restrictions on the complexity of uploaded #{type.upcase} keys. A value of #{ApplicationSetting::FORBIDDEN_KEY_VALUE} disables all #{type.upcase} keys."
|
||||
type: Integer,
|
||||
values: KeyRestrictionValidator.supported_key_restrictions(type),
|
||||
desc: "Restrictions on the complexity of uploaded #{type.upcase} keys. A value of #{ApplicationSetting::FORBIDDEN_KEY_VALUE} disables all #{type.upcase} keys."
|
||||
end
|
||||
|
||||
use :optional_params_ee
|
||||
|
|
|
|||
|
|
@ -125,9 +125,9 @@ module API
|
|||
requires :title, type: String, allow_blank: false, desc: 'The title of a snippet'
|
||||
optional :description, type: String, desc: 'The description of a snippet'
|
||||
optional :visibility, type: String,
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
default: 'internal',
|
||||
desc: 'The visibility of the snippet'
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
default: 'internal',
|
||||
desc: 'The visibility of the snippet'
|
||||
|
||||
use :create_file_params
|
||||
end
|
||||
|
|
@ -166,8 +166,8 @@ module API
|
|||
optional :file_name, type: String, desc: 'The name of a snippet file'
|
||||
optional :title, type: String, allow_blank: false, desc: 'The title of a snippet'
|
||||
optional :visibility, type: String,
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'The visibility of the snippet'
|
||||
values: Gitlab::VisibilityLevel.string_values,
|
||||
desc: 'The visibility of the snippet'
|
||||
|
||||
use :update_file_params
|
||||
use :minimum_update_params
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ module API
|
|||
optional :name, type: String, desc: 'Name of the hook'
|
||||
optional :description, type: String, desc: 'Description of the hook'
|
||||
optional :token, type: String,
|
||||
desc: "Secret token to validate received payloads; this isn't returned in the response"
|
||||
desc: "Secret token to validate received payloads; this isn't returned in the response"
|
||||
optional :push_events, type: Boolean, desc: 'When true, the hook fires on push events'
|
||||
optional :tag_push_events, type: Boolean, desc: 'When true, the hook fires on new tags being pushed'
|
||||
optional :merge_requests_events, type: Boolean, desc: 'Trigger hook on merge requests events'
|
||||
|
|
|
|||
|
|
@ -88,10 +88,6 @@ module Gitlab
|
|||
def pattern_matches?(paths, pattern_globs, context)
|
||||
return true if (paths.size * pattern_globs.size) > MAX_PATTERN_COMPARISONS
|
||||
|
||||
if ::Feature.disabled?(:ci_rules_exists_pattern_matches_cache, context.project)
|
||||
return legacy_pattern_matches?(paths, pattern_globs)
|
||||
end
|
||||
|
||||
pattern_globs.any? do |glob|
|
||||
Gitlab::SafeRequestStore.fetch("ci_rules_exists_pattern_matches_#{context.project&.id}_#{glob}") do
|
||||
paths.any? do |path|
|
||||
|
|
@ -101,14 +97,6 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
|
||||
def legacy_pattern_matches?(paths, pattern_globs)
|
||||
pattern_globs.any? do |glob|
|
||||
paths.any? do |path|
|
||||
pattern_match?(glob, path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def pattern_match?(glob, path)
|
||||
File.fnmatch?(glob, path, File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -18,25 +18,25 @@ module Gitlab
|
|||
parent_type_id: objective.id,
|
||||
child_type_id: objective.id,
|
||||
maximum_depth: 9,
|
||||
cross_hierarchy_enabled: false
|
||||
cross_hierarchy_enabled: true
|
||||
},
|
||||
{
|
||||
parent_type_id: objective.id,
|
||||
child_type_id: key_result.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: false
|
||||
cross_hierarchy_enabled: true
|
||||
},
|
||||
{
|
||||
parent_type_id: issue.id,
|
||||
child_type_id: task.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: false
|
||||
cross_hierarchy_enabled: true
|
||||
},
|
||||
{
|
||||
parent_type_id: incident.id,
|
||||
child_type_id: task.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: false
|
||||
cross_hierarchy_enabled: true
|
||||
},
|
||||
{
|
||||
parent_type_id: epic.id,
|
||||
|
|
@ -54,7 +54,7 @@ module Gitlab
|
|||
parent_type_id: ticket.id,
|
||||
child_type_id: task.id,
|
||||
maximum_depth: 1,
|
||||
cross_hierarchy_enabled: false
|
||||
cross_hierarchy_enabled: true
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ return if Rails.env.production?
|
|||
|
||||
namespace :gitlab do
|
||||
namespace :audit_event_types do
|
||||
event_types_dir = Rails.root.join("doc/administration")
|
||||
event_types_dir = Rails.root.join("doc/user/compliance")
|
||||
event_types_doc_file = Rails.root.join(event_types_dir, 'audit_event_types.md')
|
||||
template_directory = 'tooling/audit_events/docs/templates/'
|
||||
template_erb_file_path = Rails.root.join(template_directory, 'audit_event_types.md.erb')
|
||||
|
|
|
|||
|
|
@ -55280,9 +55280,6 @@ msgstr ""
|
|||
msgid "Trial|Allowed characters: +, 0-9, -, and spaces."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Continue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Cookie Policy"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -55295,12 +55292,18 @@ msgstr ""
|
|||
msgid "Trial|Privacy Statement"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Start free GitLab Ultimate trial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|State/Province"
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|To activate your trial, we need additional details from you."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|You don't need a credit card to start a trial. After the 30-day trial period, your account automatically becomes a GitLab Free account. You can use your GitLab Free account forever, or upgrade to a paid tier."
|
||||
msgstr ""
|
||||
|
||||
msgid "Trial|Your GitLab Ultimate trial lasts for 30 days, but you can keep your free GitLab account forever. We just need some additional information to activate your trial."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -59352,6 +59355,9 @@ msgstr ""
|
|||
msgid "WorkItem|Search existing items, paste URL, or enter reference ID"
|
||||
msgstr ""
|
||||
|
||||
msgid "WorkItem|Select a project"
|
||||
msgstr ""
|
||||
|
||||
msgid "WorkItem|Select type"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ class GenerateAsIfFossEnv
|
|||
# rubocop:disable Lint/AssignmentInCondition -- More clear without this cop
|
||||
if FOSS_JOBS.member?(job.name)
|
||||
other_jobs << job.name
|
||||
elsif jest_type = job.name[%r{^(jest(?:-\w+)?)(?: \d+/\d+)?$}, 1]
|
||||
elsif jest_type = job.name[%r{^(jest(?:-\w+| predictive)?)(?: \d+/\d+)?$}, 1]
|
||||
other_jobs << jest_type
|
||||
elsif cache_assets_type = job.name[%r{^(cache-assets)\b}, 1]
|
||||
other_jobs << cache_assets_type
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ RSpec.describe "Help Dropdown", :js, feature_category: :shared do
|
|||
|
||||
expect(page).not_to have_text('Your GitLab version')
|
||||
expect(page).not_to have_text("#{Gitlab.version_info.major}.#{Gitlab.version_info.minor}")
|
||||
expect(page).not_to have_selector('.version-check-badge')
|
||||
expect(page).not_to have_selector('[data-testid="check-version-badge"]')
|
||||
expect(page).not_to have_text('Up to date')
|
||||
end
|
||||
end
|
||||
|
|
@ -43,7 +43,7 @@ RSpec.describe "Help Dropdown", :js, feature_category: :shared do
|
|||
expect(page).to have_text("#{Gitlab.version_info.major}.#{Gitlab.version_info.minor}")
|
||||
|
||||
within page.find_link(href: help_page_path('update/index')) do
|
||||
expect(page).to have_selector(".version-check-badge.badge-#{severity}", text: ui_text)
|
||||
expect(page).to have_selector(".badge-#{severity}", text: ui_text)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ describe('GitlabVersionCheckBadge', () => {
|
|||
unmockTracking();
|
||||
});
|
||||
|
||||
const findGlBadgeClickWrapper = () => wrapper.findByTestId('badge-click-wrapper');
|
||||
const findVersionCheckBadge = () => wrapper.findByTestId('check-version-badge');
|
||||
const findGlBadge = () => wrapper.findComponent(GlBadge);
|
||||
|
||||
describe('template', () => {
|
||||
|
|
@ -62,7 +62,7 @@ describe('GitlabVersionCheckBadge', () => {
|
|||
});
|
||||
|
||||
it(`tracks click_version_badge with label ${expectedUI.title} when badge is clicked`, async () => {
|
||||
await findGlBadgeClickWrapper().trigger('click');
|
||||
await findVersionCheckBadge().trigger('click');
|
||||
|
||||
expect(trackingSpy).toHaveBeenCalledWith(undefined, 'click_link', {
|
||||
label: 'version_badge',
|
||||
|
|
@ -89,7 +89,7 @@ describe('GitlabVersionCheckBadge', () => {
|
|||
});
|
||||
|
||||
it('does not track click_version_badge', async () => {
|
||||
await findGlBadgeClickWrapper().trigger('click');
|
||||
await findVersionCheckBadge().trigger('click');
|
||||
|
||||
expect(trackingSpy).not.toHaveBeenCalledWith(undefined, 'click_link', {
|
||||
label: 'version_badge',
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ export const VERSION_CHECK_BADGE_NO_SEVERITY_FIXTURE = `<div class="js-gitlab-ve
|
|||
|
||||
export const VERSION_CHECK_BADGE_FIXTURE = `<div class="js-gitlab-version-check-badge" data-version='{ "severity": "success" }'></div>`;
|
||||
|
||||
export const VERSION_CHECK_BADGE_FINDER = '[data-testid="badge-click-wrapper"]';
|
||||
export const VERSION_CHECK_BADGE_FINDER = '[data-testid="check-version-badge"]';
|
||||
|
||||
export const VERSION_BADGE_TEXT = 'Up to date';
|
||||
|
||||
|
|
|
|||
|
|
@ -9,32 +9,48 @@ import createMockApollo from 'helpers/mock_apollo_helper';
|
|||
import waitForPromises from 'helpers/wait_for_promises';
|
||||
import WorkItemLinksForm from '~/work_items/components/work_item_links/work_item_links_form.vue';
|
||||
import WorkItemTokenInput from '~/work_items/components/shared/work_item_token_input.vue';
|
||||
import WorkItemProjectsListbox from '~/work_items/components/work_item_links/work_item_projects_listbox.vue';
|
||||
import {
|
||||
FORM_TYPES,
|
||||
WORK_ITEM_TYPE_ENUM_TASK,
|
||||
WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
I18N_WORK_ITEM_CONFIDENTIALITY_CHECKBOX_LABEL,
|
||||
I18N_WORK_ITEM_CONFIDENTIALITY_CHECKBOX_TOOLTIP,
|
||||
SEARCH_DEBOUNCE,
|
||||
} from '~/work_items/constants';
|
||||
import projectWorkItemsQuery from '~/work_items/graphql/project_work_items.query.graphql';
|
||||
import groupWorkItemTypesQuery from '~/work_items/graphql/group_work_item_types.query.graphql';
|
||||
import projectWorkItemTypesQuery from '~/work_items/graphql/project_work_item_types.query.graphql';
|
||||
import createWorkItemMutation from '~/work_items/graphql/create_work_item.mutation.graphql';
|
||||
import updateWorkItemMutation from '~/work_items/graphql/update_work_item.mutation.graphql';
|
||||
import groupProjectsForLinksWidgetQuery from '~/work_items/graphql/group_projects_for_links_widget.query.graphql';
|
||||
import {
|
||||
availableWorkItemsResponse,
|
||||
createWorkItemMutationResponse,
|
||||
updateWorkItemMutationResponse,
|
||||
mockIterationWidgetResponse,
|
||||
groupProjectsList,
|
||||
} from '../../mock_data';
|
||||
|
||||
Vue.use(VueApollo);
|
||||
|
||||
const workItemTypeIdForTask = projectWorkItemTypesQueryResponse.data.workspace.workItemTypes.nodes.find(
|
||||
(node) => node.name === 'Task',
|
||||
).id;
|
||||
const projectData = groupProjectsList.data.group.projects.nodes;
|
||||
|
||||
const findWorkItemTypeId = (typeName) => {
|
||||
return projectWorkItemTypesQueryResponse.data.workspace.workItemTypes.nodes.find(
|
||||
(node) => node.name === typeName,
|
||||
).id;
|
||||
};
|
||||
|
||||
const workItemTypeIdForTask = findWorkItemTypeId('Task');
|
||||
const workItemTypeIdForIssue = findWorkItemTypeId('Issue');
|
||||
|
||||
describe('WorkItemLinksForm', () => {
|
||||
/**
|
||||
* @type {import('helpers/vue_test_utils_helper').ExtendedWrapper}
|
||||
*/
|
||||
let wrapper;
|
||||
|
||||
const updateMutationResolver = jest.fn().mockResolvedValue(updateWorkItemMutationResponse);
|
||||
|
|
@ -44,6 +60,7 @@ describe('WorkItemLinksForm', () => {
|
|||
.fn()
|
||||
.mockResolvedValue(projectWorkItemTypesQueryResponse);
|
||||
const groupWorkItemTypesResolver = jest.fn().mockResolvedValue(groupWorkItemTypesQueryResponse);
|
||||
const groupProjectsFormLinksWidgetResolver = jest.fn().mockResolvedValue(groupProjectsList);
|
||||
|
||||
const mockParentIteration = mockIterationWidgetResponse;
|
||||
|
||||
|
|
@ -61,11 +78,12 @@ describe('WorkItemLinksForm', () => {
|
|||
[projectWorkItemsQuery, availableWorkItemsResolver],
|
||||
[projectWorkItemTypesQuery, projectWorkItemTypesResolver],
|
||||
[groupWorkItemTypesQuery, groupWorkItemTypesResolver],
|
||||
[groupProjectsForLinksWidgetQuery, groupProjectsFormLinksWidgetResolver],
|
||||
[updateWorkItemMutation, updateMutationResolver],
|
||||
[createWorkItemMutation, createMutationResolver],
|
||||
]),
|
||||
propsData: {
|
||||
fullPath: 'project/path',
|
||||
fullPath: 'group-a',
|
||||
issuableGid: 'gid://gitlab/WorkItem/1',
|
||||
parentConfidential,
|
||||
parentIteration,
|
||||
|
|
@ -79,6 +97,7 @@ describe('WorkItemLinksForm', () => {
|
|||
},
|
||||
});
|
||||
|
||||
jest.advanceTimersByTime(SEARCH_DEBOUNCE);
|
||||
await waitForPromises();
|
||||
};
|
||||
|
||||
|
|
@ -89,6 +108,11 @@ describe('WorkItemLinksForm', () => {
|
|||
const findTooltip = () => wrapper.findComponent(GlTooltip);
|
||||
const findAddChildButton = () => wrapper.findByTestId('add-child-button');
|
||||
const findValidationElement = () => wrapper.findByTestId('work-items-invalid');
|
||||
const findProjectSelector = () => wrapper.findComponent(WorkItemProjectsListbox);
|
||||
|
||||
beforeEach(() => {
|
||||
gon.current_username = 'root';
|
||||
});
|
||||
|
||||
it.each`
|
||||
workspace | isGroup | queryResolver
|
||||
|
|
@ -104,63 +128,143 @@ describe('WorkItemLinksForm', () => {
|
|||
);
|
||||
|
||||
describe('creating a new work item', () => {
|
||||
beforeEach(async () => {
|
||||
await createComponent();
|
||||
});
|
||||
|
||||
it('renders create form', () => {
|
||||
expect(findForm().exists()).toBe(true);
|
||||
expect(findInput().exists()).toBe(true);
|
||||
expect(findAddChildButton().text()).toBe('Create task');
|
||||
expect(findWorkItemTokenInput().exists()).toBe(false);
|
||||
});
|
||||
|
||||
it('creates child task in non confidential parent', async () => {
|
||||
findInput().vm.$emit('input', 'Create task test');
|
||||
|
||||
findForm().vm.$emit('submit', {
|
||||
preventDefault: jest.fn(),
|
||||
describe('for project level work items', () => {
|
||||
beforeEach(async () => {
|
||||
await createComponent();
|
||||
});
|
||||
await waitForPromises();
|
||||
|
||||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create task test',
|
||||
projectPath: 'project/path',
|
||||
workItemTypeId: workItemTypeIdForTask,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
it('renders create form', () => {
|
||||
expect(findForm().exists()).toBe(true);
|
||||
expect(findInput().exists()).toBe(true);
|
||||
expect(findAddChildButton().text()).toBe('Create task');
|
||||
expect(findWorkItemTokenInput().exists()).toBe(false);
|
||||
});
|
||||
|
||||
it('creates child task in non confidential parent', async () => {
|
||||
findInput().vm.$emit('input', 'Create task test');
|
||||
|
||||
findForm().vm.$emit('submit', {
|
||||
preventDefault: jest.fn(),
|
||||
});
|
||||
await waitForPromises();
|
||||
|
||||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create task test',
|
||||
projectPath: 'group-a',
|
||||
workItemTypeId: workItemTypeIdForTask,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
},
|
||||
confidential: false,
|
||||
},
|
||||
confidential: false,
|
||||
},
|
||||
});
|
||||
expect(wrapper.emitted('addChild')).toEqual([[]]);
|
||||
});
|
||||
|
||||
it('creates child task in confidential parent', async () => {
|
||||
await createComponent({ parentConfidential: true });
|
||||
|
||||
findInput().vm.$emit('input', 'Create confidential task');
|
||||
|
||||
findForm().vm.$emit('submit', {
|
||||
preventDefault: jest.fn(),
|
||||
});
|
||||
await waitForPromises();
|
||||
expect(wrapper.vm.childWorkItemType).toEqual(workItemTypeIdForTask);
|
||||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create confidential task',
|
||||
projectPath: 'group-a',
|
||||
workItemTypeId: workItemTypeIdForTask,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
},
|
||||
confidential: true,
|
||||
},
|
||||
});
|
||||
});
|
||||
expect(wrapper.emitted('addChild')).toEqual([[]]);
|
||||
});
|
||||
|
||||
it('creates child task in confidential parent', async () => {
|
||||
await createComponent({ parentConfidential: true });
|
||||
|
||||
findInput().vm.$emit('input', 'Create confidential task');
|
||||
|
||||
findForm().vm.$emit('submit', {
|
||||
preventDefault: jest.fn(),
|
||||
describe('for group level work items', () => {
|
||||
beforeEach(async () => {
|
||||
await createComponent({
|
||||
isGroup: true,
|
||||
parentWorkItemType: WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
childrenType: WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
});
|
||||
});
|
||||
await waitForPromises();
|
||||
expect(wrapper.vm.childWorkItemType).toEqual(workItemTypeIdForTask);
|
||||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create confidential task',
|
||||
projectPath: 'project/path',
|
||||
workItemTypeId: workItemTypeIdForTask,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
|
||||
it('renders create form with project selection', () => {
|
||||
expect(findForm().exists()).toBe(true);
|
||||
expect(findInput().exists()).toBe(true);
|
||||
expect(findAddChildButton().text()).toBe('Create issue');
|
||||
expect(findProjectSelector().exists()).toBe(true);
|
||||
expect(findWorkItemTokenInput().exists()).toBe(false);
|
||||
});
|
||||
|
||||
it('creates child issue in non confidential parent', async () => {
|
||||
findInput().vm.$emit('input', 'Create issue test');
|
||||
|
||||
findProjectSelector().vm.$emit('selectProject', projectData[0]);
|
||||
|
||||
findForm().vm.$emit('submit', {
|
||||
preventDefault: jest.fn(),
|
||||
});
|
||||
|
||||
await waitForPromises();
|
||||
|
||||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create issue test',
|
||||
namespacePath: 'group-a/example-project-a',
|
||||
workItemTypeId: workItemTypeIdForIssue,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
},
|
||||
confidential: false,
|
||||
},
|
||||
confidential: true,
|
||||
},
|
||||
});
|
||||
expect(wrapper.emitted('addChild')).toEqual([[]]);
|
||||
});
|
||||
|
||||
it('creates child issue in confidential parent', async () => {
|
||||
await createComponent({
|
||||
parentConfidential: true,
|
||||
isGroup: true,
|
||||
parentWorkItemType: WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
childrenType: WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
});
|
||||
|
||||
findInput().vm.$emit('input', 'Create confidential issue');
|
||||
|
||||
findProjectSelector().vm.$emit('selectProject', projectData[0]);
|
||||
|
||||
findForm().vm.$emit('submit', {
|
||||
preventDefault: jest.fn(),
|
||||
});
|
||||
|
||||
await waitForPromises();
|
||||
|
||||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create confidential issue',
|
||||
namespacePath: 'group-a/example-project-a',
|
||||
workItemTypeId: workItemTypeIdForIssue,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
},
|
||||
confidential: true,
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('confidentiality checkbox', () => {
|
||||
beforeEach(async () => {
|
||||
await createComponent();
|
||||
});
|
||||
|
||||
it('renders confidentiality checkbox', () => {
|
||||
const confidentialCheckbox = findConfidentialCheckbox();
|
||||
|
||||
|
|
@ -214,7 +318,7 @@ describe('WorkItemLinksForm', () => {
|
|||
it('renders work item token input with default props', () => {
|
||||
expect(findWorkItemTokenInput().props()).toMatchObject({
|
||||
value: [],
|
||||
fullPath: 'project/path',
|
||||
fullPath: 'group-a',
|
||||
childrenType: WORK_ITEM_TYPE_ENUM_TASK,
|
||||
childrenIds: [],
|
||||
parentWorkItemId: 'gid://gitlab/WorkItem/1',
|
||||
|
|
@ -278,7 +382,7 @@ describe('WorkItemLinksForm', () => {
|
|||
expect(createMutationResolver).toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create task test',
|
||||
projectPath: 'project/path',
|
||||
projectPath: 'group-a',
|
||||
workItemTypeId: workItemTypeIdForTask,
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
|
|
@ -303,7 +407,7 @@ describe('WorkItemLinksForm', () => {
|
|||
expect(createMutationResolver).not.toHaveBeenCalledWith({
|
||||
input: {
|
||||
title: 'Create task test',
|
||||
projectPath: 'project/path',
|
||||
projectPath: 'group-a',
|
||||
workItemTypeId: 'gid://gitlab/WorkItems::Type/3',
|
||||
hierarchyWidget: {
|
||||
parentId: 'gid://gitlab/WorkItem/1',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,139 @@
|
|||
import Vue, { nextTick } from 'vue';
|
||||
import VueApollo from 'vue-apollo';
|
||||
import { GlCollapsibleListbox } from '@gitlab/ui';
|
||||
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import createMockApollo from 'helpers/mock_apollo_helper';
|
||||
import waitForPromises from 'helpers/wait_for_promises';
|
||||
import WorkItemProjectsListbox from '~/work_items/components/work_item_links/work_item_projects_listbox.vue';
|
||||
import groupProjectsForLinksWidgetQuery from '~/work_items/graphql/group_projects_for_links_widget.query.graphql';
|
||||
import { SEARCH_DEBOUNCE } from '~/work_items/constants';
|
||||
import { groupProjectsList, mockFrequentlyUsedProjects } from '../../mock_data';
|
||||
|
||||
Vue.use(VueApollo);
|
||||
|
||||
const projectData = groupProjectsList.data.group.projects.nodes;
|
||||
|
||||
describe('WorkItemProjectsListbox', () => {
|
||||
/**
|
||||
* @type {import('helpers/vue_test_utils_helper').ExtendedWrapper}
|
||||
*/
|
||||
let wrapper;
|
||||
|
||||
const getLocalstorageKey = () => {
|
||||
return 'root/frequent-projects';
|
||||
};
|
||||
|
||||
const setLocalstorageFrequentItems = (json = mockFrequentlyUsedProjects) => {
|
||||
localStorage.setItem(getLocalstorageKey(), JSON.stringify(json));
|
||||
};
|
||||
|
||||
const removeLocalstorageFrequentItems = () => {
|
||||
localStorage.removeItem(getLocalstorageKey());
|
||||
};
|
||||
|
||||
const groupProjectsFormLinksWidgetResolver = jest.fn().mockResolvedValue(groupProjectsList);
|
||||
|
||||
const findDropdown = () => wrapper.findComponent(GlCollapsibleListbox);
|
||||
const findDropdownItemFor = (fullPath) => wrapper.findByTestId(`listbox-item-${fullPath}`);
|
||||
const findRecentDropdownItems = () => findDropdown().find('ul').findAll('[role=option]');
|
||||
const findRecentDropdownItemAt = (index) => findRecentDropdownItems().at(index);
|
||||
|
||||
const createComponent = async () => {
|
||||
wrapper = mountExtended(WorkItemProjectsListbox, {
|
||||
apolloProvider: createMockApollo([
|
||||
[groupProjectsForLinksWidgetQuery, groupProjectsFormLinksWidgetResolver],
|
||||
]),
|
||||
propsData: {
|
||||
fullPath: 'group-a',
|
||||
isGroup: true,
|
||||
},
|
||||
});
|
||||
|
||||
jest.advanceTimersByTime(SEARCH_DEBOUNCE);
|
||||
await waitForPromises();
|
||||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
await createComponent();
|
||||
gon.current_username = 'root';
|
||||
});
|
||||
|
||||
it('renders projects in projects dropdown', () => {
|
||||
removeLocalstorageFrequentItems();
|
||||
|
||||
expect(findDropdown().text()).not.toContain('Recently used');
|
||||
|
||||
const dropdownItem = findDropdownItemFor(projectData[0].fullPath);
|
||||
|
||||
expect(dropdownItem.text()).toContain(projectData[0].name);
|
||||
expect(dropdownItem.text()).toContain(projectData[0].namespace.name);
|
||||
});
|
||||
|
||||
it('supports selecting a project', async () => {
|
||||
removeLocalstorageFrequentItems();
|
||||
|
||||
findDropdown().vm.$emit('shown');
|
||||
|
||||
await nextTick();
|
||||
|
||||
await findDropdownItemFor(projectData[0].fullPath).trigger('click');
|
||||
|
||||
await nextTick();
|
||||
|
||||
const emitted = wrapper.emitted('selectProject');
|
||||
|
||||
expect(emitted[0][0]).toEqual(projectData[0]);
|
||||
});
|
||||
|
||||
it('renders recent projects if present', async () => {
|
||||
setLocalstorageFrequentItems();
|
||||
|
||||
findDropdown().vm.$emit('shown');
|
||||
|
||||
await nextTick();
|
||||
|
||||
expect(findDropdown().text()).toContain('Recently used');
|
||||
|
||||
const content = findRecentDropdownItems();
|
||||
|
||||
expect(content.exists()).toBe(true);
|
||||
expect(content).toHaveLength(mockFrequentlyUsedProjects.length);
|
||||
});
|
||||
|
||||
it('supports selecting a recent project', async () => {
|
||||
setLocalstorageFrequentItems();
|
||||
|
||||
findDropdown().vm.$emit('shown');
|
||||
|
||||
await nextTick();
|
||||
|
||||
await findRecentDropdownItemAt(0).trigger('click');
|
||||
|
||||
await nextTick();
|
||||
|
||||
const emitted = wrapper.emitted('selectProject');
|
||||
|
||||
expect(emitted[0][0]).toEqual(projectData[1]);
|
||||
});
|
||||
|
||||
it('supports filtering recent projects via search input', async () => {
|
||||
setLocalstorageFrequentItems();
|
||||
|
||||
findDropdown().vm.$emit('shown');
|
||||
|
||||
await nextTick();
|
||||
|
||||
let content = findRecentDropdownItems();
|
||||
|
||||
expect(content).toHaveLength(mockFrequentlyUsedProjects.length);
|
||||
|
||||
findDropdown().vm.$emit('search', 'project a');
|
||||
|
||||
await nextTick();
|
||||
|
||||
content = findRecentDropdownItems();
|
||||
|
||||
expect(content).toHaveLength(1);
|
||||
expect(content.at(0).text()).toContain(projectData[0].name);
|
||||
});
|
||||
});
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue