Commit 79fc5e13 authored by Stan Hu's avatar Stan Hu

Merge branch '56959-remove-auto-devops-domain-ci-variable' into 'master'

Drop support for AUTO_DEVOPS_DOMAIN

See merge request gitlab-org/gitlab-ce!28460
parents 6f4a5762 7338052f
...@@ -204,7 +204,7 @@ module Clusters ...@@ -204,7 +204,7 @@ module Clusters
end end
def kube_ingress_domain def kube_ingress_domain
@kube_ingress_domain ||= domain.presence || instance_domain || legacy_auto_devops_domain @kube_ingress_domain ||= domain.presence || instance_domain
end end
def predefined_variables def predefined_variables
...@@ -221,24 +221,6 @@ module Clusters ...@@ -221,24 +221,6 @@ module Clusters
@instance_domain ||= Gitlab::CurrentSettings.auto_devops_domain @instance_domain ||= Gitlab::CurrentSettings.auto_devops_domain
end end
# To keep backward compatibility with AUTO_DEVOPS_DOMAIN
# environment variable, we need to ensure KUBE_INGRESS_BASE_DOMAIN
# is set if AUTO_DEVOPS_DOMAIN is set on any of the following options:
# ProjectAutoDevops#Domain, project variables or group variables,
# as the AUTO_DEVOPS_DOMAIN is needed for CI_ENVIRONMENT_URL
#
# This method should is scheduled to be removed on
# https://gitlab.com/gitlab-org/gitlab-ce/issues/56959
def legacy_auto_devops_domain
if project_type?
project&.auto_devops&.domain.presence ||
project.variables.find_by(key: 'AUTO_DEVOPS_DOMAIN')&.value.presence ||
project.group&.variables&.find_by(key: 'AUTO_DEVOPS_DOMAIN')&.value.presence
elsif group_type?
group.variables.find_by(key: 'AUTO_DEVOPS_DOMAIN')&.value.presence
end
end
def restrict_modification def restrict_modification
if provider&.on_creation? if provider&.on_creation?
errors.add(:base, "cannot modify during creation") errors.add(:base, "cannot modify during creation")
......
...@@ -16,27 +16,8 @@ class ProjectAutoDevops < ApplicationRecord ...@@ -16,27 +16,8 @@ class ProjectAutoDevops < ApplicationRecord
after_save :create_gitlab_deploy_token, if: :needs_to_create_deploy_token? after_save :create_gitlab_deploy_token, if: :needs_to_create_deploy_token?
def instance_domain
Gitlab::CurrentSettings.auto_devops_domain
end
def has_domain?
domain.present? || instance_domain.present?
end
# From 11.8, AUTO_DEVOPS_DOMAIN has been replaced by KUBE_INGRESS_BASE_DOMAIN.
# See Clusters::Cluster#predefined_variables and https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24580
# for more info.
#
# Suppport AUTO_DEVOPS_DOMAIN is scheduled to be removed on
# https://gitlab.com/gitlab-org/gitlab-ce/issues/52363
def predefined_variables def predefined_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables| Gitlab::Ci::Variables::Collection.new.tap do |variables|
if has_domain?
variables.append(key: 'AUTO_DEVOPS_DOMAIN',
value: domain.presence || instance_domain)
end
variables.concat(deployment_strategy_default_variables) variables.concat(deployment_strategy_default_variables)
end end
end end
......
---
title: Removes support for AUTO_DEVOPS_DOMAIN
merge_request: 28460
author:
type: removed
...@@ -1986,7 +1986,7 @@ production: ...@@ -1986,7 +1986,7 @@ production:
- deploy - deploy
environment: environment:
name: production name: production
url: https://$CI_PROJECT_PATH_SLUG.$AUTO_DEVOPS_DOMAIN url: https://$CI_PROJECT_PATH_SLUG.$KUBE_INGRESS_BASE_DOMAIN
only: only:
- master - master
``` ```
......
...@@ -126,10 +126,6 @@ Auto Deploy, and Auto Monitoring will be silently skipped. ...@@ -126,10 +126,6 @@ Auto Deploy, and Auto Monitoring will be silently skipped.
## Auto DevOps base domain ## Auto DevOps base domain
NOTE: **Note**
`AUTO_DEVOPS_DOMAIN` environment variable is deprecated and
[is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959).
The Auto DevOps base domain is required if you want to make use of [Auto The Auto DevOps base domain is required if you want to make use of [Auto
Review Apps](#auto-review-apps) and [Auto Deploy](#auto-deploy). It can be defined Review Apps](#auto-review-apps) and [Auto Deploy](#auto-deploy). It can be defined
in any of the following places: in any of the following places:
...@@ -162,6 +158,12 @@ Auto DevOps base domain to `1.2.3.4.nip.io`. ...@@ -162,6 +158,12 @@ Auto DevOps base domain to `1.2.3.4.nip.io`.
Once set up, all requests will hit the load balancer, which in turn will route Once set up, all requests will hit the load balancer, which in turn will route
them to the Kubernetes pods that run your application(s). them to the Kubernetes pods that run your application(s).
NOTE: **Note:**
From GitLab 11.8, `KUBE_INGRESS_BASE_DOMAIN` replaces `AUTO_DEVOPS_DOMAIN`.
Support for `AUTO_DEVOPS_DOMAIN` was [removed in GitLab
12.0](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959).
## Using multiple Kubernetes clusters **[PREMIUM]** ## Using multiple Kubernetes clusters **[PREMIUM]**
When using Auto DevOps, you may want to deploy different environments to When using Auto DevOps, you may want to deploy different environments to
...@@ -209,10 +211,6 @@ and verifying that your app is deployed as a review app in the Kubernetes ...@@ -209,10 +211,6 @@ and verifying that your app is deployed as a review app in the Kubernetes
cluster with the `review/*` environment scope. Similarly, you can check the cluster with the `review/*` environment scope. Similarly, you can check the
other environments. other environments.
NOTE: **Note:**
From GitLab 11.8, `KUBE_INGRESS_BASE_DOMAIN` replaces `AUTO_DEVOPS_DOMAIN`.
`AUTO_DEVOPS_DOMAIN` [is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959).
## Enabling/Disabling Auto DevOps ## Enabling/Disabling Auto DevOps
When first using Auto Devops, review the [requirements](#requirements) to ensure all necessary components to make When first using Auto Devops, review the [requirements](#requirements) to ensure all necessary components to make
...@@ -734,7 +732,6 @@ also be customized, and you can easily use a [custom buildpack](#custom-buildpac ...@@ -734,7 +732,6 @@ also be customized, and you can easily use a [custom buildpack](#custom-buildpac
| **Variable** | **Description** | | **Variable** | **Description** |
| ------------ | --------------- | | ------------ | --------------- |
| `AUTO_DEVOPS_DOMAIN` | The [Auto DevOps domain](#auto-devops-base-domain). By default, set automatically by the [Auto DevOps setting](#enablingdisabling-auto-devops). This variable is deprecated and [is scheduled to be removed](https://gitlab.com/gitlab-org/gitlab-ce/issues/56959). Use `KUBE_INGRESS_BASE_DOMAIN` instead. |
| `AUTO_DEVOPS_CHART` | The Helm Chart used to deploy your apps; defaults to the one [provided by GitLab](https://gitlab.com/gitlab-org/charts/auto-deploy-app). | | `AUTO_DEVOPS_CHART` | The Helm Chart used to deploy your apps; defaults to the one [provided by GitLab](https://gitlab.com/gitlab-org/charts/auto-deploy-app). |
| `AUTO_DEVOPS_CHART_REPOSITORY` | The Helm Chart repository used to search for charts; defaults to `https://charts.gitlab.io`. | | `AUTO_DEVOPS_CHART_REPOSITORY` | The Helm Chart repository used to search for charts; defaults to `https://charts.gitlab.io`. |
| `AUTO_DEVOPS_CHART_REPOSITORY_NAME` | From Gitlab 11.11, this variable can be used to set the name of the helm repository; defaults to "gitlab" | | `AUTO_DEVOPS_CHART_REPOSITORY_NAME` | From Gitlab 11.11, this variable can be used to set the name of the helm repository; defaults to "gitlab" |
......
...@@ -507,23 +507,13 @@ rollout 100%: ...@@ -507,23 +507,13 @@ rollout 100%:
kubectl describe namespace "$KUBE_NAMESPACE" || kubectl create namespace "$KUBE_NAMESPACE" kubectl describe namespace "$KUBE_NAMESPACE" || kubectl create namespace "$KUBE_NAMESPACE"
} }
# Function to ensure backwards compatibility with AUTO_DEVOPS_DOMAIN
function ensure_kube_ingress_base_domain() {
if [ -z ${KUBE_INGRESS_BASE_DOMAIN+x} ] && [ -n "$AUTO_DEVOPS_DOMAIN" ] ; then
export KUBE_INGRESS_BASE_DOMAIN=$AUTO_DEVOPS_DOMAIN
fi
}
function check_kube_domain() { function check_kube_domain() {
ensure_kube_ingress_base_domain
if [[ -z "$KUBE_INGRESS_BASE_DOMAIN" ]]; then if [[ -z "$KUBE_INGRESS_BASE_DOMAIN" ]]; then
echo "In order to deploy or use Review Apps," echo "In order to deploy or use Review Apps,"
echo "AUTO_DEVOPS_DOMAIN or KUBE_INGRESS_BASE_DOMAIN variables must be set" echo "KUBE_INGRESS_BASE_DOMAIN variables must be set"
echo "From 11.8, you can set KUBE_INGRESS_BASE_DOMAIN in cluster settings" echo "From 11.8, you can set KUBE_INGRESS_BASE_DOMAIN in cluster settings"
echo "or by defining a variable at group or project level." echo "or by defining a variable at group or project level."
echo "You can also manually add it in .gitlab-ci.yml" echo "You can also manually add it in .gitlab-ci.yml"
echo "AUTO_DEVOPS_DOMAIN support will be dropped on 12.0"
false false
else else
true true
......
...@@ -190,7 +190,6 @@ describe Gitlab::Ci::Config do ...@@ -190,7 +190,6 @@ describe Gitlab::Ci::Config do
let(:remote_file_content) do let(:remote_file_content) do
<<~HEREDOC <<~HEREDOC
variables: variables:
AUTO_DEVOPS_DOMAIN: domain.example.com
POSTGRES_USER: user POSTGRES_USER: user
POSTGRES_PASSWORD: testing-password POSTGRES_PASSWORD: testing-password
POSTGRES_ENABLED: "true" POSTGRES_ENABLED: "true"
...@@ -232,7 +231,6 @@ describe Gitlab::Ci::Config do ...@@ -232,7 +231,6 @@ describe Gitlab::Ci::Config do
"bundle install --jobs $(nproc) \"${FLAGS[@]}\"" "bundle install --jobs $(nproc) \"${FLAGS[@]}\""
] ]
variables = { variables = {
AUTO_DEVOPS_DOMAIN: "domain.example.com",
POSTGRES_USER: "user", POSTGRES_USER: "user",
POSTGRES_PASSWORD: "testing-password", POSTGRES_PASSWORD: "testing-password",
POSTGRES_ENABLED: "true", POSTGRES_ENABLED: "true",
......
...@@ -2604,30 +2604,6 @@ describe Ci::Build do ...@@ -2604,30 +2604,6 @@ describe Ci::Build do
it { is_expected.to include(ci_config_path) } it { is_expected.to include(ci_config_path) }
end end
context 'when using auto devops' do
context 'and is enabled' do
before do
project.create_auto_devops!(enabled: true, domain: 'example.com')
end
it "includes AUTO_DEVOPS_DOMAIN" do
is_expected.to include(
{ key: 'AUTO_DEVOPS_DOMAIN', value: 'example.com', public: true, masked: false })
end
end
context 'and is disabled' do
before do
project.create_auto_devops!(enabled: false, domain: 'example.com')
end
it "includes AUTO_DEVOPS_DOMAIN" do
is_expected.not_to include(
{ key: 'AUTO_DEVOPS_DOMAIN', value: 'example.com', public: true, masked: false })
end
end
end
context 'when pipeline variable overrides build variable' do context 'when pipeline variable overrides build variable' do
before do before do
build.yaml_variables = [{ key: 'MYVAR', value: 'myvar', public: true }] build.yaml_variables = [{ key: 'MYVAR', value: 'myvar', public: true }]
......
...@@ -557,62 +557,15 @@ describe Clusters::Cluster do ...@@ -557,62 +557,15 @@ describe Clusters::Cluster do
end end
context 'with no domain on cluster' do context 'with no domain on cluster' do
context 'with a project cluster' do
let(:cluster) { create(:cluster, :project, :provided_by_gcp) } let(:cluster) { create(:cluster, :project, :provided_by_gcp) }
let(:project) { cluster.project } let(:project) { cluster.project }
context 'with domain set at instance level' do context 'with domain set at instance level' do
before do before do
stub_application_setting(auto_devops_domain: 'global_domain.com') stub_application_setting(auto_devops_domain: 'global_domain.com')
it { is_expected.to eq('global_domain.com') }
end
end
context 'with domain set on ProjectAutoDevops' do
before do
auto_devops = project.build_auto_devops(domain: 'legacy-ado-domain.com')
auto_devops.save
end
it { is_expected.to eq('legacy-ado-domain.com') }
end
context 'with domain set as environment variable on project' do
before do
variable = project.variables.build(key: 'AUTO_DEVOPS_DOMAIN', value: 'project-ado-domain.com')
variable.save
end
it { is_expected.to eq('project-ado-domain.com') }
end
context 'with domain set as environment variable on the group project' do
let(:group) { create(:group) }
before do
project.update(parent_id: group.id)
variable = group.variables.build(key: 'AUTO_DEVOPS_DOMAIN', value: 'group-ado-domain.com')
variable.save
end
it { is_expected.to eq('group-ado-domain.com') }
end
end
context 'with a group cluster' do
let(:cluster) { create(:cluster, :group, :provided_by_gcp) }
context 'with domain set as environment variable for the group' do
let(:group) { cluster.group }
before do
variable = group.variables.build(key: 'AUTO_DEVOPS_DOMAIN', value: 'group-ado-domain.com')
variable.save
end end
it { is_expected.to eq('group-ado-domain.com') } it { is_expected.to eq('global_domain.com') }
end
end end
end end
end end
......
...@@ -14,65 +14,9 @@ describe ProjectAutoDevops do ...@@ -14,65 +14,9 @@ describe ProjectAutoDevops do
it { is_expected.to respond_to(:created_at) } it { is_expected.to respond_to(:created_at) }
it { is_expected.to respond_to(:updated_at) } it { is_expected.to respond_to(:updated_at) }
describe '#has_domain?' do
context 'when domain is defined' do
let(:auto_devops) { build_stubbed(:project_auto_devops, project: project, domain: 'domain.com') }
it { expect(auto_devops).to have_domain }
end
context 'when domain is empty' do
let(:auto_devops) { build_stubbed(:project_auto_devops, project: project, domain: '') }
context 'when there is an instance domain specified' do
before do
allow(Gitlab::CurrentSettings).to receive(:auto_devops_domain).and_return('example.com')
end
it { expect(auto_devops).to have_domain }
end
context 'when there is no instance domain specified' do
before do
allow(Gitlab::CurrentSettings).to receive(:auto_devops_domain).and_return(nil)
end
it { expect(auto_devops).not_to have_domain }
end
end
end
describe '#predefined_variables' do describe '#predefined_variables' do
let(:auto_devops) { build_stubbed(:project_auto_devops, project: project, domain: domain) } let(:auto_devops) { build_stubbed(:project_auto_devops, project: project, domain: domain) }
context 'when domain is defined' do
let(:domain) { 'example.com' }
it 'returns AUTO_DEVOPS_DOMAIN' do
expect(auto_devops.predefined_variables).to include(domain_variable)
end
end
context 'when domain is not defined' do
let(:domain) { nil }
context 'when there is an instance domain specified' do
before do
allow(Gitlab::CurrentSettings).to receive(:auto_devops_domain).and_return('example.com')
end
it { expect(auto_devops.predefined_variables).to include(domain_variable) }
end
context 'when there is no instance domain specified' do
before do
allow(Gitlab::CurrentSettings).to receive(:auto_devops_domain).and_return(nil)
end
it { expect(auto_devops.predefined_variables).not_to include(domain_variable) }
end
end
context 'when deploy_strategy is manual' do context 'when deploy_strategy is manual' do
let(:auto_devops) { build_stubbed(:project_auto_devops, :manual_deployment, project: project) } let(:auto_devops) { build_stubbed(:project_auto_devops, :manual_deployment, project: project) }
let(:expected_variables) do let(:expected_variables) do
...@@ -105,10 +49,6 @@ describe ProjectAutoDevops do ...@@ -105,10 +49,6 @@ describe ProjectAutoDevops do
.not_to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED") .not_to include("STAGING_ENABLED", "INCREMENTAL_ROLLOUT_ENABLED")
end end
end end
def domain_variable
{ key: 'AUTO_DEVOPS_DOMAIN', value: 'example.com', public: true }
end
end end
describe '#create_gitlab_deploy_token' do describe '#create_gitlab_deploy_token' do
......
...@@ -3975,64 +3975,6 @@ describe Project do ...@@ -3975,64 +3975,6 @@ describe Project do
end end
end end
describe '#auto_devops_variables' do
set(:project) { create(:project) }
subject { project.auto_devops_variables }
context 'when enabled in instance settings' do
before do
stub_application_setting(auto_devops_enabled: true)
end
context 'when domain is empty' do
before do
stub_application_setting(auto_devops_domain: nil)
end
it 'variables does not include AUTO_DEVOPS_DOMAIN' do
is_expected.not_to include(domain_variable)
end
end
context 'when domain is configured' do
before do
stub_application_setting(auto_devops_domain: 'example.com')
end
it 'variables includes AUTO_DEVOPS_DOMAIN' do
is_expected.to include(domain_variable)
end
end
end
context 'when explicitly enabled' do
context 'when domain is empty' do
before do
create(:project_auto_devops, project: project, domain: nil)
end
it 'variables does not include AUTO_DEVOPS_DOMAIN' do
is_expected.not_to include(domain_variable)
end
end
context 'when domain is configured' do
before do
create(:project_auto_devops, project: project, domain: 'example.com')
end
it 'variables includes AUTO_DEVOPS_DOMAIN' do
is_expected.to include(domain_variable)
end
end
end
def domain_variable
{ key: 'AUTO_DEVOPS_DOMAIN', value: 'example.com', public: true }
end
end
describe '#latest_successful_builds_for' do describe '#latest_successful_builds_for' do
let(:project) { build(:project) } let(:project) { build(:project) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment