2018-07-25 05:30:33 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-08-24 07:01:33 -04:00
|
|
|
class ProjectAutoDevops < ActiveRecord::Base
|
|
|
|
belongs_to :project
|
2017-09-04 09:44:46 -04:00
|
|
|
|
2018-06-01 17:39:24 -04:00
|
|
|
enum deploy_strategy: {
|
2018-06-07 12:11:08 -04:00
|
|
|
continuous: 0,
|
2018-10-01 09:03:48 -04:00
|
|
|
manual: 1,
|
|
|
|
timed_incremental: 2
|
2018-06-01 17:39:24 -04:00
|
|
|
}
|
|
|
|
|
2017-09-12 06:33:48 -04:00
|
|
|
scope :enabled, -> { where(enabled: true) }
|
|
|
|
scope :disabled, -> { where(enabled: false) }
|
|
|
|
|
2017-09-06 15:00:34 -04:00
|
|
|
validates :domain, allow_blank: true, hostname: { allow_numeric_hostname: true }
|
2017-09-06 12:57:07 -04:00
|
|
|
|
2018-06-07 14:09:14 -04:00
|
|
|
after_save :create_gitlab_deploy_token, if: :needs_to_create_deploy_token?
|
|
|
|
|
2018-02-01 17:59:14 -05:00
|
|
|
def instance_domain
|
2018-02-02 19:56:11 -05:00
|
|
|
Gitlab::CurrentSettings.auto_devops_domain
|
2018-02-01 17:59:14 -05:00
|
|
|
end
|
|
|
|
|
2017-09-16 09:02:37 -04:00
|
|
|
def has_domain?
|
2018-02-01 17:59:14 -05:00
|
|
|
domain.present? || instance_domain.present?
|
2017-09-16 09:02:37 -04:00
|
|
|
end
|
|
|
|
|
2019-01-23 11:28:19 -05:00
|
|
|
# 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
|
2019-01-31 09:58:58 -05:00
|
|
|
# for more info.
|
2019-02-07 12:11:17 -05:00
|
|
|
#
|
|
|
|
# Suppport AUTO_DEVOPS_DOMAIN is scheduled to be removed on
|
2019-01-31 09:58:58 -05:00
|
|
|
# https://gitlab.com/gitlab-org/gitlab-ce/issues/52363
|
2018-03-13 09:00:14 -04:00
|
|
|
def predefined_variables
|
|
|
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
2018-03-13 10:26:16 -04:00
|
|
|
if has_domain?
|
|
|
|
variables.append(key: 'AUTO_DEVOPS_DOMAIN',
|
|
|
|
value: domain.presence || instance_domain)
|
|
|
|
end
|
2018-06-01 17:47:38 -04:00
|
|
|
|
2018-10-01 09:03:48 -04:00
|
|
|
variables.concat(deployment_strategy_default_variables)
|
2018-03-13 09:00:14 -04:00
|
|
|
end
|
2017-09-06 12:57:07 -04:00
|
|
|
end
|
2018-06-07 14:09:14 -04:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def create_gitlab_deploy_token
|
|
|
|
project.deploy_tokens.create!(
|
|
|
|
name: DeployToken::GITLAB_DEPLOY_TOKEN_NAME,
|
|
|
|
read_registry: true
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
def needs_to_create_deploy_token?
|
2018-08-16 09:24:25 -04:00
|
|
|
project.auto_devops_enabled? &&
|
2018-06-07 14:09:14 -04:00
|
|
|
!project.public? &&
|
|
|
|
!project.deploy_tokens.find_by(name: DeployToken::GITLAB_DEPLOY_TOKEN_NAME).present?
|
|
|
|
end
|
2018-10-01 09:03:48 -04:00
|
|
|
|
|
|
|
def deployment_strategy_default_variables
|
|
|
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
|
|
|
if manual?
|
|
|
|
variables.append(key: 'STAGING_ENABLED', value: '1')
|
|
|
|
variables.append(key: 'INCREMENTAL_ROLLOUT_ENABLED', value: '1') # deprecated
|
|
|
|
variables.append(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'manual')
|
|
|
|
elsif timed_incremental?
|
|
|
|
variables.append(key: 'INCREMENTAL_ROLLOUT_MODE', value: 'timed')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2017-08-24 07:01:33 -04:00
|
|
|
end
|