Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
b45b4fa37b
commit
f7f930eadb
|
@ -14,7 +14,7 @@
|
||||||
- [Documentation guidelines](https://docs.gitlab.com/ee/development/documentation/).
|
- [Documentation guidelines](https://docs.gitlab.com/ee/development/documentation/).
|
||||||
- [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide/).
|
- [Style Guide](https://docs.gitlab.com/ee/development/documentation/styleguide/).
|
||||||
- [ ] If you're adding or changing the main heading of the page (H1), ensure that the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges) is added.
|
- [ ] If you're adding or changing the main heading of the page (H1), ensure that the [product tier badge](https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#product-tier-badges) is added.
|
||||||
- [ ] If you are a GitLab team member, [request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-attention-request-feature) based on:
|
- [ ] If you are a GitLab team member, [request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-reviewers-feature) based on:
|
||||||
- The documentation page's [metadata](https://docs.gitlab.com/ee/development/documentation/#metadata).
|
- The documentation page's [metadata](https://docs.gitlab.com/ee/development/documentation/#metadata).
|
||||||
- The [associated Technical Writer](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments).
|
- The [associated Technical Writer](https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments).
|
||||||
|
|
||||||
|
|
|
@ -858,46 +858,10 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"when": {
|
"when": {
|
||||||
"markdownDescription": "Describes the conditions for when to run the job. Defaults to 'on_success'.",
|
"markdownDescription": "Describes the conditions for when to run the job. Defaults to 'on_success'. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#when).",
|
||||||
"default": "on_success",
|
"default": "on_success",
|
||||||
"oneOf": [
|
"type": "string",
|
||||||
{
|
"enum": ["on_success", "on_failure", "always", "never", "manual", "delayed"]
|
||||||
"enum": [
|
|
||||||
"on_success"
|
|
||||||
],
|
|
||||||
"description": "Execute job only when all jobs from prior stages succeed."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"on_failure"
|
|
||||||
],
|
|
||||||
"description": "Execute job when at least one job from prior stages fails."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"always"
|
|
||||||
],
|
|
||||||
"description": "Execute job regardless of the status from prior stages."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"manual"
|
|
||||||
],
|
|
||||||
"markdownDescription": "Execute the job manually from Gitlab UI or API. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#when)."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"delayed"
|
|
||||||
],
|
|
||||||
"markdownDescription": "Execute a job after the time limit in 'start_in' expires. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#when)."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"never"
|
|
||||||
],
|
|
||||||
"description": "Never execute the job."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"cache": {
|
"cache": {
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -59,6 +59,40 @@ you may run in the console. To turn off logging again, run:
|
||||||
ActiveRecord::Base.logger = nil
|
ActiveRecord::Base.logger = nil
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Attributes
|
||||||
|
|
||||||
|
View available attributes, formatted using pretty print (`pp`).
|
||||||
|
|
||||||
|
For example, determine what attributes contain users' names and email addresses:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
u = User.find_by_username('someuser')
|
||||||
|
pp u.attributes
|
||||||
|
```
|
||||||
|
|
||||||
|
Partial output:
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
{"id"=>1234,
|
||||||
|
"email"=>"someuser@example.com",
|
||||||
|
"sign_in_count"=>99,
|
||||||
|
"name"=>"S User",
|
||||||
|
"username"=>"someuser",
|
||||||
|
"first_name"=>nil,
|
||||||
|
"last_name"=>nil,
|
||||||
|
"bot_type"=>nil}
|
||||||
|
```
|
||||||
|
|
||||||
|
Then make use of the attributes, [testing SMTP, for example](https://docs.gitlab.com/omnibus/settings/smtp.html#testing-the-smtp-configuration):
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
e = u.email
|
||||||
|
n = u.name
|
||||||
|
Notify.test_email(e, "Test email for #{n}", 'Test email').deliver_now
|
||||||
|
#
|
||||||
|
Notify.test_email(u.email, "Test email for #{u.name}", 'Test email').deliver_now
|
||||||
|
```
|
||||||
|
|
||||||
## Disable database statement timeout
|
## Disable database statement timeout
|
||||||
|
|
||||||
You can disable the PostgreSQL statement timeout for the current Rails console
|
You can disable the PostgreSQL statement timeout for the current Rails console
|
||||||
|
|
|
@ -29,6 +29,7 @@ The following lists the currently supported OSs and their possible EOL dates.
|
||||||
| Scientific Linux | GitLab CE / GitLab EE 8.14.0 | x86_64 | [Use CentOS Install Documentation](https://about.gitlab.com/install/#centos-7) | June 2024 | <https://scientificlinux.org/downloads/sl-versions/sl7/> |
|
| Scientific Linux | GitLab CE / GitLab EE 8.14.0 | x86_64 | [Use CentOS Install Documentation](https://about.gitlab.com/install/#centos-7) | June 2024 | <https://scientificlinux.org/downloads/sl-versions/sl7/> |
|
||||||
| Ubuntu 18.04 | GitLab CE / GitLab EE 10.7.0 | amd64 | [Ubuntu Install Documentation](https://about.gitlab.com/install/#ubuntu) | April 2023 | <https://wiki.ubuntu.com/Releases> |
|
| Ubuntu 18.04 | GitLab CE / GitLab EE 10.7.0 | amd64 | [Ubuntu Install Documentation](https://about.gitlab.com/install/#ubuntu) | April 2023 | <https://wiki.ubuntu.com/Releases> |
|
||||||
| Ubuntu 20.04 | GitLab CE / GitLab EE 13.2.0 | amd64, arm64 | [Ubuntu Install Documentation](https://about.gitlab.com/install/#ubuntu) | April 2025 | <https://wiki.ubuntu.com/Releases> |
|
| Ubuntu 20.04 | GitLab CE / GitLab EE 13.2.0 | amd64, arm64 | [Ubuntu Install Documentation](https://about.gitlab.com/install/#ubuntu) | April 2025 | <https://wiki.ubuntu.com/Releases> |
|
||||||
|
| Ubuntu 22.04 | GitLab CE / GitLab EE 15.5.0 | amd64, arm64 | [Ubuntu Install Documentation](https://about.gitlab.com/install/#ubuntu) | April 2027 | <https://wiki.ubuntu.com/Releases> |
|
||||||
| Amazon Linux 2 | GitLab CE / GitLab EE 14.9.0 | amd64, arm64 | [Amazon Linux 2 Install Documentation](https://about.gitlab.com/install/#amazonlinux-2) | June 2023 | <https://aws.amazon.com/amazon-linux-2/faqs/> |
|
| Amazon Linux 2 | GitLab CE / GitLab EE 14.9.0 | amd64, arm64 | [Amazon Linux 2 Install Documentation](https://about.gitlab.com/install/#amazonlinux-2) | June 2023 | <https://aws.amazon.com/amazon-linux-2/faqs/> |
|
||||||
| Raspberry Pi OS (Buster) (formerly known as Raspbian Buster) | GitLab CE 12.2.0 | armhf | [Raspberry Pi Install Documentation](https://about.gitlab.com/install/#raspberry-pi-os) | 2024 | [Raspberry Pi Details](https://www.raspberrypi.com/news/new-old-functionality-with-raspberry-pi-os-legacy/) |
|
| Raspberry Pi OS (Buster) (formerly known as Raspbian Buster) | GitLab CE 12.2.0 | armhf | [Raspberry Pi Install Documentation](https://about.gitlab.com/install/#raspberry-pi-os) | 2024 | [Raspberry Pi Details](https://www.raspberrypi.com/news/new-old-functionality-with-raspberry-pi-os-legacy/) |
|
||||||
| Raspberry Pi OS (Bullseye) | GitLab CE 15.5.0 | armhf | [Raspberry Pi Install Documentation](https://about.gitlab.com/install/#raspberry-pi-os) | 2026 | [Raspberry Pi Details](https://www.raspberrypi.com/news/raspberry-pi-os-debian-bullseye/) |
|
| Raspberry Pi OS (Bullseye) | GitLab CE 15.5.0 | armhf | [Raspberry Pi Install Documentation](https://about.gitlab.com/install/#raspberry-pi-os) | 2026 | [Raspberry Pi Details](https://www.raspberrypi.com/news/raspberry-pi-os-debian-bullseye/) |
|
||||||
|
|
|
@ -28,40 +28,6 @@ mentioned above, we recommend running these scripts under the supervision of a
|
||||||
Support Engineer, who can also verify that they continue to work as they
|
Support Engineer, who can also verify that they continue to work as they
|
||||||
should and, if needed, update the script for the latest version of GitLab.
|
should and, if needed, update the script for the latest version of GitLab.
|
||||||
|
|
||||||
## Attributes
|
|
||||||
|
|
||||||
View available attributes, formatted using pretty print (`pp`).
|
|
||||||
|
|
||||||
For example, determine what attributes contain users' names and email addresses:
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
u = User.find_by_username('someuser')
|
|
||||||
pp u.attributes
|
|
||||||
```
|
|
||||||
|
|
||||||
Partial output:
|
|
||||||
|
|
||||||
```plaintext
|
|
||||||
{"id"=>1234,
|
|
||||||
"email"=>"someuser@example.com",
|
|
||||||
"sign_in_count"=>99,
|
|
||||||
"name"=>"S User",
|
|
||||||
"username"=>"someuser",
|
|
||||||
"first_name"=>nil,
|
|
||||||
"last_name"=>nil,
|
|
||||||
"bot_type"=>nil}
|
|
||||||
```
|
|
||||||
|
|
||||||
Then make use of the attributes, [testing SMTP, for example](https://docs.gitlab.com/omnibus/settings/smtp.html#testing-the-smtp-configuration):
|
|
||||||
|
|
||||||
```ruby
|
|
||||||
e = u.email
|
|
||||||
n = u.name
|
|
||||||
Notify.test_email(e, "Test email for #{n}", 'Test email').deliver_now
|
|
||||||
#
|
|
||||||
Notify.test_email(u.email, "Test email for #{u.name}", 'Test email').deliver_now
|
|
||||||
```
|
|
||||||
|
|
||||||
## Imports and exports
|
## Imports and exports
|
||||||
|
|
||||||
### Import a project
|
### Import a project
|
||||||
|
|
|
@ -97,7 +97,7 @@ PUT projects/:id/packages/nuget
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl --request PUT \
|
curl --request PUT \
|
||||||
--upload-file path/to/mynugetpkg.1.3.0.17.nupkg \
|
--form 'package=@path/to/mynugetpkg.1.3.0.17.nupkg' \
|
||||||
--user <username>:<personal_access_token> \
|
--user <username>:<personal_access_token> \
|
||||||
"https://gitlab.example.com/api/v4/projects/1/packages/nuget"
|
"https://gitlab.example.com/api/v4/projects/1/packages/nuget"
|
||||||
```
|
```
|
||||||
|
@ -121,7 +121,7 @@ PUT projects/:id/packages/nuget/symbolpackage
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl --request PUT \
|
curl --request PUT \
|
||||||
--upload-file path/to/mynugetpkg.1.3.0.17.snupkg \
|
--form 'package=@path/to/mynugetpkg.1.3.0.17.snupkg' \
|
||||||
--user <username>:<personal_access_token> \
|
--user <username>:<personal_access_token> \
|
||||||
"https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolpackage"
|
"https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolpackage"
|
||||||
```
|
```
|
||||||
|
|
|
@ -56,8 +56,8 @@ We make the following assumption with regards to automatically being considered
|
||||||
- Team members working in a specific stage/group (for example, create: source code) are considered domain experts for that area of the app they work on.
|
- Team members working in a specific stage/group (for example, create: source code) are considered domain experts for that area of the app they work on.
|
||||||
- Team members working on a specific feature (for example, search) are considered domain experts for that feature.
|
- Team members working on a specific feature (for example, search) are considered domain experts for that feature.
|
||||||
|
|
||||||
We default to assigning reviews to team members with domain expertise.
|
We default to assigning reviews to team members with domain expertise for code reviews. For UX reviews we default to the recommended designer from the Reviewer roulette.
|
||||||
When a suitable [domain expert](#domain-experts) isn't available, you can choose any team member to review the MR, or follow the [Reviewer roulette](#reviewer-roulette) recommendation.
|
When a suitable [domain expert](#domain-experts) isn't available, you can choose any team member to review the MR, or follow the [Reviewer roulette](#reviewer-roulette) recommendation (see above for UX reviews).
|
||||||
|
|
||||||
To find a domain expert:
|
To find a domain expert:
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,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 `Troubleshooting <feature>`
|
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 `Troubleshooting` only.
|
||||||
|
|
||||||
Troubleshooting can be one of three types.
|
Troubleshooting can be one of three types.
|
||||||
|
|
||||||
|
|
|
@ -102,9 +102,9 @@ or manually with Google Cloud Shell:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create ns gitlab-managed-apps
|
kubectl create ns gitlab-managed-apps
|
||||||
helm repo add stable https://charts.helm.sh/stable
|
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
|
||||||
helm repo update
|
helm repo update
|
||||||
helm install ingress stable/nginx-ingress -n gitlab-managed-apps
|
helm install ingress ngress-nginx/ingress-nginx -n gitlab-managed-apps
|
||||||
|
|
||||||
# Check that the ingress controller is installed successfully
|
# Check that the ingress controller is installed successfully
|
||||||
kubectl get service ingress-nginx-ingress-controller -n gitlab-managed-apps
|
kubectl get service ingress-nginx-ingress-controller -n gitlab-managed-apps
|
||||||
|
|
|
@ -22,5 +22,5 @@ of your cluster.
|
||||||
You can customize the installation of Ingress by updating the
|
You can customize the installation of Ingress by updating the
|
||||||
`applications/ingress/values.yaml` file in your cluster
|
`applications/ingress/values.yaml` file in your cluster
|
||||||
management project. Refer to the
|
management project. Refer to the
|
||||||
[chart](https://github.com/helm/charts/tree/master/stable/nginx-ingress)
|
[chart](https://github.com/kubernetes/ingress-nginx/tree/master/charts/ingress-nginx)
|
||||||
for the available configuration options.
|
for the available configuration options.
|
||||||
|
|
|
@ -134,6 +134,8 @@ for any related errors. If you see `Validation failed: Version is invalid`, it m
|
||||||
version in your `Chart.yaml` file does not follow [Helm Chart versioning specifications](https://helm.sh/docs/topics/charts/#charts-and-versioning).
|
version in your `Chart.yaml` file does not follow [Helm Chart versioning specifications](https://helm.sh/docs/topics/charts/#charts-and-versioning).
|
||||||
To fix the error, use the correct version syntax and upload the chart again.
|
To fix the error, use the correct version syntax and upload the chart again.
|
||||||
|
|
||||||
|
Support for providing better error messages for package processing errors in the UI is proposed in issue [330515](https://gitlab.com/gitlab-org/gitlab/-/issues/330515).
|
||||||
|
|
||||||
### `helm push` results in an error
|
### `helm push` results in an error
|
||||||
|
|
||||||
Helm 3.7 introduced a breaking change for the `helm-push` plugin. You can update the
|
Helm 3.7 introduced a breaking change for the `helm-push` plugin. You can update the
|
||||||
|
|
|
@ -38,7 +38,7 @@ Next, the Ingress needs to be annotated for Prometheus monitoring. Two new annot
|
||||||
- `prometheus.io/scrape: "true"`
|
- `prometheus.io/scrape: "true"`
|
||||||
- `prometheus.io/port: "10254"`
|
- `prometheus.io/port: "10254"`
|
||||||
|
|
||||||
Managing these settings depends on how NGINX Ingress has been deployed. If you have deployed via the [official Helm chart](https://github.com/helm/charts/tree/master/stable/nginx-ingress), metrics can be enabled with `controller.stats.enabled` along with the required annotations. Alternatively it is possible to edit the NGINX Ingress YAML directly in the [Kubernetes dashboard](https://github.com/kubernetes/dashboard).
|
Managing these settings depends on how NGINX Ingress has been deployed. If you have deployed via the [official Helm chart](https://github.com/kubernetes/ingress-nginx/tree/master/charts/ingress-nginx), metrics can be enabled with `controller.stats.enabled` along with the required annotations. Alternatively it is possible to edit the NGINX Ingress YAML directly in the [Kubernetes dashboard](https://github.com/kubernetes/dashboard).
|
||||||
|
|
||||||
## Specifying the Environment label
|
## Specifying the Environment label
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ Next, the Ingress needs to be annotated for Prometheus monitoring. Two new annot
|
||||||
- `prometheus.io/scrape: "true"`
|
- `prometheus.io/scrape: "true"`
|
||||||
- `prometheus.io/port: "10254"`
|
- `prometheus.io/port: "10254"`
|
||||||
|
|
||||||
Managing these settings depends on how NGINX Ingress has been deployed. If you have deployed via the [official Helm chart](https://github.com/helm/charts/tree/master/stable/nginx-ingress), metrics can be enabled with `controller.stats.enabled` along with the required annotations. Alternatively it is possible edit the NGINX Ingress YAML directly in the [Kubernetes dashboard](https://github.com/kubernetes/dashboard).
|
Managing these settings depends on how NGINX Ingress has been deployed. If you have deployed via the [official Helm chart](https://github.com/kubernetes/ingress-nginx/tree/master/charts/ingress-nginx), metrics can be enabled with `controller.stats.enabled` along with the required annotations. Alternatively it is possible edit the NGINX Ingress YAML directly in the [Kubernetes dashboard](https://github.com/kubernetes/dashboard).
|
||||||
|
|
||||||
## Specifying the Environment label
|
## Specifying the Environment label
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ module Gitlab
|
||||||
validates :config, allowed_keys: ALLOWED_KEYS + PROCESSABLE_ALLOWED_KEYS
|
validates :config, allowed_keys: ALLOWED_KEYS + PROCESSABLE_ALLOWED_KEYS
|
||||||
|
|
||||||
with_options allow_nil: true do
|
with_options allow_nil: true do
|
||||||
validates :when, inclusion: {
|
validates :when, type: String, inclusion: {
|
||||||
in: ALLOWED_WHEN,
|
in: ALLOWED_WHEN,
|
||||||
message: "should be one of: #{ALLOWED_WHEN.join(', ')}"
|
message: "should be one of: #{ALLOWED_WHEN.join(', ')}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ module Gitlab
|
||||||
validates :script, presence: true
|
validates :script, presence: true
|
||||||
|
|
||||||
with_options allow_nil: true do
|
with_options allow_nil: true do
|
||||||
validates :when, inclusion: {
|
validates :when, type: String, inclusion: {
|
||||||
in: ALLOWED_WHEN,
|
in: ALLOWED_WHEN,
|
||||||
message: "should be one of: #{ALLOWED_WHEN.join(', ')}"
|
message: "should be one of: #{ALLOWED_WHEN.join(', ')}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ module QA
|
||||||
end
|
end
|
||||||
|
|
||||||
def repository_location
|
def repository_location
|
||||||
Git::Location.new(find_element(:clone_url_content).text)
|
Git::Location.new(find_element(:clone_url_content).value)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -31,6 +31,7 @@ import IncludeYaml from './yaml_tests/positive_tests/include.yml';
|
||||||
import RulesYaml from './yaml_tests/positive_tests/rules.yml';
|
import RulesYaml from './yaml_tests/positive_tests/rules.yml';
|
||||||
import ProjectPathYaml from './yaml_tests/positive_tests/project_path.yml';
|
import ProjectPathYaml from './yaml_tests/positive_tests/project_path.yml';
|
||||||
import VariablesYaml from './yaml_tests/positive_tests/variables.yml';
|
import VariablesYaml from './yaml_tests/positive_tests/variables.yml';
|
||||||
|
import JobWhenYaml from './yaml_tests/positive_tests/job_when.yml';
|
||||||
|
|
||||||
// YAML NEGATIVE TEST
|
// YAML NEGATIVE TEST
|
||||||
import ArtifactsNegativeYaml from './yaml_tests/negative_tests/artifacts.yml';
|
import ArtifactsNegativeYaml from './yaml_tests/negative_tests/artifacts.yml';
|
||||||
|
@ -38,6 +39,7 @@ import CacheNegativeYaml from './yaml_tests/negative_tests/cache.yml';
|
||||||
import IncludeNegativeYaml from './yaml_tests/negative_tests/include.yml';
|
import IncludeNegativeYaml from './yaml_tests/negative_tests/include.yml';
|
||||||
import RulesNegativeYaml from './yaml_tests/negative_tests/rules.yml';
|
import RulesNegativeYaml from './yaml_tests/negative_tests/rules.yml';
|
||||||
import VariablesNegativeYaml from './yaml_tests/negative_tests/variables.yml';
|
import VariablesNegativeYaml from './yaml_tests/negative_tests/variables.yml';
|
||||||
|
import JobWhenNegativeYaml from './yaml_tests/negative_tests/job_when.yml';
|
||||||
|
|
||||||
import ProjectPathIncludeEmptyYaml from './yaml_tests/negative_tests/project_path/include/empty.yml';
|
import ProjectPathIncludeEmptyYaml from './yaml_tests/negative_tests/project_path/include/empty.yml';
|
||||||
import ProjectPathIncludeInvalidVariableYaml from './yaml_tests/negative_tests/project_path/include/invalid_variable.yml';
|
import ProjectPathIncludeInvalidVariableYaml from './yaml_tests/negative_tests/project_path/include/invalid_variable.yml';
|
||||||
|
@ -90,6 +92,7 @@ describe('positive tests', () => {
|
||||||
CacheYaml,
|
CacheYaml,
|
||||||
FilterYaml,
|
FilterYaml,
|
||||||
IncludeYaml,
|
IncludeYaml,
|
||||||
|
JobWhenYaml,
|
||||||
RulesYaml,
|
RulesYaml,
|
||||||
VariablesYaml,
|
VariablesYaml,
|
||||||
ProjectPathYaml,
|
ProjectPathYaml,
|
||||||
|
@ -115,6 +118,7 @@ describe('negative tests', () => {
|
||||||
ArtifactsNegativeYaml,
|
ArtifactsNegativeYaml,
|
||||||
CacheNegativeYaml,
|
CacheNegativeYaml,
|
||||||
IncludeNegativeYaml,
|
IncludeNegativeYaml,
|
||||||
|
JobWhenNegativeYaml,
|
||||||
RulesNegativeYaml,
|
RulesNegativeYaml,
|
||||||
VariablesNegativeYaml,
|
VariablesNegativeYaml,
|
||||||
ProjectPathIncludeEmptyYaml,
|
ProjectPathIncludeEmptyYaml,
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
job_with_wrong_when:
|
||||||
|
script: exit 0
|
||||||
|
when: on_xyz
|
||||||
|
|
||||||
|
job_with_boolean_when:
|
||||||
|
script: exit 0
|
||||||
|
when: true
|
||||||
|
|
||||||
|
job_with_array_when:
|
||||||
|
script: exit 0
|
||||||
|
when: [on_success]
|
|
@ -0,0 +1,10 @@
|
||||||
|
job_with_no_when:
|
||||||
|
script: exit 0
|
||||||
|
|
||||||
|
job_with_when_always:
|
||||||
|
script: exit 0
|
||||||
|
when: always
|
||||||
|
|
||||||
|
job_with_when_on_failure:
|
||||||
|
script: exit 0
|
||||||
|
when: on_failure
|
|
@ -3,7 +3,7 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
RSpec.describe Gitlab::Ci::Config::Entry::Bridge do
|
RSpec.describe Gitlab::Ci::Config::Entry::Bridge do
|
||||||
subject { described_class.new(config, name: :my_bridge) }
|
subject(:entry) { described_class.new(config, name: :my_bridge) }
|
||||||
|
|
||||||
it_behaves_like 'with inheritable CI config' do
|
it_behaves_like 'with inheritable CI config' do
|
||||||
let(:inheritable_key) { 'default' }
|
let(:inheritable_key) { 'default' }
|
||||||
|
@ -380,4 +380,38 @@ RSpec.describe Gitlab::Ci::Config::Entry::Bridge do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#when' do
|
||||||
|
context 'when bridge is a manual action' do
|
||||||
|
let(:config) { { script: 'deploy', when: 'manual' } }
|
||||||
|
|
||||||
|
it { expect(entry.when).to eq('manual') }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when bridge has no `when` attribute' do
|
||||||
|
let(:config) { { script: 'deploy' } }
|
||||||
|
|
||||||
|
it { expect(entry.when).to be_nil }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the `when` keyword is not a string' do
|
||||||
|
context 'when it is an array' do
|
||||||
|
let(:config) { { script: 'exit 0', when: ['always'] } }
|
||||||
|
|
||||||
|
it 'returns error' do
|
||||||
|
expect(entry).not_to be_valid
|
||||||
|
expect(entry.errors).to include 'bridge when should be a string'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when it is a boolean' do
|
||||||
|
let(:config) { { script: 'exit 0', when: true } }
|
||||||
|
|
||||||
|
it 'returns error' do
|
||||||
|
expect(entry).not_to be_valid
|
||||||
|
expect(entry.errors).to include 'bridge when should be a string'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -317,6 +317,26 @@ RSpec.describe Gitlab::Ci::Config::Entry::Job do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when the `when` keyword is not a string' do
|
||||||
|
context 'when it is an array' do
|
||||||
|
let(:config) { { script: 'exit 0', when: ['always'] } }
|
||||||
|
|
||||||
|
it 'returns error' do
|
||||||
|
expect(entry).not_to be_valid
|
||||||
|
expect(entry.errors).to include 'job when should be a string'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when it is a boolean' do
|
||||||
|
let(:config) { { script: 'exit 0', when: true } }
|
||||||
|
|
||||||
|
it 'returns error' do
|
||||||
|
expect(entry).not_to be_valid
|
||||||
|
expect(entry.errors).to include 'job when should be a string'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when only: is used with rules:' do
|
context 'when only: is used with rules:' do
|
||||||
let(:config) { { only: ['merge_requests'], rules: [{ if: '$THIS' }] } }
|
let(:config) { { only: ['merge_requests'], rules: [{ if: '$THIS' }] } }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue