debian-mirror-gitlab/app/models/project_auto_devops.rb

71 lines
2 KiB
Ruby
Raw Normal View History

2018-11-18 11:00:15 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
class ProjectAutoDevops < ActiveRecord::Base
belongs_to :project
2018-11-08 19:23:39 +05:30
enum deploy_strategy: {
continuous: 0,
2018-12-05 23:21:45 +05:30
manual: 1,
timed_incremental: 2
2018-11-08 19:23:39 +05:30
}
2018-03-17 18:26:18 +05:30
scope :enabled, -> { where(enabled: true) }
scope :disabled, -> { where(enabled: false) }
validates :domain, allow_blank: true, hostname: { allow_numeric_hostname: true }
2018-11-08 19:23:39 +05:30
after_save :create_gitlab_deploy_token, if: :needs_to_create_deploy_token?
2018-03-17 18:26:18 +05:30
def instance_domain
Gitlab::CurrentSettings.auto_devops_domain
end
def has_domain?
domain.present? || instance_domain.present?
end
2019-03-02 22:35:43 +05:30
# 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
2018-05-09 12:01:36 +05:30
def predefined_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables|
if has_domain?
variables.append(key: 'AUTO_DEVOPS_DOMAIN',
value: domain.presence || instance_domain)
end
2018-11-08 19:23:39 +05:30
2018-12-05 23:21:45 +05:30
variables.concat(deployment_strategy_default_variables)
2018-05-09 12:01:36 +05:30
end
2018-03-17 18:26:18 +05:30
end
2018-11-08 19:23:39 +05:30
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-11-20 20:47:30 +05:30
project.auto_devops_enabled? &&
2018-11-08 19:23:39 +05:30
!project.public? &&
!project.deploy_tokens.find_by(name: DeployToken::GITLAB_DEPLOY_TOKEN_NAME).present?
end
2018-12-05 23:21:45 +05:30
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
2018-03-17 18:26:18 +05:30
end