Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
5840f0543a
commit
6a15c083c5
|
|
@ -114,7 +114,7 @@ include:
|
|||
- bundle exec gem list gitlab_quality-test_tooling
|
||||
- |
|
||||
section_start "failed-test-issues" "Report test failures"
|
||||
if [ "$CREATE_RAILS_TEST_FAILURE_ISSUES" == "true" ]; then
|
||||
if [[ "$CREATE_RAILS_TEST_FAILURE_ISSUES" == "true" ]] && [[ -n "$TEST_FAILURES_PROJECT_TOKEN" ]]; then
|
||||
input_file="rspec/rspec-${CI_JOB_ID}.json"
|
||||
|
||||
# The actual failures will always be part of the retry report
|
||||
|
|
@ -129,12 +129,12 @@ include:
|
|||
--exclude-labels-for-search "QA,knapsack_report" \
|
||||
--related-issues-file "rspec/${CI_JOB_ID}-failed-test-issues.json";
|
||||
else
|
||||
echoinfo "Not reporting test failures because \$CREATE_RAILS_TEST_FAILURE_ISSUES != 'true'"
|
||||
echoinfo "Not reporting test failures because \$CREATE_RAILS_TEST_FAILURE_ISSUES != 'true' or TEST_FAILURES_PROJECT_TOKEN is not set"
|
||||
fi
|
||||
section_end "failed-test-issues"
|
||||
- |
|
||||
section_start "flaky-test-issues" "Report test flakiness"
|
||||
if [ "$CREATE_RAILS_FLAKY_TEST_ISSUES" == "true" ]; then
|
||||
if [[ "$CREATE_RAILS_FLAKY_TEST_ISSUES" == "true" ]] && [[ -n "$TEST_FAILURES_PROJECT_TOKEN" ]]; then
|
||||
if [ -f "rspec/rspec-retry-${CI_JOB_ID}.json" ]; then
|
||||
bundle exec flaky-test-issues \
|
||||
--token "${TEST_FAILURES_PROJECT_TOKEN}" \
|
||||
|
|
@ -144,43 +144,43 @@ include:
|
|||
echoerr "Not reporting test flakiness because 'rspec/rspec-retry-${CI_JOB_ID}.json' is missing!"
|
||||
fi
|
||||
else
|
||||
echoinfo "Not reporting test flakiness because \$CREATE_RAILS_FLAKY_TEST_ISSUES != 'true'"
|
||||
echoinfo "Not reporting test flakiness because \$CREATE_RAILS_FLAKY_TEST_ISSUES != 'true' or TEST_FAILURES_PROJECT_TOKEN is not set"
|
||||
fi
|
||||
section_end "flaky-test-issues"
|
||||
- |
|
||||
section_start "slow-test-issues" "Report test slowness"
|
||||
if [ "$CREATE_RAILS_SLOW_TEST_ISSUES" == "true" ]; then
|
||||
if [[ "$CREATE_RAILS_SLOW_TEST_ISSUES" == "true" ]] && [[ -n "$TEST_FAILURES_PROJECT_TOKEN" ]]; then
|
||||
bundle exec slow-test-issues \
|
||||
--token "${TEST_FAILURES_PROJECT_TOKEN}" \
|
||||
--project "gitlab-org/gitlab" \
|
||||
--input-files "rspec/rspec-*.json" \
|
||||
--related-issues-file "rspec/${CI_JOB_ID}-slow-test-issues.json";
|
||||
else
|
||||
echoinfo "Not reporting test slowness because \$CREATE_RAILS_SLOW_TEST_ISSUES != 'true'"
|
||||
echoinfo "Not reporting test slowness because \$CREATE_RAILS_SLOW_TEST_ISSUES != 'true' or TEST_FAILURES_PROJECT_TOKEN is not set"
|
||||
fi
|
||||
section_end "slow-test-issues"
|
||||
- |
|
||||
section_start "slow-test-merge-request-report-note" "Report test slowness in MR note"
|
||||
if [ "$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST" == "true" ]; then
|
||||
if [[ "$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST" == "true" ]] && [[ -n "$TEST_SLOW_NOTE_PROJECT_TOKEN" ]]; then
|
||||
bundle exec slow-test-merge-request-report-note \
|
||||
--token "${TEST_SLOW_NOTE_PROJECT_TOKEN}" \
|
||||
--project "gitlab-org/gitlab" \
|
||||
--input-files "rspec/rspec-*.json" \
|
||||
--merge_request_iid "$CI_MERGE_REQUEST_IID";
|
||||
else
|
||||
echoinfo "Not reporting test slowness in MR note because \$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST != 'true'"
|
||||
echoinfo "Not reporting test slowness in MR note because \$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST != 'true' or TEST_SLOW_NOTE_PROJECT_TOKEN is not set"
|
||||
fi
|
||||
section_end "slow-test-merge-request-report-note"
|
||||
- |
|
||||
section_start "knapsack-report-issues" "Report test files close to timing out"
|
||||
if [ "$ALLOW_KNAPSACK_REPORT_CREATE_ISSUES" == "true" ]; then
|
||||
if [[ "$ALLOW_KNAPSACK_REPORT_CREATE_ISSUES" == "true" ]] && [[ -n "$KNAPSACK_REPORT_ISSUES_PROJECT_TOKEN" ]]; then
|
||||
bundle exec knapsack-report-issues \
|
||||
--token "${KNAPSACK_REPORT_ISSUES_PROJECT_TOKEN}" \
|
||||
--project "gitlab-org/gitlab" \
|
||||
--input-file knapsack/rspec*_report.json \
|
||||
--expected-report knapsack/node_specs_expected_duration.json;
|
||||
else
|
||||
echoinfo "Not reporting test files close to timing out because \$ALLOW_KNAPSACK_REPORT_CREATE_ISSUES != 'true'"
|
||||
echoinfo "Not reporting test files close to timing out because \$ALLOW_KNAPSACK_REPORT_CREATE_ISSUES != 'true' or KNAPSACK_REPORT_ISSUES_PROJECT_TOKEN is not set"
|
||||
fi
|
||||
section_end "knapsack-report-issues"
|
||||
- tooling/bin/push_job_metrics || true
|
||||
|
|
|
|||
|
|
@ -275,7 +275,6 @@ RSpec/BeEq:
|
|||
- 'ee/spec/models/onboarding_spec.rb'
|
||||
- 'ee/spec/models/product_analytics/funnel_spec.rb'
|
||||
- 'ee/spec/models/project_feature_spec.rb'
|
||||
- 'ee/spec/models/projects/all_branches_rule_spec.rb'
|
||||
- 'ee/spec/models/projects/all_protected_branches_rule_spec.rb'
|
||||
- 'ee/spec/models/push_rule_spec.rb'
|
||||
- 'ee/spec/models/requirements_management/requirement_spec.rb'
|
||||
|
|
|
|||
|
|
@ -596,7 +596,6 @@ RSpec/NamedSubject:
|
|||
- 'ee/spec/models/product_analytics/panel_spec.rb'
|
||||
- 'ee/spec/models/product_analytics/visualization_spec.rb'
|
||||
- 'ee/spec/models/project_feature_spec.rb'
|
||||
- 'ee/spec/models/projects/all_branches_rule_spec.rb'
|
||||
- 'ee/spec/models/projects/all_protected_branches_rule_spec.rb'
|
||||
- 'ee/spec/models/projects/target_branch_rule_spec.rb'
|
||||
- 'ee/spec/models/protected_environment_spec.rb'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
0d6c9b04da0dc111925ff7828b2ccf749266c2e8
|
||||
12d49304c0163157cce8cf5aa46d5caf7384f976
|
||||
|
|
|
|||
2
Gemfile
2
Gemfile
|
|
@ -645,7 +645,7 @@ gem 'spamcheck', '~> 1.3.0', feature_category: :insider_threat
|
|||
gem 'gitaly', '~> 17.8.0', feature_category: :gitaly
|
||||
|
||||
# KAS GRPC protocol definitions
|
||||
gem 'gitlab-kas-grpc', '~> 17.8.0', feature_category: :deployment_management
|
||||
gem 'gitlab-kas-grpc', '~> 17.9.0.pre.rc2', feature_category: :deployment_management
|
||||
|
||||
# Lock the version before issues below are resolved:
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/473169#note_2028352939
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@
|
|||
{"name":"gitlab-glfm-markdown","version":"0.0.27","platform":"x86_64-darwin","checksum":"ec6775054481b3e07a97d4be945fe41d043f89dc1fa1d95cdfc6a70b439ea0e4"},
|
||||
{"name":"gitlab-glfm-markdown","version":"0.0.27","platform":"x86_64-linux-gnu","checksum":"ebcccc617db4f669cd2de900e6d31fae5de67acedeb178d242063e338cb57050"},
|
||||
{"name":"gitlab-glfm-markdown","version":"0.0.27","platform":"x86_64-linux-musl","checksum":"77cf356f2a2fc496ec17206d68a6a1fe4f4d680bc1aac2206c32ee5393611a15"},
|
||||
{"name":"gitlab-kas-grpc","version":"17.8.1","platform":"ruby","checksum":"fbb9cf7411d12a7dc491d688a80a1d4064bd92dfbbadce523a549b07d26226e6"},
|
||||
{"name":"gitlab-kas-grpc","version":"17.9.0.pre.rc2","platform":"ruby","checksum":"b4572e47d0807e51c7a8f7a43d44a196ebea40ed073b8cb95f72d20044ea4482"},
|
||||
{"name":"gitlab-labkit","version":"0.37.0","platform":"ruby","checksum":"d2dd0a60db2149a9a8eebf2975dc23f54ac3ceb01bdba732eb1b26b86dfffa70"},
|
||||
{"name":"gitlab-license","version":"2.6.0","platform":"ruby","checksum":"2c1f8ae73835640ec77bf758c1d0c9730635043c01cf77902f7976e826d7d016"},
|
||||
{"name":"gitlab-mail_room","version":"0.0.25","platform":"ruby","checksum":"223ce7c3c0797b6015eaa37147884e6ddc7be9a7ee90a424358c96bc18613b1a"},
|
||||
|
|
|
|||
|
|
@ -745,7 +745,7 @@ GEM
|
|||
nokogiri (~> 1, >= 1.10.8)
|
||||
gitlab-glfm-markdown (0.0.27)
|
||||
rb_sys (~> 0.9.109)
|
||||
gitlab-kas-grpc (17.8.1)
|
||||
gitlab-kas-grpc (17.9.0.pre.rc2)
|
||||
grpc (~> 1.0)
|
||||
gitlab-labkit (0.37.0)
|
||||
actionpack (>= 5.0.0, < 8.1.0)
|
||||
|
|
@ -2094,7 +2094,7 @@ DEPENDENCIES
|
|||
gitlab-glfm-markdown (~> 0.0.21)
|
||||
gitlab-housekeeper!
|
||||
gitlab-http!
|
||||
gitlab-kas-grpc (~> 17.8.0)
|
||||
gitlab-kas-grpc (~> 17.9.0.pre.rc2)
|
||||
gitlab-labkit (~> 0.37.0)
|
||||
gitlab-license (~> 2.6)
|
||||
gitlab-mail_room (~> 0.0.24)
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@
|
|||
{"name":"gitlab-glfm-markdown","version":"0.0.27","platform":"x86_64-darwin","checksum":"ec6775054481b3e07a97d4be945fe41d043f89dc1fa1d95cdfc6a70b439ea0e4"},
|
||||
{"name":"gitlab-glfm-markdown","version":"0.0.27","platform":"x86_64-linux-gnu","checksum":"ebcccc617db4f669cd2de900e6d31fae5de67acedeb178d242063e338cb57050"},
|
||||
{"name":"gitlab-glfm-markdown","version":"0.0.27","platform":"x86_64-linux-musl","checksum":"77cf356f2a2fc496ec17206d68a6a1fe4f4d680bc1aac2206c32ee5393611a15"},
|
||||
{"name":"gitlab-kas-grpc","version":"17.8.1","platform":"ruby","checksum":"fbb9cf7411d12a7dc491d688a80a1d4064bd92dfbbadce523a549b07d26226e6"},
|
||||
{"name":"gitlab-kas-grpc","version":"17.9.0.pre.rc2","platform":"ruby","checksum":"b4572e47d0807e51c7a8f7a43d44a196ebea40ed073b8cb95f72d20044ea4482"},
|
||||
{"name":"gitlab-labkit","version":"0.37.0","platform":"ruby","checksum":"d2dd0a60db2149a9a8eebf2975dc23f54ac3ceb01bdba732eb1b26b86dfffa70"},
|
||||
{"name":"gitlab-license","version":"2.6.0","platform":"ruby","checksum":"2c1f8ae73835640ec77bf758c1d0c9730635043c01cf77902f7976e826d7d016"},
|
||||
{"name":"gitlab-mail_room","version":"0.0.25","platform":"ruby","checksum":"223ce7c3c0797b6015eaa37147884e6ddc7be9a7ee90a424358c96bc18613b1a"},
|
||||
|
|
|
|||
|
|
@ -757,7 +757,7 @@ GEM
|
|||
nokogiri (~> 1, >= 1.10.8)
|
||||
gitlab-glfm-markdown (0.0.27)
|
||||
rb_sys (~> 0.9.109)
|
||||
gitlab-kas-grpc (17.8.1)
|
||||
gitlab-kas-grpc (17.9.0.pre.rc2)
|
||||
grpc (~> 1.0)
|
||||
gitlab-labkit (0.37.0)
|
||||
actionpack (>= 5.0.0, < 8.1.0)
|
||||
|
|
@ -2129,7 +2129,7 @@ DEPENDENCIES
|
|||
gitlab-glfm-markdown (~> 0.0.21)
|
||||
gitlab-housekeeper!
|
||||
gitlab-http!
|
||||
gitlab-kas-grpc (~> 17.8.0)
|
||||
gitlab-kas-grpc (~> 17.9.0.pre.rc2)
|
||||
gitlab-labkit (~> 0.37.0)
|
||||
gitlab-license (~> 2.6)
|
||||
gitlab-mail_room (~> 0.0.24)
|
||||
|
|
|
|||
|
|
@ -46,10 +46,6 @@ export default {
|
|||
});
|
||||
},
|
||||
},
|
||||
popoverOptions: {
|
||||
triggers: 'hover',
|
||||
placement: 'bottom',
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
|
|
@ -58,7 +54,7 @@ export default {
|
|||
<template #default="{ pathItem, pathId }">
|
||||
<gl-popover
|
||||
v-if="showPopover(pathItem)"
|
||||
v-bind="$options.popoverOptions"
|
||||
placement="bottom"
|
||||
:target="pathId"
|
||||
:css-classes="['stage-item-popover']"
|
||||
data-testid="stage-item-popover"
|
||||
|
|
|
|||
|
|
@ -44,7 +44,9 @@ export default {
|
|||
class="board-add-new-list board gl-inline-block gl-h-full gl-shrink-0 gl-whitespace-normal gl-rounded-base gl-pl-2 gl-align-top"
|
||||
data-testid="board-add-new-column"
|
||||
>
|
||||
<div class="gl-relative gl-flex gl-h-full gl-flex-col gl-rounded-base gl-bg-gray-50">
|
||||
<div
|
||||
class="gl-relative gl-flex gl-h-full gl-flex-col gl-rounded-base gl-bg-strong dark:gl-bg-subtle"
|
||||
>
|
||||
<h3 class="gl-m-0 gl-px-5 gl-py-5 gl-text-size-h2" data-testid="board-add-column-form-title">
|
||||
{{ $options.i18n.newList }}
|
||||
</h3>
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ export default {
|
|||
class="board is-expandable gl-relative gl-inline-block gl-h-full gl-whitespace-normal gl-px-3 gl-align-top"
|
||||
>
|
||||
<div
|
||||
class="gl-relative gl-flex gl-h-full gl-flex-col gl-rounded-base gl-bg-gray-50"
|
||||
class="gl-relative gl-flex gl-h-full gl-flex-col gl-rounded-base gl-bg-strong dark:gl-bg-subtle"
|
||||
:class="{ 'board-column-highlighted': highlighted }"
|
||||
>
|
||||
<board-list-header
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ export default {
|
|||
<header
|
||||
:class="{
|
||||
'gl-h-full': list.collapsed,
|
||||
'gl-bg-gray-50': isSwimlanesHeader,
|
||||
'gl-bg-strong': isSwimlanesHeader,
|
||||
'gl-rounded-tl-base gl-rounded-tr-base gl-border-4 gl-border-t-solid': isLabelList,
|
||||
'gl-rounded-tl-base gl-rounded-tr-base gl-bg-red-50': boardItemsSizeExceedsMax,
|
||||
}"
|
||||
|
|
@ -345,7 +345,7 @@ export default {
|
|||
:aria-label="chevronTooltip"
|
||||
:title="chevronTooltip"
|
||||
:icon="chevronIcon"
|
||||
class="board-title-caret no-drag gl-cursor-pointer hover:gl-bg-gray-50"
|
||||
class="board-title-caret no-drag gl-cursor-pointer hover:gl-bg-strong"
|
||||
:class="{
|
||||
'-gl-mt-1': list.collapsed && isLabelList,
|
||||
'gl-mb-2': list.collapsed && isLabelList && !isSwimlanesHeader,
|
||||
|
|
|
|||
|
|
@ -537,7 +537,7 @@ export default {
|
|||
<gl-link :href="item.pipeline.path" class="gl-mr-2">
|
||||
{{ pipelineId(item) }}
|
||||
</gl-link>
|
||||
<span class="gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2">
|
||||
<span class="gl-inline-block gl-rounded-base gl-bg-strong gl-px-2">
|
||||
<gl-icon name="commit" :size="12" class="gl-mr-2" />
|
||||
<gl-link :href="item.commitPath" class="gl-text-sm gl-text-default gl-font-monospace">
|
||||
{{ item.shortSha }}
|
||||
|
|
@ -545,7 +545,7 @@ export default {
|
|||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2">
|
||||
<span class="gl-inline-block gl-rounded-base gl-bg-strong gl-px-2">
|
||||
<gl-icon name="branch" :size="12" class="gl-mr-1" />
|
||||
<gl-link :href="item.refPath" class="gl-text-sm gl-text-default gl-font-monospace">
|
||||
{{ item.refName }}
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ export default {
|
|||
:class="{
|
||||
'pipeline-graph-container gl-pipeline-min-h gl-mt-3 gl-items-start gl-overflow-auto gl-bg-subtle gl-pb-8 gl-pt-3':
|
||||
!isLinkedPipeline,
|
||||
'gl-bg-gray-50 sm:gl-ml-5': isLinkedPipeline,
|
||||
'gl-bg-strong sm:gl-ml-5': isLinkedPipeline,
|
||||
}"
|
||||
data-testid="pipeline-container"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -335,7 +335,7 @@ export default {
|
|||
:title="tooltipText"
|
||||
:href="detailsPath"
|
||||
:class="jobClasses"
|
||||
class="menu-item gl-w-full gl-rounded-base gl-text-strong hover:gl-bg-gray-50 hover:gl-no-underline focus:gl-bg-gray-50 focus:gl-no-underline active:gl-no-underline dark:hover:gl-bg-gray-200 dark:focus:gl-bg-gray-200"
|
||||
class="menu-item gl-w-full gl-rounded-base gl-text-strong hover:gl-bg-strong hover:gl-no-underline focus:gl-bg-strong focus:gl-no-underline active:gl-no-underline dark:hover:gl-bg-gray-200 dark:focus:gl-bg-gray-200"
|
||||
data-testid="ci-job-item-content"
|
||||
@click="jobItemClick"
|
||||
@mouseout="hideTooltips"
|
||||
|
|
|
|||
|
|
@ -80,9 +80,9 @@ export default {
|
|||
'gl-p-3',
|
||||
'gl-border-0',
|
||||
'!gl-rounded-base',
|
||||
'hover:gl-bg-gray-50',
|
||||
'hover:gl-bg-strong',
|
||||
'dark:hover:gl-bg-gray-200',
|
||||
'focus:gl-bg-gray-50',
|
||||
'focus:gl-bg-strong',
|
||||
'dark:focus:gl-bg-gray-200',
|
||||
'hover:gl-text-strong',
|
||||
'focus:gl-text-strong',
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ export default {
|
|||
jobPillClasses() {
|
||||
return [
|
||||
{ 'gl-opacity-3': this.isFadedOut },
|
||||
{ 'gl-bg-gray-50 gl-shadow-inner-1-gray-200': this.isHovered },
|
||||
{ 'gl-bg-strong gl-shadow-inner-1-gray-200': this.isHovered },
|
||||
];
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ export default {
|
|||
v-gl-tooltip="{ title: counterTooltipText }"
|
||||
:title="counterTooltipText"
|
||||
:href="pipelinePath"
|
||||
class="gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline"
|
||||
class="gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-strong gl-text-sm gl-text-subtle gl-no-underline"
|
||||
data-testid="downstream-pipeline-counter"
|
||||
>
|
||||
{{ counterLabel }}
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ export default {
|
|||
<div class="gl-flex gl-flex-wrap gl-items-center gl-gap-2 gl-whitespace-nowrap gl-pl-3">
|
||||
<gl-sprintf :message="__('From line %{line1} to %{line2}')">
|
||||
<template #line1>
|
||||
<div class="gl-mx-1 gl-flex gl-rounded-base gl-bg-gray-50">
|
||||
<div class="gl-mx-1 gl-flex gl-rounded-base gl-bg-strong">
|
||||
<gl-button
|
||||
size="small"
|
||||
icon="dash"
|
||||
|
|
@ -230,7 +230,7 @@ export default {
|
|||
</div>
|
||||
</template>
|
||||
<template #line2>
|
||||
<div class="gl-ml-1 gl-flex gl-rounded-base gl-bg-gray-50">
|
||||
<div class="gl-ml-1 gl-flex gl-rounded-base gl-bg-strong">
|
||||
<gl-button
|
||||
size="small"
|
||||
icon="dash"
|
||||
|
|
|
|||
|
|
@ -433,7 +433,7 @@
|
|||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"project": {
|
||||
"description": "Path to the project, e.g. `group/project`, or `group/sub-group/project` [Learn more](https://docs.gitlab.com/ee/ci/yaml/index.html#includefile).",
|
||||
"description": "Path to the project, e.g. `group/project`, or `group/sub-group/project` [Learn more](https://docs.gitlab.com/ee/ci/yaml/#includefile).",
|
||||
"type": "string",
|
||||
"pattern": "(?:\\S/\\S|\\$\\S+)"
|
||||
},
|
||||
|
|
@ -1174,7 +1174,7 @@
|
|||
}
|
||||
},
|
||||
"rulesVariables": {
|
||||
"markdownDescription": "Defines variables for a rule result. [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#rulesvariables).",
|
||||
"markdownDescription": "Defines variables for a rule result. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesvariables).",
|
||||
"type": "object",
|
||||
"patternProperties": {
|
||||
".*": {
|
||||
|
|
@ -1279,7 +1279,7 @@
|
|||
},
|
||||
"timeout": {
|
||||
"type": "string",
|
||||
"markdownDescription": "Allows you to configure a timeout for a specific job (e.g. `1 minute`, `1h 30m 12s`). [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#timeout).",
|
||||
"markdownDescription": "Allows you to configure a timeout for a specific job (e.g. `1 minute`, `1h 30m 12s`). [Learn More](https://docs.gitlab.com/ee/ci/yaml/#timeout).",
|
||||
"minLength": 1
|
||||
},
|
||||
"start_in": {
|
||||
|
|
@ -1288,7 +1288,7 @@
|
|||
"minLength": 1
|
||||
},
|
||||
"rulesNeeds": {
|
||||
"markdownDescription": "Use needs in rules to update job needs for specific conditions. When a condition matches a rule, the job's needs configuration is completely replaced with the needs in the rule. [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#rulesneeds).",
|
||||
"markdownDescription": "Use needs in rules to update job needs for specific conditions. When a condition matches a rule, the job's needs configuration is completely replaced with the needs in the rule. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesneeds).",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"oneOf": [
|
||||
|
|
@ -2152,7 +2152,7 @@
|
|||
"description": "Limit job concurrency. Can be used to ensure that the Runner will not run certain jobs simultaneously."
|
||||
},
|
||||
"trigger": {
|
||||
"markdownDescription": "Trigger allows you to define downstream pipeline trigger. When a job created from trigger definition is started by GitLab, a downstream pipeline gets created. [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#trigger).",
|
||||
"markdownDescription": "Trigger allows you to define downstream pipeline trigger. When a job created from trigger definition is started by GitLab, a downstream pipeline gets created. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#trigger).",
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
|
|
@ -2376,7 +2376,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"markdownDescription": "Path to the project, e.g. `group/project`, or `group/sub-group/project`. [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#trigger).",
|
||||
"markdownDescription": "Path to the project, e.g. `group/project`, or `group/sub-group/project`. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#trigger).",
|
||||
"type": "string",
|
||||
"pattern": "(?:\\S/\\S|\\$\\S+)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import eventHub from '../event_hub';
|
|||
import stopEnvironmentMutation from '../graphql/mutations/stop_environment.mutation.graphql';
|
||||
|
||||
export default {
|
||||
environmentOnStopLink: helpPagePath('ci/yaml/index.html', {
|
||||
environmentOnStopLink: helpPagePath('ci/yaml/_index.html', {
|
||||
anchor: 'environmenton_stop',
|
||||
}),
|
||||
stoppingEnvironmentDocsLink: helpPagePath('ci/environments/index', {
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ export default {
|
|||
|
||||
<div
|
||||
v-if="statusFilter && podsSearch"
|
||||
class="gl-mt-5 gl-rounded-base gl-bg-gray-50 gl-p-5"
|
||||
class="gl-mt-5 gl-rounded-base gl-bg-strong gl-p-5"
|
||||
data-testid="pods-filtered-message"
|
||||
>
|
||||
<gl-sprintf :message="$options.i18n.filteredText">
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ export const translations = {
|
|||
};
|
||||
|
||||
export const environmentsLearnMorePath = helpPagePath('ci/environments/index');
|
||||
export const environmentsHelpPagePath = helpPagePath('ci/yaml/index', { anchor: 'environment' });
|
||||
export const environmentsHelpPagePath = helpPagePath('ci/yaml/_index', { anchor: 'environment' });
|
||||
|
||||
export const DEPLOYMENTS_SORT_OPTIONS = [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -64,9 +64,9 @@ export default {
|
|||
<th :style="headerStyle" class="gl-relative">
|
||||
<slot></slot>
|
||||
<div
|
||||
class="gl-absolute gl-right-0 gl-top-0 gl-z-1 gl-w-2 gl-cursor-col-resize gl-select-none hover:gl-bg-gray-50"
|
||||
class="gl-absolute gl-right-0 gl-top-0 gl-z-1 gl-w-2 gl-cursor-col-resize gl-select-none hover:gl-bg-strong"
|
||||
data-testid="resize-handle"
|
||||
:class="{ 'gl-bg-gray-50': isResizing }"
|
||||
:class="{ 'gl-bg-strong': isResizing }"
|
||||
:style="{ height: `${tableHeight}px` }"
|
||||
@mouseover="updateTableHeight"
|
||||
@mousedown="onMouseDown"
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ export const initGitlabWebIDE = async (el) => {
|
|||
},
|
||||
editorFont,
|
||||
extensionsGallerySettings,
|
||||
...(gon?.features?.webIdeSettingsContextHash && { settingsContextHash }),
|
||||
settingsContextHash,
|
||||
codeSuggestionsEnabled,
|
||||
handleContextUpdate: handleUpdateUrl,
|
||||
handleTracking,
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ export default {
|
|||
<div v-for="(lists, i) in tab.lists" :key="`lists_${i}`">
|
||||
<div
|
||||
v-if="i === 1"
|
||||
class="gl-mb-5 gl-mt-8 gl-rounded-base gl-bg-gray-50 gl-px-4 gl-py-2 gl-font-bold gl-text-subtle"
|
||||
class="gl-mb-5 gl-mt-8 gl-rounded-base gl-bg-strong gl-px-4 gl-py-2 gl-font-bold gl-text-subtle"
|
||||
data-testid="merge-request-count-explanation"
|
||||
>
|
||||
{{ __('Items below are excluded from the active count') }}
|
||||
|
|
|
|||
|
|
@ -131,11 +131,7 @@ export default {
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="showCommitBox"
|
||||
class="gl-my-4 gl-rounded-base gl-bg-gray-50"
|
||||
data-testid="commit-box"
|
||||
>
|
||||
<div v-if="showCommitBox" class="gl-my-4 gl-rounded-base gl-bg-strong" data-testid="commit-box">
|
||||
<gl-loading-icon v-if="loading" class="gl-py-3" />
|
||||
<template v-else>
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ export default {
|
|||
<template>
|
||||
<router-link
|
||||
:to="{ name: to }"
|
||||
active-class="gl-font-bold gl-bg-gray-50"
|
||||
active-class="gl-font-bold gl-bg-strong"
|
||||
exact
|
||||
class="gl-flex gl-items-center gl-rounded-base gl-p-2 gl-text-default hover:gl-bg-gray-50 hover:gl-text-default hover:gl-no-underline"
|
||||
class="gl-flex gl-items-center gl-rounded-base gl-p-2 gl-text-default hover:gl-bg-strong hover:gl-text-default hover:gl-no-underline"
|
||||
>
|
||||
<status-icon :icon-name="statusIcon" :is-loading="isLoading" />
|
||||
<slot></slot>
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ export default {
|
|||
class="gl-flex gl-min-h-7 gl-items-center gl-rounded-base gl-pl-4"
|
||||
:class="{
|
||||
'gl-bg-orange-50': blocksMerge && !allResolved,
|
||||
'gl-bg-gray-50': !blocksMerge || allResolved,
|
||||
'gl-bg-strong': !blocksMerge || allResolved,
|
||||
'gl-mr-3': !isNotificationsTodosButtons,
|
||||
'gl-mr-5': isNotificationsTodosButtons,
|
||||
}"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ export default {
|
|||
data-testid="discussion-filter-container"
|
||||
>
|
||||
<div
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle"
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-strong gl-text-subtle"
|
||||
>
|
||||
<gl-icon name="comment" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -238,8 +238,6 @@ export default {
|
|||
});
|
||||
}
|
||||
|
||||
scrollToTargetOnResize();
|
||||
|
||||
eventHub.$on('noteFormAddToReview', this.handleReviewTracking);
|
||||
eventHub.$on('noteFormStartReview', this.handleReviewTracking);
|
||||
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ export default {
|
|||
<additional-metadata-loader v-if="isLoading" />
|
||||
<div
|
||||
v-if="showMetadata"
|
||||
class="gl-rounded-base gl-bg-gray-50 gl-shadow-inner-1-gray-100"
|
||||
class="gl-rounded-base gl-bg-strong gl-shadow-inner-1-gray-100"
|
||||
data-testid="main"
|
||||
>
|
||||
<component
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-rounded-base gl-bg-gray-50 gl-shadow-inner-1-gray-100">
|
||||
<div class="gl-rounded-base gl-bg-strong gl-shadow-inner-1-gray-100">
|
||||
<div
|
||||
v-for="index in $options.loader.repeat"
|
||||
:key="index"
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ export default {
|
|||
name: 'ReleasesIndexApp',
|
||||
i18n,
|
||||
links: {
|
||||
alertInfoMessageLink: helpPagePath('ci/yaml/index.html', { anchor: 'release' }),
|
||||
alertInfoMessageLink: helpPagePath('ci/yaml/_index.html', { anchor: 'release' }),
|
||||
alertInfoPublishLink: helpPagePath('ci/components/index', { anchor: 'publish-a-new-release' }),
|
||||
},
|
||||
components: {
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-bg-gray-50 gl-py-13 gl-text-center">
|
||||
<div class="gl-bg-strong gl-py-13 gl-text-center">
|
||||
<gl-link :href="filePath" rel="nofollow" :download="fileName" target="_blank">
|
||||
<div>
|
||||
<gl-icon :size="16" name="download" variant="strong" />
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<template>
|
||||
<div class="gl-bg-gray-50 gl-p-7 gl-text-center">
|
||||
<div class="gl-bg-strong gl-p-7 gl-text-center">
|
||||
<img :src="url" :alt="alt" data-testid="image" class="gl-max-w-full" />
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-bg-gray-50 gl-py-13 gl-text-center" data-type="lfs">
|
||||
<div class="gl-bg-strong gl-py-13 gl-text-center" data-type="lfs">
|
||||
<gl-sprintf :message="$options.i18n.lfsText">
|
||||
<template #link="{ content }">
|
||||
<gl-link :href="filePath" :download="fileName" target="_blank">{{ content }}</gl-link>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<template>
|
||||
<div class="gl-bg-gray-50 gl-p-7 gl-text-center">
|
||||
<div class="gl-bg-strong gl-p-7 gl-text-center">
|
||||
<video :src="url" controls data-testid="video" class="gl-max-w-full"></video>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ export default {
|
|||
<div class="gl-mb-2">
|
||||
<div
|
||||
v-if="shouldShowRefInfo"
|
||||
class="gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-subtle"
|
||||
class="gl-inline-block gl-rounded-base gl-bg-strong gl-px-2 gl-text-subtle"
|
||||
data-testid="commit-ref-info"
|
||||
>
|
||||
<gl-icon v-if="tag" name="tag" :size="12" variant="subtle" />
|
||||
|
|
@ -178,7 +178,7 @@ export default {
|
|||
</tooltip-on-truncate>
|
||||
</div>
|
||||
|
||||
<div class="gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-sm gl-text-default">
|
||||
<div class="gl-inline-block gl-rounded-base gl-bg-strong gl-px-2 gl-text-sm gl-text-default">
|
||||
<gl-icon name="commit" class="js-commit-icon" :size="12" />
|
||||
<gl-link :href="commitUrl" class="gl-text-gray-700" data-testid="commit-sha">{{
|
||||
shortSha
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export default {
|
|||
<template>
|
||||
<timeline-entry-item class="note note-wrapper">
|
||||
<div
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle"
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-strong gl-text-subtle"
|
||||
></div>
|
||||
<div class="timeline-content">
|
||||
<div class="note-header"></div>
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ export default {
|
|||
return this.getNoteableData.noteableType === 'MergeRequest';
|
||||
},
|
||||
iconBgClass() {
|
||||
return ICON_COLORS[this.note.system_note_icon_name] || 'gl-bg-gray-50 gl-text-subtle';
|
||||
return ICON_COLORS[this.note.system_note_icon_name] || 'gl-bg-strong gl-text-subtle';
|
||||
},
|
||||
systemNoteIconName() {
|
||||
let icon = this.note.system_note_icon_name;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle"
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-strong gl-text-subtle"
|
||||
>
|
||||
<slot></slot>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
export const tdClass = 'table-col gl-flex d-md-table-cell gl-items-center gl-whitespace-nowrap';
|
||||
export const bodyTrClass =
|
||||
'gl-border-1 gl-border-t-solid gl-border-default hover:gl-cursor-pointer hover:gl-bg-gray-50 hover:gl-border-b-solid';
|
||||
'gl-border-1 gl-border-t-solid gl-border-default hover:gl-cursor-pointer hover:gl-bg-strong hover:gl-border-b-solid';
|
||||
|
||||
export const defaultPageSize = 20;
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ export default {
|
|||
<template>
|
||||
<timeline-entry-item class="system-note note-wrapper">
|
||||
<div
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle"
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-strong gl-text-subtle"
|
||||
>
|
||||
<gl-icon :name="icon" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-mt-4 sm:gl-ml-auto">
|
||||
<div class="sm:gl-ml-auto">
|
||||
<gl-button
|
||||
v-gl-tooltip.hover
|
||||
:title="
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export default {
|
|||
<template>
|
||||
<li class="timeline-entry note note-wrapper discussion-filter-note">
|
||||
<div
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle"
|
||||
class="gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-strong gl-text-subtle"
|
||||
>
|
||||
<gl-icon name="comment" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="!isLoading" class="gl-mt-3">
|
||||
<div v-if="!isLoading">
|
||||
<awards-list
|
||||
:awards="awards"
|
||||
:can-award-emoji="$options.isLoggedIn"
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ export default {
|
|||
</div>
|
||||
<div
|
||||
v-if="organizationName !== s__('Crm|No organization')"
|
||||
class="gl-flex gl-flex-col gl-gap-2 gl-rounded-base gl-bg-gray-50 gl-p-3"
|
||||
class="gl-flex gl-flex-col gl-gap-2 gl-rounded-base gl-bg-strong gl-p-3"
|
||||
>
|
||||
<div class="gl-font-bold">{{ organizationName }}</div>
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -964,7 +964,7 @@ export default {
|
|||
@cancelEditing="cancelEditing"
|
||||
@error="updateError = $event"
|
||||
/>
|
||||
<div class="gl-flex gl-flex-wrap gl-justify-between">
|
||||
<div class="gl-mt-3 gl-flex gl-flex-wrap gl-justify-between gl-gap-y-3">
|
||||
<work-item-award-emoji
|
||||
v-if="workItemAwardEmoji"
|
||||
:work-item-id="workItem.id"
|
||||
|
|
@ -974,7 +974,7 @@ export default {
|
|||
@error="updateError = $event"
|
||||
@emoji-updated="$emit('work-item-emoji-updated', $event)"
|
||||
/>
|
||||
<div class="gl-flex gl-gap-3">
|
||||
<div class="gl-mt-2 gl-flex gl-flex-wrap gl-gap-3 gl-gap-y-3">
|
||||
<gl-intersection-observer
|
||||
v-if="showUploadDesign"
|
||||
@appear="isDesignUploadButtonInViewport = true"
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="showCreateOptions" class="gl-mt-4">
|
||||
<div v-if="showCreateOptions">
|
||||
<gl-button-group>
|
||||
<gl-button
|
||||
:loading="checkingBranchAvailibility"
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ module Groups
|
|||
def authorize_show_cicd_settings!
|
||||
return if can_any?(current_user, [
|
||||
:admin_cicd_variables,
|
||||
:admin_protected_environments,
|
||||
:admin_runner
|
||||
], group)
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ class IdeController < ApplicationController
|
|||
push_frontend_feature_flag(:build_service_proxy)
|
||||
push_frontend_feature_flag(:reject_unsigned_commits_by_gitlab)
|
||||
push_frontend_feature_flag(:web_ide_language_server, current_user)
|
||||
push_frontend_feature_flag(:web_ide_settings_context_hash, current_user)
|
||||
end
|
||||
|
||||
feature_category :web_ide
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ module Projects
|
|||
def authorize_show_cicd_settings!
|
||||
return if can_any?(current_user, [
|
||||
:admin_cicd_variables,
|
||||
:admin_protected_environments,
|
||||
:admin_runner
|
||||
], project)
|
||||
|
||||
|
|
|
|||
|
|
@ -46,10 +46,22 @@ module Types
|
|||
null: true,
|
||||
description: 'Timestamp of when the branch rule was created.'
|
||||
|
||||
field :squash_option,
|
||||
type: ::Types::Projects::BranchRules::SquashOptionType,
|
||||
null: true,
|
||||
description: 'The default behavior for squashing in merge requests. ' \
|
||||
'Returns null if `branch_rule_squash_settings` feature flag is disabled.',
|
||||
experiment: { milestone: '17.9' }
|
||||
field :updated_at,
|
||||
Types::TimeType,
|
||||
null: true,
|
||||
description: 'Timestamp of when the branch rule was last updated.'
|
||||
|
||||
def squash_option
|
||||
return unless ::Feature.enabled?(:branch_rule_squash_settings, branch_rule.project)
|
||||
|
||||
branch_rule.squash_option
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Types
|
||||
module Projects
|
||||
module BranchRules
|
||||
class SquashOptionType < Types::BaseObject
|
||||
graphql_name 'SquashOption'
|
||||
description 'Squash option overrides for a protected branch'
|
||||
accepts ::Projects::SquashOption
|
||||
authorize :read_squash_option
|
||||
present_using ::Projects::BranchRules::SquashOptionPresenter
|
||||
|
||||
field :option,
|
||||
GraphQL::Types::String,
|
||||
null: false,
|
||||
description: 'Human-readable description of the squash option.',
|
||||
method: :human_squash_option
|
||||
|
||||
field :help_text,
|
||||
GraphQL::Types::String,
|
||||
null: false,
|
||||
description: 'Help text for the squash option.'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -25,7 +25,7 @@ module Ci
|
|||
"initial-branch-name" => initial_branch,
|
||||
"includes-help-page-path" => help_page_path('ci/yaml/includes.md'),
|
||||
"lint-help-page-path" => help_page_path('ci/yaml/lint.md', anchor: 'check-cicd-syntax'),
|
||||
"needs-help-page-path" => help_page_path('ci/yaml/index.md', anchor: 'needs'),
|
||||
"needs-help-page-path" => help_page_path('ci/yaml/_index.md', anchor: 'needs'),
|
||||
"new-merge-request-path" => namespace_project_new_merge_request_path,
|
||||
"pipeline_etag" => latest_commit ? graphql_etag_pipeline_sha_path(latest_commit.sha) : '',
|
||||
"pipeline-page-path" => project_pipelines_path(project),
|
||||
|
|
@ -36,7 +36,7 @@ module Ci
|
|||
"total-branches" => total_branches,
|
||||
"uses-external-config" => uses_external_config?(project) ? 'true' : 'false',
|
||||
"validate-tab-illustration-path" => image_path('illustrations/empty-state/empty-devops-md.svg'),
|
||||
"yml-help-page-path" => help_page_path('ci/yaml/index.md')
|
||||
"yml-help-page-path" => help_page_path('ci/yaml/_index.md')
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,12 @@ module Clusters
|
|||
belongs_to :environment
|
||||
|
||||
validates :template_name, length: { maximum: 1024 }
|
||||
|
||||
enum :status, {
|
||||
processing: 0,
|
||||
completed: 1,
|
||||
failed: 2
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ module Ci
|
|||
|
||||
def ci_docs_link(name, anchor)
|
||||
ApplicationController.helpers.link_to(
|
||||
name, Rails.application.routes.url_helpers.help_page_url('ci/yaml/index.md', anchor: anchor)
|
||||
name, Rails.application.routes.url_helpers.help_page_url('ci/yaml/_index.md', anchor: anchor)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Projects
|
||||
module CustomBranchRule
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
include GlobalID::Identification
|
||||
extend Forwardable
|
||||
|
||||
attr_reader :project
|
||||
|
||||
def_delegators(:project, :id)
|
||||
end
|
||||
|
||||
class_methods do
|
||||
def find(id)
|
||||
project = Project.find(id)
|
||||
|
||||
new(project)
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
raise ActiveRecord::RecordNotFound, "Couldn't find #{name} with 'id'=#{id}"
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(project)
|
||||
@project = project
|
||||
end
|
||||
|
||||
def name
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def matching_branches_count
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def default_branch?
|
||||
false
|
||||
end
|
||||
|
||||
def protected?
|
||||
false
|
||||
end
|
||||
|
||||
def branch_protection
|
||||
nil
|
||||
end
|
||||
|
||||
def group
|
||||
nil
|
||||
end
|
||||
|
||||
def squash_option
|
||||
nil
|
||||
end
|
||||
|
||||
def created_at
|
||||
nil
|
||||
end
|
||||
|
||||
def updated_at
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
Projects::CustomBranchRule.prepend_mod
|
||||
|
|
@ -24,5 +24,9 @@ module Projects
|
|||
def squash_readonly?
|
||||
%w[always never].include?(squash_option)
|
||||
end
|
||||
|
||||
def branch_rule
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -81,6 +81,10 @@ class ProjectSetting < ApplicationRecord
|
|||
super(value.presence) # Call the default setter to set the value
|
||||
end
|
||||
|
||||
def branch_rule
|
||||
::Projects::AllBranchesRule.new(project)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validates_mr_default_target_self
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Projects
|
||||
class AllBranchesRule < BranchRule
|
||||
include Projects::CustomBranchRule
|
||||
|
||||
def name
|
||||
s_('All branches')
|
||||
end
|
||||
|
||||
def matching_branches_count
|
||||
project.repository.branch_count
|
||||
end
|
||||
|
||||
def squash_option
|
||||
project.project_setting
|
||||
end
|
||||
end
|
||||
end
|
||||
Projects::AllBranchesRule.prepend_mod_with('Projects::AllBranchesRule')
|
||||
|
|
@ -32,6 +32,10 @@ module Projects
|
|||
matching_branches = protected_branch.matching(branch_names)
|
||||
matching_branches.count
|
||||
end
|
||||
|
||||
def squash_option
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Projects
|
||||
module BranchRules
|
||||
class SquashOption < ApplicationRecord
|
||||
include ::Projects::SquashOption
|
||||
|
||||
belongs_to :protected_branch, optional: false
|
||||
belongs_to :project, optional: false
|
||||
|
||||
validates :protected_branch, uniqueness: true
|
||||
|
||||
validate :validate_protected_branch_not_wildcard
|
||||
validate :validate_protected_branch_belongs_to_project
|
||||
|
||||
def branch_rule
|
||||
::Projects::BranchRule.new(project, protected_branch)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validate_protected_branch_not_wildcard
|
||||
return unless protected_branch&.wildcard?
|
||||
|
||||
errors.add(:protected_branch, 'cannot be a wildcard')
|
||||
end
|
||||
|
||||
def validate_protected_branch_belongs_to_project
|
||||
return unless protected_branch && project
|
||||
return if protected_branch.project_id == project.id
|
||||
|
||||
errors.add(:protected_branch, 'must belong to project')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -151,7 +151,13 @@ class GlobalPolicy < BasePolicy
|
|||
enable :admin_web_hook
|
||||
|
||||
# Admin pages
|
||||
enable :read_admin_audit_log
|
||||
enable :read_admin_background_jobs
|
||||
enable :read_admin_background_migrations
|
||||
enable :read_admin_cicd
|
||||
enable :read_admin_health_check
|
||||
enable :read_admin_metrics_dashboard
|
||||
enable :read_admin_system_information
|
||||
end
|
||||
|
||||
# We can't use `read_statistics` because the user may have different permissions for different projects
|
||||
|
|
|
|||
|
|
@ -283,6 +283,7 @@ class GroupPolicy < Namespaces::GroupProjectNamespaceSharedPolicy
|
|||
enable :admin_package
|
||||
enable :admin_runner
|
||||
enable :admin_integrations
|
||||
enable :admin_protected_environments
|
||||
enable :change_visibility_level
|
||||
|
||||
enable :read_usage_quotas
|
||||
|
|
|
|||
|
|
@ -665,6 +665,7 @@ class ProjectPolicy < BasePolicy
|
|||
enable :change_restrict_user_defined_variables
|
||||
enable :create_protected_branch
|
||||
enable :admin_protected_branch
|
||||
enable :admin_protected_environments
|
||||
end
|
||||
|
||||
rule { can?(:manage_protected_tags) }.policy do
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Projects
|
||||
class SquashOptionPolicy < ::BasePolicy
|
||||
delegate { @subject.branch_rule }
|
||||
|
||||
rule { can?(:read_branch_rule) }.policy do
|
||||
enable :read_squash_option
|
||||
end
|
||||
|
||||
rule { can?(:update_branch_rule) }.policy do
|
||||
enable :create_squash_option
|
||||
enable :update_squash_option
|
||||
enable :destroy_squash_option
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Projects
|
||||
module BranchRules
|
||||
class SquashOptionPresenter < Gitlab::View::Presenter::Delegated
|
||||
presents ::Projects::BranchRules::SquashOption
|
||||
|
||||
def help_text
|
||||
case squash_option
|
||||
when 'never'
|
||||
'Squashing is never performed and the checkbox is hidden.'
|
||||
when 'always'
|
||||
'Checkbox is visible and unselected by default.'
|
||||
when 'default_on'
|
||||
'Checkbox is visible and selected by default.'
|
||||
when 'default_off'
|
||||
'Squashing is always performed. Checkbox is visible and selected, and users cannot change it.'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -138,7 +138,7 @@ class BuildDetailsEntity < Ci::JobEntity
|
|||
def callout_message
|
||||
return super unless build.failure_reason.to_sym == :missing_dependency_failure
|
||||
|
||||
docs_url = "https://docs.gitlab.com/ee/ci/yaml/index.html#dependencies"
|
||||
docs_url = "https://docs.gitlab.com/ee/ci/yaml/#dependencies"
|
||||
troubleshooting_url = "https://docs.gitlab.com/ee/ci/jobs/job_artifacts_troubleshooting.html#error-message-this-job-could-not-start-because-it-could-not-retrieve-the-needed-artifacts"
|
||||
|
||||
[
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@
|
|||
"admin_protected_branch": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"admin_protected_environments": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"admin_push_rules": {
|
||||
"type": "boolean"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -82,5 +82,5 @@
|
|||
variant: :danger,
|
||||
method: :delete,
|
||||
href: admin_spam_log_path(spam_log, remove_user: true),
|
||||
button_options: { class: 'menu-item focus:!gl-bg-gray-50', data: { confirm: _("User %{user_name} will be removed! Are you sure?") % { user_name: user.name }, confirm_btn_variant: 'danger' } }) do
|
||||
button_options: { class: 'menu-item focus:!gl-bg-strong', data: { confirm: _("User %{user_name} will be removed! Are you sure?") % { user_name: user.name }, confirm_btn_variant: 'danger' } }) do
|
||||
%span.gl-text-danger= _('Remove user')
|
||||
|
|
|
|||
|
|
@ -50,4 +50,5 @@
|
|||
- c.with_body do
|
||||
= render 'groups/settings/ci_cd/auto_devops_form', group: @group
|
||||
|
||||
- if can?(current_user, :admin_protected_environments, @group)
|
||||
= render_if_exists 'groups/settings/ci_cd/protected_environments', expanded: expanded
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
#blame-stream-container.blame-stream-container
|
||||
|
||||
- if @blame_mode.pagination? && @blame_pagination.total_pages > 1
|
||||
.gl-flex.gl-justify-center.gl-flex-col.gl-items-center.gl-p-3.gl-bg-gray-50.gl-border-t-solid.gl-border-t-1.gl-border-default
|
||||
.gl-flex.gl-justify-center.gl-flex-col.gl-items-center.gl-p-3.gl-bg-strong.gl-border-t-solid.gl-border-t-1.gl-border-default
|
||||
= render Pajamas::ButtonComponent.new(href: entire_blame_path(@id, @project), size: :small, button_options: { class: 'gl-mt-3' }) do |c|
|
||||
= _('Show full blame')
|
||||
|
||||
|
|
|
|||
|
|
@ -6,4 +6,4 @@
|
|||
= s_('Pipelines|This GitLab CI configuration is invalid:')
|
||||
= viewer.validation_message(project: @project, sha: @commit.sha, user: @current_user)
|
||||
|
||||
= link_to _('Learn more'), help_page_path('ci/yaml/index.md')
|
||||
= link_to _('Learn more'), help_page_path('ci/yaml/_index.md')
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
= gl_loading_icon(inline: true, css_class: "!gl-mr-2")
|
||||
= s_('Pipelines|Validating GitLab CI configuration…')
|
||||
|
||||
= link_to _('Learn more'), help_page_path('ci/yaml/index.md')
|
||||
= link_to _('Learn more'), help_page_path('ci/yaml/_index.md')
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
= render "head"
|
||||
.gl-mt-5
|
||||
.project-network.gl-border-1.gl-border-solid.gl-border-gray-300
|
||||
.controls.gl-bg-gray-50.gl-p-2.gl-text-base.gl-text-subtle.gl-border-b-1.gl-border-b-solid.gl-border-b-gray-300
|
||||
.controls.gl-bg-strong.gl-p-2.gl-text-base.gl-text-subtle.gl-border-b-1.gl-border-b-solid.gl-border-b-gray-300
|
||||
= form_tag network_path, method: :get, class: 'form-inline network-form' do |f|
|
||||
= text_field_tag :extended_sha1, @options[:extended_sha1], placeholder: _("Git revision"), class: 'search-input form-control gl-form-input input-mx-250 search-sha gl-mr-2'
|
||||
= render Pajamas::ButtonComponent.new(type: :submit, variant: :confirm, icon: 'search', button_options: {'aria-label': _("Search"), 'title': _("Search")})
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
- c.with_body do
|
||||
= render 'autodevops_form', auto_devops_enabled: @project.auto_devops_enabled?
|
||||
|
||||
- if can?(current_user, :admin_protected_environments, @project)
|
||||
= render_if_exists 'projects/settings/ci_cd/protected_environments', expanded: expanded
|
||||
|
||||
- if can?(current_user, :admin_runner, @project)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
= link_to avatar_icon_for_user(@user, 400, current_user: current_user), target: '_blank', rel: 'noopener noreferrer', title: s_('UserProfile|View large avatar') do
|
||||
= render Pajamas::AvatarComponent.new(@user, alt: s_('UserProfile|User profile picture'), size: 96, avatar_options: { itemprop: "image" })
|
||||
- if @user.status&.busy?
|
||||
= render Pajamas::BadgeComponent.new(s_('UserProfile|Busy'), variant: 'warning', class: 'gl-absolute gl-flex gl-justify-center gl-items-center gl-left-1/2 gl-bg-gray-50 gl-border gl-border-white -gl-translate-x-1/2 gl-top-full -gl-mt-3')
|
||||
= render Pajamas::BadgeComponent.new(s_('UserProfile|Busy'), variant: 'warning', class: 'gl-absolute gl-flex gl-justify-center gl-items-center gl-left-1/2 gl-border gl-border-white -gl-translate-x-1/2 gl-top-full -gl-mt-3')
|
||||
%div
|
||||
%h1.gl-heading-1.gl-leading-1.gl-mr-2{ class: '!gl-my-0', itemprop: 'name' }
|
||||
= user_display_name(@user)
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
name: pages_multiple_versions_setting
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127142
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/422145
|
||||
milestone: '16.4'
|
||||
type: beta
|
||||
group: group::knowledge
|
||||
default_enabled: true
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
name: web_ide_settings_context_hash
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/501286
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175031
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/501286
|
||||
milestone: '17.8'
|
||||
group: group::remote development
|
||||
type: beta
|
||||
default_enabled: false
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
name: markdown_paste_url
|
||||
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/233393
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/178942
|
||||
rollout_issue_url:
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/517295
|
||||
milestone: '17.9'
|
||||
group: group::knowledge
|
||||
type: gitlab_com_derisk
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
migration_job_name: BackfillDesignManagementDesignsVersionsNamespaceId
|
||||
description: Backfills sharding key `design_management_designs_versions.namespace_id` from `design_management_designs`.
|
||||
feature_category: design_management
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/180220
|
||||
milestone: '17.9'
|
||||
queued_migration_version: 20250204151108
|
||||
finalized_by: # version of the migration that finalized this BBM
|
||||
|
|
@ -18,3 +18,4 @@ desired_sharding_key:
|
|||
sharding_key: namespace_id
|
||||
belongs_to: design
|
||||
table_size: small
|
||||
desired_sharding_key_migration_job_name: BackfillDesignManagementDesignsVersionsNamespaceId
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RemoveStartAndDueDateWidgetFromIncident < Gitlab::Database::Migration[2.2]
|
||||
include Gitlab::Database::MigrationHelpers::WorkItems::Widgets
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
disable_ddl_transaction!
|
||||
milestone '17.9'
|
||||
|
||||
WORK_ITEM_TYPE_ENUM_VALUES = [1] # incident
|
||||
WIDGETS = [
|
||||
{
|
||||
name: 'Start and due date',
|
||||
widget_type: 6
|
||||
}
|
||||
]
|
||||
|
||||
def up
|
||||
remove_widget_definitions(type_enum_values: WORK_ITEM_TYPE_ENUM_VALUES, widgets: WIDGETS)
|
||||
end
|
||||
|
||||
def down
|
||||
add_widget_definitions(type_enum_values: WORK_ITEM_TYPE_ENUM_VALUES, widgets: WIDGETS)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddNamespaceIdToDesignManagementDesignsVersions < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.9'
|
||||
|
||||
def change
|
||||
add_column :design_management_designs_versions, :namespace_id, :bigint
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class IndexDesignManagementDesignsVersionsOnNamespaceId < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.9'
|
||||
disable_ddl_transaction!
|
||||
|
||||
INDEX_NAME = 'index_design_management_designs_versions_on_namespace_id'
|
||||
|
||||
def up
|
||||
add_concurrent_index :design_management_designs_versions, :namespace_id, name: INDEX_NAME
|
||||
end
|
||||
|
||||
def down
|
||||
remove_concurrent_index_by_name :design_management_designs_versions, INDEX_NAME
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddDesignManagementDesignsVersionsNamespaceIdFk < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.9'
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_concurrent_foreign_key :design_management_designs_versions, :namespaces, column: :namespace_id,
|
||||
on_delete: :cascade
|
||||
end
|
||||
|
||||
def down
|
||||
with_lock_retries do
|
||||
remove_foreign_key :design_management_designs_versions, column: :namespace_id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddDesignManagementDesignsVersionsNamespaceIdTrigger < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.9'
|
||||
|
||||
def up
|
||||
install_sharding_key_assignment_trigger(
|
||||
table: :design_management_designs_versions,
|
||||
sharding_key: :namespace_id,
|
||||
parent_table: :design_management_designs,
|
||||
parent_sharding_key: :namespace_id,
|
||||
foreign_key: :design_id
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
remove_sharding_key_assignment_trigger(
|
||||
table: :design_management_designs_versions,
|
||||
sharding_key: :namespace_id,
|
||||
parent_table: :design_management_designs,
|
||||
parent_sharding_key: :namespace_id,
|
||||
foreign_key: :design_id
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class QueueBackfillDesignManagementDesignsVersionsNamespaceId < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.9'
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell
|
||||
|
||||
MIGRATION = "BackfillDesignManagementDesignsVersionsNamespaceId"
|
||||
DELAY_INTERVAL = 2.minutes
|
||||
BATCH_SIZE = 1000
|
||||
SUB_BATCH_SIZE = 100
|
||||
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:design_management_designs_versions,
|
||||
:id,
|
||||
:namespace_id,
|
||||
:design_management_designs,
|
||||
:namespace_id,
|
||||
:design_id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
batch_size: BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(
|
||||
MIGRATION,
|
||||
:design_management_designs_versions,
|
||||
:id,
|
||||
[
|
||||
:namespace_id,
|
||||
:design_management_designs,
|
||||
:namespace_id,
|
||||
:design_id
|
||||
]
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
34a5aef5395519e84a744d61da72c20179100eb9f80a3155c0d65349cf211577
|
||||
|
|
@ -0,0 +1 @@
|
|||
4114f5f0abb3885e3f59c7ea7d68e91bc8f3029bfa773fdc05fd645d6d5ee6f8
|
||||
|
|
@ -0,0 +1 @@
|
|||
59dd208b078e9a7e0beb6ca647fa3b713db6ad8cfbd468cf15407d5aa4d753a9
|
||||
|
|
@ -0,0 +1 @@
|
|||
d49e35e24ea177fb8d9fe6b41b17de02763acc62a5cd48857f4d8c2ef0309b0d
|
||||
|
|
@ -0,0 +1 @@
|
|||
1d9bd2a55fc80346d7d0cd6d74ba526886bc11e65128008d38226228fdeac570
|
||||
|
|
@ -0,0 +1 @@
|
|||
05c4facdc84979f3859ceeae5cdcb05220f39393da6af98722d17bf04720c566
|
||||
|
|
@ -3364,6 +3364,22 @@ RETURN NEW;
|
|||
END
|
||||
$$;
|
||||
|
||||
CREATE FUNCTION trigger_fac444e0cae6() RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
IF NEW."namespace_id" IS NULL THEN
|
||||
SELECT "namespace_id"
|
||||
INTO NEW."namespace_id"
|
||||
FROM "design_management_designs"
|
||||
WHERE "design_management_designs"."id" = NEW."design_id";
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
|
||||
END
|
||||
$$;
|
||||
|
||||
CREATE FUNCTION trigger_fbd42ed69453() RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
|
|
@ -12554,7 +12570,8 @@ CREATE TABLE design_management_designs_versions (
|
|||
design_id bigint NOT NULL,
|
||||
version_id bigint NOT NULL,
|
||||
event smallint DEFAULT 0 NOT NULL,
|
||||
image_v432x230 character varying(255)
|
||||
image_v432x230 character varying(255),
|
||||
namespace_id bigint
|
||||
);
|
||||
|
||||
CREATE SEQUENCE design_management_designs_versions_id_seq
|
||||
|
|
@ -32191,6 +32208,8 @@ CREATE INDEX index_design_management_designs_versions_on_design_id ON design_man
|
|||
|
||||
CREATE INDEX index_design_management_designs_versions_on_event ON design_management_designs_versions USING btree (event);
|
||||
|
||||
CREATE INDEX index_design_management_designs_versions_on_namespace_id ON design_management_designs_versions USING btree (namespace_id);
|
||||
|
||||
CREATE INDEX index_design_management_designs_versions_on_version_id ON design_management_designs_versions USING btree (version_id);
|
||||
|
||||
CREATE INDEX index_design_management_repositories_on_namespace_id ON design_management_repositories USING btree (namespace_id);
|
||||
|
|
@ -37945,6 +37964,8 @@ CREATE TRIGGER trigger_f6c61cdddf31 BEFORE INSERT OR UPDATE ON ml_model_metadata
|
|||
|
||||
CREATE TRIGGER trigger_f6f59d8216b3 BEFORE INSERT OR UPDATE ON protected_environment_deploy_access_levels FOR EACH ROW EXECUTE FUNCTION trigger_f6f59d8216b3();
|
||||
|
||||
CREATE TRIGGER trigger_fac444e0cae6 BEFORE INSERT OR UPDATE ON design_management_designs_versions FOR EACH ROW EXECUTE FUNCTION trigger_fac444e0cae6();
|
||||
|
||||
CREATE TRIGGER trigger_fbd42ed69453 BEFORE INSERT OR UPDATE ON external_status_checks_protected_branches FOR EACH ROW EXECUTE FUNCTION trigger_fbd42ed69453();
|
||||
|
||||
CREATE TRIGGER trigger_fbd8825b3057 BEFORE INSERT OR UPDATE ON boards_epic_board_labels FOR EACH ROW EXECUTE FUNCTION trigger_fbd8825b3057();
|
||||
|
|
@ -39266,6 +39287,9 @@ ALTER TABLE ONLY fork_network_members
|
|||
ALTER TABLE ONLY ml_candidate_metadata
|
||||
ADD CONSTRAINT fk_b044692715 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY design_management_designs_versions
|
||||
ADD CONSTRAINT fk_b054e8aa82 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY project_deletion_schedules
|
||||
ADD CONSTRAINT fk_b11f7e2219 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ On GitLab Self-Managed:
|
|||
- `0` for public projects, so they do not consume compute minutes.
|
||||
- `1` for internal and private projects.
|
||||
|
||||
[Trigger jobs](../../ci/yaml/index.md#trigger) do not execute on runners, so they do not
|
||||
consume compute minutes, even when using [`strategy:depend`](../../ci/yaml/index.md#triggerstrategy)
|
||||
[Trigger jobs](../../ci/yaml/_index.md#trigger) do not execute on runners, so they do not
|
||||
consume compute minutes, even when using [`strategy:depend`](../../ci/yaml/_index.md#triggerstrategy)
|
||||
to wait for the [downstream pipeline](../../ci/pipelines/downstream_pipelines.md) status.
|
||||
The triggered downstream pipeline consumes compute minutes the same as other pipelines.
|
||||
|
||||
|
|
|
|||
|
|
@ -104,10 +104,10 @@ To disable artifacts site-wide:
|
|||
|
||||
GitLab Runner can upload an archive containing the job artifacts to GitLab. By default,
|
||||
this is done when the job succeeds, but can also be done on failure, or always, with the
|
||||
[`artifacts:when`](../../ci/yaml/index.md#artifactswhen) parameter.
|
||||
[`artifacts:when`](../../ci/yaml/_index.md#artifactswhen) parameter.
|
||||
|
||||
Most artifacts are compressed by GitLab Runner before being sent to the coordinator. The exception to this is
|
||||
[reports artifacts](../../ci/yaml/index.md#artifactsreports), which are compressed after uploading.
|
||||
[reports artifacts](../../ci/yaml/_index.md#artifactsreports), which are compressed after uploading.
|
||||
|
||||
### Using local storage
|
||||
|
||||
|
|
@ -288,7 +288,7 @@ To migrate artifacts back to local storage:
|
|||
|
||||
## Expiring artifacts
|
||||
|
||||
If [`artifacts:expire_in`](../../ci/yaml/index.md#artifactsexpire_in) is used to set
|
||||
If [`artifacts:expire_in`](../../ci/yaml/_index.md#artifactsexpire_in) is used to set
|
||||
an expiry for the artifacts, they are marked for deletion right after that date passes.
|
||||
Otherwise, they expire per the [default artifacts expiration setting](../settings/continuous_integration.md#default-artifacts-expiration).
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue