Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
326e1de67f
commit
423309c4ae
24 changed files with 180 additions and 193 deletions
|
@ -2,8 +2,6 @@
|
||||||
extends: .use-kaniko
|
extends: .use-kaniko
|
||||||
variables:
|
variables:
|
||||||
GIT_LFS_SKIP_SMUDGE: 1
|
GIT_LFS_SKIP_SMUDGE: 1
|
||||||
script:
|
|
||||||
- scripts/checkout-mr-source-sha
|
|
||||||
retry: 2
|
retry: 2
|
||||||
|
|
||||||
# This image is used by:
|
# This image is used by:
|
||||||
|
@ -20,8 +18,7 @@ build-qa-image:
|
||||||
# Default latest tag for particular branch
|
# Default latest tag for particular branch
|
||||||
QA_IMAGE_BRANCH: ${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}
|
QA_IMAGE_BRANCH: ${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}
|
||||||
script:
|
script:
|
||||||
- !reference [.base-image-build, script]
|
- export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_SHA}"
|
||||||
- export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-$CI_COMMIT_SHA}"
|
|
||||||
- echo $QA_IMAGE
|
- echo $QA_IMAGE
|
||||||
- echo $QA_IMAGE_BRANCH
|
- echo $QA_IMAGE_BRANCH
|
||||||
- |
|
- |
|
||||||
|
@ -45,7 +42,6 @@ build-assets-image:
|
||||||
stage: build-images
|
stage: build-images
|
||||||
needs: ["compile-production-assets"]
|
needs: ["compile-production-assets"]
|
||||||
script:
|
script:
|
||||||
- !reference [.base-image-build, script]
|
|
||||||
# TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists
|
# TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists
|
||||||
# We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines
|
# We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines
|
||||||
# https://gitlab.com/gitlab-org/gitlab/issues/208389
|
# https://gitlab.com/gitlab-org/gitlab/issues/208389
|
||||||
|
|
|
@ -43,7 +43,6 @@ compile-production-assets:
|
||||||
- webpack-report/
|
- webpack-report/
|
||||||
when: always
|
when: always
|
||||||
before_script:
|
before_script:
|
||||||
- scripts/checkout-mr-source-sha
|
|
||||||
- !reference [.default-before_script, before_script]
|
- !reference [.default-before_script, before_script]
|
||||||
after_script:
|
after_script:
|
||||||
- rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here
|
- rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here
|
||||||
|
|
|
@ -42,7 +42,6 @@ include:
|
||||||
GIT_LFS_SKIP_SMUDGE: 1
|
GIT_LFS_SKIP_SMUDGE: 1
|
||||||
WD_INSTALL_DIR: /usr/local/bin
|
WD_INSTALL_DIR: /usr/local/bin
|
||||||
before_script:
|
before_script:
|
||||||
- scripts/checkout-mr-source-sha
|
|
||||||
- !reference [.bundle-base, before_script]
|
- !reference [.bundle-base, before_script]
|
||||||
script:
|
script:
|
||||||
- export EE_LICENSE="$(cat $REVIEW_APPS_EE_LICENSE_FILE)"
|
- export EE_LICENSE="$(cat $REVIEW_APPS_EE_LICENSE_FILE)"
|
||||||
|
@ -61,7 +60,7 @@ include:
|
||||||
--format RspecJunitFormatter --out tmp/rspec.xml \
|
--format RspecJunitFormatter --out tmp/rspec.xml \
|
||||||
]" || qa_run_status=$?
|
]" || qa_run_status=$?
|
||||||
- if [ ${qa_run_status} -ne 0 ]; then
|
- if [ ${qa_run_status} -ne 0 ]; then
|
||||||
release_sha=$(echo "${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-${CI_COMMIT_SHA}}" | cut -c1-11);
|
release_sha=$(echo "${CI_COMMIT_SHA}" | cut -c1-11);
|
||||||
echo "Errors can be found at https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/${release_sha}/all-events/.";
|
echo "Errors can be found at https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/${release_sha}/all-events/.";
|
||||||
fi
|
fi
|
||||||
- exit ${qa_run_status}
|
- exit ${qa_run_status}
|
||||||
|
|
|
@ -36,18 +36,9 @@ export default {
|
||||||
isEditing: false,
|
isEditing: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
|
||||||
linkCanonicalSrc(value) {
|
|
||||||
if (!value) this.isEditing = true;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
shouldShow() {
|
shouldShow() {
|
||||||
const shouldShow = this.tiptapEditor.isActive(Link.name);
|
return this.tiptapEditor.isActive(Link.name);
|
||||||
|
|
||||||
if (!shouldShow) this.isEditing = false;
|
|
||||||
|
|
||||||
return shouldShow;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
startEditingLink() {
|
startEditingLink() {
|
||||||
|
@ -92,13 +83,23 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
updateLinkToState() {
|
updateLinkToState() {
|
||||||
if (!this.tiptapEditor.isActive(Link.name)) return;
|
const editor = this.tiptapEditor;
|
||||||
|
|
||||||
const { href, title, canonicalSrc } = this.tiptapEditor.getAttributes(Link.name);
|
const { href, title, canonicalSrc } = editor.getAttributes(Link.name);
|
||||||
|
|
||||||
|
if (
|
||||||
|
canonicalSrc === this.linkCanonicalSrc &&
|
||||||
|
href === this.linkHref &&
|
||||||
|
title === this.linkTitle
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.linkTitle = title;
|
this.linkTitle = title;
|
||||||
this.linkHref = href;
|
this.linkHref = href;
|
||||||
this.linkCanonicalSrc = canonicalSrc || href;
|
this.linkCanonicalSrc = canonicalSrc || href;
|
||||||
|
|
||||||
|
this.isEditing = !this.linkCanonicalSrc;
|
||||||
},
|
},
|
||||||
|
|
||||||
copyLinkHref() {
|
copyLinkHref() {
|
||||||
|
@ -108,6 +109,12 @@ export default {
|
||||||
removeLink() {
|
removeLink() {
|
||||||
this.tiptapEditor.chain().focus().extendMarkRange(Link.name).unsetLink().run();
|
this.tiptapEditor.chain().focus().extendMarkRange(Link.name).unsetLink().run();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
resetBubbleMenuState() {
|
||||||
|
this.linkTitle = undefined;
|
||||||
|
this.linkHref = undefined;
|
||||||
|
this.linkCanonicalSrc = undefined;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
tippyOptions: {
|
tippyOptions: {
|
||||||
placement: 'bottom',
|
placement: 'bottom',
|
||||||
|
@ -121,8 +128,10 @@ export default {
|
||||||
plugin-key="bubbleMenuLink"
|
plugin-key="bubbleMenuLink"
|
||||||
:should-show="shouldShow"
|
:should-show="shouldShow"
|
||||||
:tippy-options="$options.tippyOptions"
|
:tippy-options="$options.tippyOptions"
|
||||||
|
@show="updateLinkToState"
|
||||||
|
@hidden="resetBubbleMenuState"
|
||||||
>
|
>
|
||||||
<editor-state-observer @transaction="updateLinkToState">
|
<editor-state-observer @selectionUpdate="updateLinkToState">
|
||||||
<gl-button-group v-if="!isEditing" class="gl-display-flex gl-align-items-center">
|
<gl-button-group v-if="!isEditing" class="gl-display-flex gl-align-items-center">
|
||||||
<gl-link
|
<gl-link
|
||||||
v-gl-tooltip
|
v-gl-tooltip
|
||||||
|
|
|
@ -47,6 +47,9 @@ export default {
|
||||||
commit() {
|
commit() {
|
||||||
return this.deployment?.commit;
|
return this.deployment?.commit;
|
||||||
},
|
},
|
||||||
|
commitPath() {
|
||||||
|
return this.commit?.commitPath;
|
||||||
|
},
|
||||||
user() {
|
user() {
|
||||||
return this.deployment?.user;
|
return this.deployment?.user;
|
||||||
},
|
},
|
||||||
|
@ -147,7 +150,9 @@ export default {
|
||||||
class="gl-font-monospace gl-display-flex gl-align-items-center"
|
class="gl-font-monospace gl-display-flex gl-align-items-center"
|
||||||
>
|
>
|
||||||
<gl-icon ref="deployment-commit-icon" name="commit" class="gl-mr-2" />
|
<gl-icon ref="deployment-commit-icon" name="commit" class="gl-mr-2" />
|
||||||
<span v-gl-tooltip :title="$options.i18n.commitSha">{{ shortSha }}</span>
|
<gl-link v-gl-tooltip :title="$options.i18n.commitSha" :href="commitPath">
|
||||||
|
{{ shortSha }}
|
||||||
|
</gl-link>
|
||||||
<clipboard-button
|
<clipboard-button
|
||||||
:text="shortSha"
|
:text="shortSha"
|
||||||
category="tertiary"
|
category="tertiary"
|
||||||
|
|
|
@ -5,7 +5,9 @@ group: Authentication and Authorization
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# LDAP Troubleshooting for Administrators **(FREE SELF)**
|
# Troubleshooting LDAP **(FREE SELF)**
|
||||||
|
|
||||||
|
If you are an administrator, use the following information to troubleshoot LDAP.
|
||||||
|
|
||||||
## Common Problems & Workflows
|
## Common Problems & Workflows
|
||||||
|
|
||||||
|
|
|
@ -32,13 +32,13 @@ You can configure **What's new** to display features based on the tier,
|
||||||
or you can hide it. To configure it:
|
or you can hide it. To configure it:
|
||||||
|
|
||||||
1. On the top bar, select **Menu > Admin**.
|
1. On the top bar, select **Menu > Admin**.
|
||||||
1. On the left sidebar, select **Settings > Preferences**, then expand **What's new**.
|
1. On the left sidebar, select **Settings > Preferences**.
|
||||||
1. Choose one of the following options:
|
1. Expand **What's new**, and choose one of the following options:
|
||||||
|
|
||||||
| Option | Description |
|
| Option | Description |
|
||||||
| ------ | ----------- |
|
| ------ | ----------- |
|
||||||
| Enable What's new: All tiers | What's new presents new features from all tiers to help you keep track of all new features. |
|
| Enable What's new: All tiers | Presents new features from all tiers. |
|
||||||
| Enable What's new: Current tier only | What's new presents new features for your current subscription tier, while hiding new features not available to your subscription tier. |
|
| Enable What's new: Current tier only | Presents new features for your current subscription tier, and hides new features outside of your tier. |
|
||||||
| Disable What's new | What's new is disabled and can no longer be viewed. |
|
| Disable What's new | Disables this feature, so it no longer displays under the **{question}** icon. |
|
||||||
|
|
||||||
1. Select **Save changes**.
|
1. Select **Save changes**.
|
||||||
|
|
|
@ -4,7 +4,7 @@ group: Database
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Troubleshooting and Debugging Database
|
# Troubleshooting and debugging the database
|
||||||
|
|
||||||
This section is to help give some copy-pasta you can use as a reference when you
|
This section is to help give some copy-pasta you can use as a reference when you
|
||||||
run into some head-banging database problems.
|
run into some head-banging database problems.
|
||||||
|
|
|
@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
||||||
|
|
||||||
Troubleshooting topics should be the last topics on a page.
|
Troubleshooting topics should be the last topics on a page.
|
||||||
|
|
||||||
If a page has more than five troubleshooting topics, put the content on a separate page that has troubleshooting information exclusively. Name the page `Troubleshoot <featurename>`
|
If a page has more than five troubleshooting topics, put the content on a separate page that has troubleshooting information exclusively. Name the page `Troubleshooting <feature>`
|
||||||
and in the left nav, use the word `Troubleshoot` only.
|
and in the left nav, use the word `Troubleshoot` only.
|
||||||
|
|
||||||
Troubleshooting can be one of three types.
|
Troubleshooting can be one of three types.
|
||||||
|
|
|
@ -4,7 +4,7 @@ group: unassigned
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting frontend development issues
|
||||||
|
|
||||||
Running into a problem? Maybe this will help ¯\_(ツ)_/¯.
|
Running into a problem? Maybe this will help ¯\_(ツ)_/¯.
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ group: Product Intelligence
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting Service Ping
|
||||||
|
|
||||||
## Service Ping Payload drop
|
## Service Ping Payload drop
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ group: Product Intelligence
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting Snowplow
|
||||||
|
|
||||||
## Good events drop
|
## Good events drop
|
||||||
|
|
||||||
|
|
|
@ -100,22 +100,19 @@ A feature proposal to segregate access control regarding running pipelines from
|
||||||
#### With merged results pipelines
|
#### With merged results pipelines
|
||||||
|
|
||||||
In a merged results pipeline, the pipeline runs on a new ref that contains the merge result of the source and target branch.
|
In a merged results pipeline, the pipeline runs on a new ref that contains the merge result of the source and target branch.
|
||||||
However, this ref is not available to the `gitlab-qa-mirror` pipeline.
|
|
||||||
|
|
||||||
For this reason, the end-to-end tests on a merged results pipeline would use the head of the merge request source branch.
|
The end-to-end tests on a merged results pipeline would use the new ref instead of the head of the merge request source branch.
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph LR
|
graph LR
|
||||||
|
|
||||||
A["a1b1c1 - branch HEAD (CI_MERGE_REQUEST_SOURCE_BRANCH_SHA)"]
|
A["x1y1z1 - master HEAD"]
|
||||||
B["x1y1z1 - master HEAD"]
|
B["d1e1f1 - merged results (CI_COMMIT_SHA)"]
|
||||||
C["d1e1f1 - merged results (CI_COMMIT_SHA)"]
|
|
||||||
|
|
||||||
A --> C
|
A --> B
|
||||||
B --> C
|
|
||||||
|
|
||||||
A --> E["E2E tests"]
|
B --> C["Merged results pipeline"]
|
||||||
C --> D["Merged results pipeline"]
|
C --> D["E2E tests"]
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Running custom tests
|
##### Running custom tests
|
||||||
|
|
|
@ -5,7 +5,7 @@ group: Global Search
|
||||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||||
---
|
---
|
||||||
|
|
||||||
# Elasticsearch troubleshooting **(PREMIUM SELF)**
|
# Troubleshooting Elasticsearch **(PREMIUM SELF)**
|
||||||
|
|
||||||
Use the following information to troubleshoot Elasticsearch issues.
|
Use the following information to troubleshoot Elasticsearch issues.
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
||||||
type: reference, howto
|
type: reference, howto
|
||||||
---
|
---
|
||||||
|
|
||||||
# Dynamic Application Security Testing (DAST) Troubleshooting **(ULTIMATE)**
|
# Troubleshooting Dynamic Application Security Testing (DAST) **(ULTIMATE)**
|
||||||
|
|
||||||
The following troubleshooting scenarios have been collected from customer support cases. If you
|
The following troubleshooting scenarios have been collected from customer support cases. If you
|
||||||
experience a problem not addressed here, or the information here does not fix your problem, create a
|
experience a problem not addressed here, or the information here does not fix your problem, create a
|
||||||
|
|
|
@ -19,12 +19,8 @@ cp -r public/assets assets_container.build/public/
|
||||||
cp Dockerfile.assets assets_container.build/
|
cp Dockerfile.assets assets_container.build/
|
||||||
|
|
||||||
COMMIT_REF_SLUG_DESTINATION=${ASSETS_IMAGE_PATH}:${CI_COMMIT_REF_SLUG}
|
COMMIT_REF_SLUG_DESTINATION=${ASSETS_IMAGE_PATH}:${CI_COMMIT_REF_SLUG}
|
||||||
# Use CI_MERGE_REQUEST_SOURCE_BRANCH_SHA (MR HEAD commit) so that the image is in sync with Omnibus/CNG images.
|
|
||||||
# Background: Due to the fact that we cannot retrieve the Merged Commit in the downstream omnibus/CNG pipelines,
|
COMMIT_SHA_DESTINATION=${ASSETS_IMAGE_PATH}:${CI_COMMIT_SHA}
|
||||||
# we're building the Omnibus/CNG images for the MR HEAD commit.
|
|
||||||
# In turn, the assets image also needs to be built from the MR HEAD commit, so that everything is build from the same commit.
|
|
||||||
# For non-MR commits, we fallback to $CI_COMMIT_SHA.
|
|
||||||
COMMIT_SHA_DESTINATION=${ASSETS_IMAGE_PATH}:${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-$CI_COMMIT_SHA}
|
|
||||||
COMMIT_REF_NAME_DESTINATION=${ASSETS_IMAGE_PATH}:${CI_COMMIT_REF_NAME}
|
COMMIT_REF_NAME_DESTINATION=${ASSETS_IMAGE_PATH}:${CI_COMMIT_REF_NAME}
|
||||||
|
|
||||||
DESTINATIONS="--destination=$COMMIT_REF_SLUG_DESTINATION --destination=$COMMIT_SHA_DESTINATION"
|
DESTINATIONS="--destination=$COMMIT_REF_SLUG_DESTINATION --destination=$COMMIT_SHA_DESTINATION"
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_SHA" ]; then
|
|
||||||
echo "Checking out \$CI_MERGE_REQUEST_SOURCE_BRANCH_SHA ($CI_MERGE_REQUEST_SOURCE_BRANCH_SHA) instead of \$CI_COMMIT_SHA (merge result commit $CI_COMMIT_SHA) so that code is in sync with gitlab images built upstream."
|
|
||||||
echo "See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#with-pipeline-for-merged-results for more details."
|
|
||||||
git checkout -f ${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}
|
|
||||||
fi
|
|
|
@ -15,7 +15,7 @@ fi
|
||||||
|
|
||||||
variables=$(cat <<YML
|
variables=$(cat <<YML
|
||||||
variables:
|
variables:
|
||||||
RELEASE: "${CI_REGISTRY}/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-$CI_COMMIT_SHA}"
|
RELEASE: "${CI_REGISTRY}/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:${CI_COMMIT_SHA}"
|
||||||
SKIP_REPORT_IN_ISSUES: "${SKIP_REPORT_IN_ISSUES:-true}"
|
SKIP_REPORT_IN_ISSUES: "${SKIP_REPORT_IN_ISSUES:-true}"
|
||||||
OMNIBUS_GITLAB_CACHE_UPDATE: "${OMNIBUS_GITLAB_CACHE_UPDATE:-false}"
|
OMNIBUS_GITLAB_CACHE_UPDATE: "${OMNIBUS_GITLAB_CACHE_UPDATE:-false}"
|
||||||
COLORIZED_LOGS: "true"
|
COLORIZED_LOGS: "true"
|
||||||
|
|
|
@ -144,12 +144,10 @@ module Trigger
|
||||||
end
|
end
|
||||||
|
|
||||||
def base_variables
|
def base_variables
|
||||||
# Use CI_MERGE_REQUEST_SOURCE_BRANCH_SHA for omnibus checkouts due to pipeline for merged results,
|
|
||||||
# and fallback to CI_COMMIT_SHA for the `detached` pipelines.
|
|
||||||
{
|
{
|
||||||
'GITLAB_REF_SLUG' => ENV['CI_COMMIT_TAG'] ? ENV['CI_COMMIT_REF_NAME'] : ENV['CI_COMMIT_REF_SLUG'],
|
'GITLAB_REF_SLUG' => ENV['CI_COMMIT_TAG'] ? ENV['CI_COMMIT_REF_NAME'] : ENV['CI_COMMIT_REF_SLUG'],
|
||||||
'TRIGGERED_USER' => ENV['TRIGGERED_USER'] || ENV['GITLAB_USER_NAME'],
|
'TRIGGERED_USER' => ENV['TRIGGERED_USER'] || ENV['GITLAB_USER_NAME'],
|
||||||
'TOP_UPSTREAM_SOURCE_SHA' => Trigger.non_empty_variable_value('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA') || ENV['CI_COMMIT_SHA']
|
'TOP_UPSTREAM_SOURCE_SHA' => ENV['CI_COMMIT_SHA']
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -186,14 +184,9 @@ module Trigger
|
||||||
end
|
end
|
||||||
|
|
||||||
def extra_variables
|
def extra_variables
|
||||||
# Use CI_MERGE_REQUEST_SOURCE_BRANCH_SHA (MR HEAD commit) so that the image is in sync with the assets and QA images.
|
|
||||||
# See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#with-pipeline-for-merged-results.
|
|
||||||
# We also set IMAGE_TAG so the GitLab Docker image is tagged with that SHA.
|
|
||||||
source_sha = Trigger.non_empty_variable_value('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA') || ENV['CI_COMMIT_SHA']
|
|
||||||
|
|
||||||
{
|
{
|
||||||
'GITLAB_VERSION' => source_sha,
|
'GITLAB_VERSION' => ENV['CI_COMMIT_SHA'],
|
||||||
'IMAGE_TAG' => source_sha,
|
'IMAGE_TAG' => ENV['CI_COMMIT_SHA'],
|
||||||
'SKIP_QA_DOCKER' => 'true',
|
'SKIP_QA_DOCKER' => 'true',
|
||||||
'SKIP_QA_TEST' => 'true',
|
'SKIP_QA_TEST' => 'true',
|
||||||
'ALTERNATIVE_SOURCES' => 'true',
|
'ALTERNATIVE_SOURCES' => 'true',
|
||||||
|
@ -228,14 +221,11 @@ module Trigger
|
||||||
end
|
end
|
||||||
|
|
||||||
def extra_variables
|
def extra_variables
|
||||||
# Use CI_MERGE_REQUEST_SOURCE_BRANCH_SHA (MR HEAD commit) so that the image is in sync with the assets and QA images.
|
|
||||||
source_sha = Trigger.non_empty_variable_value('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA') || ENV['CI_COMMIT_SHA']
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"TRIGGER_BRANCH" => ref,
|
"TRIGGER_BRANCH" => ref,
|
||||||
"GITLAB_VERSION" => source_sha,
|
"GITLAB_VERSION" => ENV['CI_COMMIT_SHA'],
|
||||||
"GITLAB_TAG" => ENV['CI_COMMIT_TAG'], # Always set a value, even an empty string, so that the downstream pipeline can correctly check it.
|
"GITLAB_TAG" => ENV['CI_COMMIT_TAG'], # Always set a value, even an empty string, so that the downstream pipeline can correctly check it.
|
||||||
"GITLAB_ASSETS_TAG" => ENV['CI_COMMIT_TAG'] ? ENV['CI_COMMIT_REF_NAME'] : source_sha,
|
"GITLAB_ASSETS_TAG" => ENV['CI_COMMIT_TAG'] ? ENV['CI_COMMIT_REF_NAME'] : ENV['CI_COMMIT_SHA'],
|
||||||
"FORCE_RAILS_IMAGE_BUILDS" => 'true',
|
"FORCE_RAILS_IMAGE_BUILDS" => 'true',
|
||||||
"CE_PIPELINE" => Trigger.ee? ? nil : "true", # Always set a value, even an empty string, so that the downstream pipeline can correctly check it.
|
"CE_PIPELINE" => Trigger.ee? ? nil : "true", # Always set a value, even an empty string, so that the downstream pipeline can correctly check it.
|
||||||
"EE_PIPELINE" => Trigger.ee? ? "true" : nil # Always set a value, even an empty string, so that the downstream pipeline can correctly check it.
|
"EE_PIPELINE" => Trigger.ee? ? "true" : nil # Always set a value, even an empty string, so that the downstream pipeline can correctly check it.
|
||||||
|
@ -399,9 +389,7 @@ module Trigger
|
||||||
|
|
||||||
def extra_variables
|
def extra_variables
|
||||||
{
|
{
|
||||||
# Use CI_MERGE_REQUEST_SOURCE_BRANCH_SHA for omnibus checkouts due to pipeline for merged results
|
'GITLAB_COMMIT_SHA' => ENV['CI_COMMIT_SHA'],
|
||||||
# and fallback to CI_COMMIT_SHA for the `detached` pipelines.
|
|
||||||
'GITLAB_COMMIT_SHA' => Trigger.non_empty_variable_value('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA') || ENV['CI_COMMIT_SHA'],
|
|
||||||
'TRIGGERED_USER_LOGIN' => ENV['GITLAB_USER_LOGIN']
|
'TRIGGERED_USER_LOGIN' => ENV['GITLAB_USER_LOGIN']
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
import { GlLink, GlForm } from '@gitlab/ui';
|
import { GlLink, GlForm } from '@gitlab/ui';
|
||||||
|
import { nextTick } from 'vue';
|
||||||
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
||||||
import LinkBubbleMenu from '~/content_editor/components/bubble_menus/link_bubble_menu.vue';
|
import LinkBubbleMenu from '~/content_editor/components/bubble_menus/link_bubble_menu.vue';
|
||||||
|
import EditorStateObserver from '~/content_editor/components/editor_state_observer.vue';
|
||||||
import eventHubFactory from '~/helpers/event_hub_factory';
|
import eventHubFactory from '~/helpers/event_hub_factory';
|
||||||
import BubbleMenu from '~/content_editor/components/bubble_menus/bubble_menu.vue';
|
import BubbleMenu from '~/content_editor/components/bubble_menus/bubble_menu.vue';
|
||||||
import { stubComponent } from 'helpers/stub_component';
|
import { stubComponent } from 'helpers/stub_component';
|
||||||
import Link from '~/content_editor/extensions/link';
|
import Link from '~/content_editor/extensions/link';
|
||||||
import { createTestEditor, emitEditorEvent } from '../../test_utils';
|
import { createTestEditor } from '../../test_utils';
|
||||||
|
|
||||||
const createFakeEvent = () => ({ preventDefault: jest.fn(), stopPropagation: jest.fn() });
|
const createFakeEvent = () => ({ preventDefault: jest.fn(), stopPropagation: jest.fn() });
|
||||||
|
|
||||||
|
@ -13,7 +15,6 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
let wrapper;
|
let wrapper;
|
||||||
let tiptapEditor;
|
let tiptapEditor;
|
||||||
let contentEditor;
|
let contentEditor;
|
||||||
let bubbleMenu;
|
|
||||||
let eventHub;
|
let eventHub;
|
||||||
|
|
||||||
const buildEditor = () => {
|
const buildEditor = () => {
|
||||||
|
@ -35,6 +36,22 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const showMenu = () => {
|
||||||
|
wrapper.findComponent(BubbleMenu).vm.$emit('show');
|
||||||
|
return nextTick();
|
||||||
|
};
|
||||||
|
|
||||||
|
const buildWrapperAndDisplayMenu = () => {
|
||||||
|
buildWrapper();
|
||||||
|
|
||||||
|
return showMenu();
|
||||||
|
};
|
||||||
|
|
||||||
|
const findBubbleMenu = () => wrapper.findComponent(BubbleMenu);
|
||||||
|
const findLink = () => wrapper.findComponent(GlLink);
|
||||||
|
const findEditorStateObserver = () => wrapper.findComponent(EditorStateObserver);
|
||||||
|
const findEditLinkButton = () => wrapper.findByTestId('edit-link');
|
||||||
|
|
||||||
const expectLinkButtonsToExist = (exist = true) => {
|
const expectLinkButtonsToExist = (exist = true) => {
|
||||||
expect(wrapper.findComponent(GlLink).exists()).toBe(exist);
|
expect(wrapper.findComponent(GlLink).exists()).toBe(exist);
|
||||||
expect(wrapper.findByTestId('copy-link-url').exists()).toBe(exist);
|
expect(wrapper.findByTestId('copy-link-url').exists()).toBe(exist);
|
||||||
|
@ -44,7 +61,6 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
buildEditor();
|
buildEditor();
|
||||||
buildWrapper();
|
|
||||||
|
|
||||||
tiptapEditor
|
tiptapEditor
|
||||||
.chain()
|
.chain()
|
||||||
|
@ -53,10 +69,6 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
)
|
)
|
||||||
.setTextSelection(14) // put cursor in the middle of the link
|
.setTextSelection(14) // put cursor in the middle of the link
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
await emitEditorEvent({ event: 'transaction', tiptapEditor });
|
|
||||||
|
|
||||||
bubbleMenu = wrapper.findComponent(BubbleMenu);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
@ -64,12 +76,15 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('renders bubble menu component', async () => {
|
it('renders bubble menu component', async () => {
|
||||||
expect(bubbleMenu.classes()).toEqual(['gl-shadow', 'gl-rounded-base', 'gl-bg-white']);
|
await buildWrapperAndDisplayMenu();
|
||||||
|
|
||||||
|
expect(findBubbleMenu().classes()).toEqual(['gl-shadow', 'gl-rounded-base', 'gl-bg-white']);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows a clickable link to the URL in the link node', async () => {
|
it('shows a clickable link to the URL in the link node', async () => {
|
||||||
const link = wrapper.findComponent(GlLink);
|
await buildWrapperAndDisplayMenu();
|
||||||
expect(link.attributes()).toEqual(
|
|
||||||
|
expect(findLink().attributes()).toEqual(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
href: '/path/to/project/-/wikis/uploads/my_file.pdf',
|
href: '/path/to/project/-/wikis/uploads/my_file.pdf',
|
||||||
'aria-label': 'uploads/my_file.pdf',
|
'aria-label': 'uploads/my_file.pdf',
|
||||||
|
@ -77,11 +92,82 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
target: '_blank',
|
target: '_blank',
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
expect(link.text()).toBe('uploads/my_file.pdf');
|
expect(findLink().text()).toBe('uploads/my_file.pdf');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('updates the bubble menu state when @selectionUpdate event is triggered', async () => {
|
||||||
|
const linkUrl = 'https://gitlab.com';
|
||||||
|
|
||||||
|
await buildWrapperAndDisplayMenu();
|
||||||
|
|
||||||
|
expect(findLink().attributes()).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
href: '/path/to/project/-/wikis/uploads/my_file.pdf',
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
tiptapEditor
|
||||||
|
.chain()
|
||||||
|
.setContent(
|
||||||
|
`Link to <a href="${linkUrl}" data-canonical-src="${linkUrl}" title="Click here to download">GitLab</a>`,
|
||||||
|
)
|
||||||
|
.setTextSelection(11)
|
||||||
|
.run();
|
||||||
|
|
||||||
|
findEditorStateObserver().vm.$emit('selectionUpdate');
|
||||||
|
|
||||||
|
await nextTick();
|
||||||
|
|
||||||
|
expect(findLink().attributes()).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
href: linkUrl,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the selection changes within the same link', () => {
|
||||||
|
it('does not update the bubble menu state', async () => {
|
||||||
|
await buildWrapperAndDisplayMenu();
|
||||||
|
|
||||||
|
await findEditLinkButton().trigger('click');
|
||||||
|
|
||||||
|
expect(wrapper.findComponent(GlForm).exists()).toBe(true);
|
||||||
|
|
||||||
|
tiptapEditor.commands.setTextSelection(13);
|
||||||
|
|
||||||
|
findEditorStateObserver().vm.$emit('selectionUpdate');
|
||||||
|
|
||||||
|
await nextTick();
|
||||||
|
|
||||||
|
expect(wrapper.findComponent(GlForm).exists()).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('cleans bubble menu state when hidden event is triggered', async () => {
|
||||||
|
await buildWrapperAndDisplayMenu();
|
||||||
|
|
||||||
|
expect(findLink().attributes()).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
href: '/path/to/project/-/wikis/uploads/my_file.pdf',
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
findBubbleMenu().vm.$emit('hidden');
|
||||||
|
|
||||||
|
await nextTick();
|
||||||
|
|
||||||
|
expect(findLink().attributes()).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
href: '#',
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
expect(findLink().text()).toEqual('');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('copy button', () => {
|
describe('copy button', () => {
|
||||||
it('copies the canonical link to clipboard', async () => {
|
it('copies the canonical link to clipboard', async () => {
|
||||||
|
await buildWrapperAndDisplayMenu();
|
||||||
|
|
||||||
jest.spyOn(navigator.clipboard, 'writeText');
|
jest.spyOn(navigator.clipboard, 'writeText');
|
||||||
|
|
||||||
await wrapper.findByTestId('copy-link-url').vm.$emit('click');
|
await wrapper.findByTestId('copy-link-url').vm.$emit('click');
|
||||||
|
@ -92,6 +178,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
|
|
||||||
describe('remove link button', () => {
|
describe('remove link button', () => {
|
||||||
it('removes the link', async () => {
|
it('removes the link', async () => {
|
||||||
|
await buildWrapperAndDisplayMenu();
|
||||||
await wrapper.findByTestId('remove-link').vm.$emit('click');
|
await wrapper.findByTestId('remove-link').vm.$emit('click');
|
||||||
|
|
||||||
expect(tiptapEditor.getHTML()).toBe('<p>Download PDF File</p>');
|
expect(tiptapEditor.getHTML()).toBe('<p>Download PDF File</p>');
|
||||||
|
@ -109,7 +196,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
.setTextSelection(4)
|
.setTextSelection(4)
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
await emitEditorEvent({ event: 'transaction', tiptapEditor });
|
await buildWrapperAndDisplayMenu();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('directly opens the edit form for a placeholder link', async () => {
|
it('directly opens the edit form for a placeholder link', async () => {
|
||||||
|
@ -136,6 +223,7 @@ describe('content_editor/components/bubble_menus/link_bubble_menu', () => {
|
||||||
let linkTitleInput;
|
let linkTitleInput;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
|
await buildWrapperAndDisplayMenu();
|
||||||
await wrapper.findByTestId('edit-link').vm.$emit('click');
|
await wrapper.findByTestId('edit-link').vm.$emit('click');
|
||||||
|
|
||||||
linkHrefInput = wrapper.findByTestId('link-href');
|
linkHrefInput = wrapper.findByTestId('link-href');
|
||||||
|
|
|
@ -101,10 +101,11 @@ describe('~/environments/components/deployment.vue', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows the short SHA for the commit of the deployment', () => {
|
it('shows the short SHA for the commit of the deployment', () => {
|
||||||
const sha = wrapper.findByTitle(__('Commit SHA'));
|
const sha = wrapper.findByRole('link', { name: __('Commit SHA') });
|
||||||
|
|
||||||
expect(sha.exists()).toBe(true);
|
expect(sha.exists()).toBe(true);
|
||||||
expect(sha.text()).toBe(deployment.commit.shortId);
|
expect(sha.text()).toBe(deployment.commit.shortId);
|
||||||
|
expect(sha.attributes('href')).toBe(deployment.commit.commitPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows the commit icon', () => {
|
it('shows the commit icon', () => {
|
||||||
|
|
|
@ -195,33 +195,13 @@ RSpec.describe Trigger do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set' do
|
context 'when CI_COMMIT_SHA is set' do
|
||||||
before do
|
before do
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', 'ci_merge_request_source_branch_sha')
|
stub_env('CI_COMMIT_SHA', 'ci_commit_sha')
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets TOP_UPSTREAM_SOURCE_SHA to ci_merge_request_source_branch_sha' do
|
|
||||||
expect(subject.variables['TOP_UPSTREAM_SOURCE_SHA']).to eq('ci_merge_request_source_branch_sha')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set as empty' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', '')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets TOP_UPSTREAM_SOURCE_SHA to CI_COMMIT_SHA' do
|
it 'sets TOP_UPSTREAM_SOURCE_SHA to CI_COMMIT_SHA' do
|
||||||
expect(subject.variables['TOP_UPSTREAM_SOURCE_SHA']).to eq(env['CI_COMMIT_SHA'])
|
expect(subject.variables['TOP_UPSTREAM_SOURCE_SHA']).to eq('ci_commit_sha')
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is not set' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets TOP_UPSTREAM_SOURCE_SHA to CI_COMMIT_SHA' do
|
|
||||||
expect(subject.variables['TOP_UPSTREAM_SOURCE_SHA']).to eq(env['CI_COMMIT_SHA'])
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -275,41 +255,15 @@ RSpec.describe Trigger do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set' do
|
context 'when CI_COMMIT_SHA is set' do
|
||||||
before do
|
before do
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', 'ci_merge_request_source_branch_sha')
|
stub_env('CI_COMMIT_SHA', 'ci_commit_sha')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets GITLAB_VERSION & IMAGE_TAG to ci_merge_request_source_branch_sha' do
|
it 'sets GITLAB_VERSION & IMAGE_TAG to ci_commit_sha' do
|
||||||
expect(subject.variables).to include(
|
expect(subject.variables).to include(
|
||||||
'GITLAB_VERSION' => 'ci_merge_request_source_branch_sha',
|
'GITLAB_VERSION' => 'ci_commit_sha',
|
||||||
'IMAGE_TAG' => 'ci_merge_request_source_branch_sha'
|
'IMAGE_TAG' => 'ci_commit_sha'
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set as empty' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', '')
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets GITLAB_VERSION & IMAGE_TAG to CI_COMMIT_SHA' do
|
|
||||||
expect(subject.variables).to include(
|
|
||||||
'GITLAB_VERSION' => env['CI_COMMIT_SHA'],
|
|
||||||
'IMAGE_TAG' => env['CI_COMMIT_SHA']
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is not set' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets GITLAB_VERSION & IMAGE_TAG to CI_COMMIT_SHA' do
|
|
||||||
expect(subject.variables).to include(
|
|
||||||
'GITLAB_VERSION' => env['CI_COMMIT_SHA'],
|
|
||||||
'IMAGE_TAG' => env['CI_COMMIT_SHA']
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -483,33 +437,13 @@ RSpec.describe Trigger do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GITLAB_VERSION" do
|
describe "GITLAB_VERSION" do
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set' do
|
context 'when CI_COMMIT_SHA is set' do
|
||||||
before do
|
before do
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', 'ci_merge_request_source_branch_sha')
|
stub_env('CI_COMMIT_SHA', 'ci_commit_sha')
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets GITLAB_VERSION to CI_MERGE_REQUEST_SOURCE_BRANCH_SHA' do
|
|
||||||
expect(subject.variables['GITLAB_VERSION']).to eq('ci_merge_request_source_branch_sha')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set as empty' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', '')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets GITLAB_VERSION to CI_COMMIT_SHA' do
|
it 'sets GITLAB_VERSION to CI_COMMIT_SHA' do
|
||||||
expect(subject.variables['GITLAB_VERSION']).to eq(env['CI_COMMIT_SHA'])
|
expect(subject.variables['GITLAB_VERSION']).to eq('ci_commit_sha')
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is not set' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets GITLAB_VERSION to CI_COMMIT_SHA' do
|
|
||||||
expect(subject.variables['GITLAB_VERSION']).to eq(env['CI_COMMIT_SHA'])
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -547,10 +481,9 @@ RSpec.describe Trigger do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when CI_COMMIT_TAG and CI_MERGE_REQUEST_SOURCE_BRANCH_SHA are nil' do
|
context 'when CI_COMMIT_TAG is nil' do
|
||||||
before do
|
before do
|
||||||
stub_env('CI_COMMIT_TAG', nil)
|
stub_env('CI_COMMIT_TAG', nil)
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', nil)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets GITLAB_ASSETS_TAG to CI_COMMIT_SHA' do
|
it 'sets GITLAB_ASSETS_TAG to CI_COMMIT_SHA' do
|
||||||
|
@ -829,33 +762,13 @@ RSpec.describe Trigger do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GITLAB_COMMIT_SHA" do
|
describe "GITLAB_COMMIT_SHA" do
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set' do
|
context 'when CI_COMMIT_SHA is set' do
|
||||||
before do
|
before do
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', 'ci_merge_request_source_branch_sha')
|
stub_env('CI_COMMIT_SHA', 'ci_commit_sha')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets GITLAB_COMMIT_SHA to ci_merge_request_source_branch_sha' do
|
it 'sets GITLAB_COMMIT_SHA to ci_commit_sha' do
|
||||||
expect(subject.variables['GITLAB_COMMIT_SHA']).to eq('ci_merge_request_source_branch_sha')
|
expect(subject.variables['GITLAB_COMMIT_SHA']).to eq('ci_commit_sha')
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is set as empty' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', '')
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets GITLAB_COMMIT_SHA to CI_COMMIT_SHA' do
|
|
||||||
expect(subject.variables['GITLAB_COMMIT_SHA']).to eq(env['CI_COMMIT_SHA'])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when CI_MERGE_REQUEST_SOURCE_BRANCH_SHA is not set' do
|
|
||||||
before do
|
|
||||||
stub_env('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets GITLAB_COMMIT_SHA to CI_COMMIT_SHA' do
|
|
||||||
expect(subject.variables['GITLAB_COMMIT_SHA']).to eq(env['CI_COMMIT_SHA'])
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -35,7 +35,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const scratchDir = "testdata/scratch"
|
const scratchDir = "testdata/scratch"
|
||||||
const testRepoRoot = "testdata/data"
|
const testRepoRoot = "testdata/repo"
|
||||||
const testDocumentRoot = "testdata/public"
|
const testDocumentRoot = "testdata/public"
|
||||||
const testAltDocumentRoot = "testdata/alt-public"
|
const testAltDocumentRoot = "testdata/alt-public"
|
||||||
|
|
||||||
|
|
1
workhorse/testdata/repo/group/test.git
vendored
Symbolic link
1
workhorse/testdata/repo/group/test.git
vendored
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../../spec/support/gitlab-git-test.git
|
Loading…
Reference in a new issue