diff options
Diffstat (limited to 'app/models/concerns/ci/has_variable.rb')
-rw-r--r-- | app/models/concerns/ci/has_variable.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app/models/concerns/ci/has_variable.rb b/app/models/concerns/ci/has_variable.rb new file mode 100644 index 00000000000..9bf2b409080 --- /dev/null +++ b/app/models/concerns/ci/has_variable.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module Ci + module HasVariable + extend ActiveSupport::Concern + + included do + enum variable_type: { + env_var: 1, + file: 2 + } + + validates :key, + presence: true, + length: { maximum: 255 }, + format: { with: /\A[a-zA-Z0-9_]+\z/, + message: "can contain only letters, digits and '_'." } + + scope :order_key_asc, -> { reorder(key: :asc) } + + attr_encrypted :value, + mode: :per_attribute_iv_and_salt, + insecure_mode: true, + key: Settings.attr_encrypted_db_key_base, + algorithm: 'aes-256-cbc' + + def key=(new_key) + super(new_key.to_s.strip) + end + end + + def to_runner_variable + { key: key, value: value, public: false, file: file? } + end + end +end |