Top Level Namespace
Defined Under Namespace
Modules: CommitMetadataPersistable, Minitest, NdrDevSupport
Instance Method Summary collapse
-
#add_secret(repo:, repo_path:, shared_dest:) ⇒ Object
Add a secret to be deployed by ndr_dev_support:deploy_secrets.
-
#add_secrets_repo(name:, url:, scm:, branch: nil) ⇒ Object
Add a git or svn secrets respository for ndr_dev_support:deploy_secrets.
- #add_target(env, name, app, port, app_user, is_web_server) ⇒ Object
- #log_deployment_message(msg) ⇒ Object
- #release_config_for(env) ⇒ Object
- #target_ruby_version_for(env) ⇒ Object
Instance Method Details
#add_secret(repo:, repo_path:, shared_dest:) ⇒ Object
Add a secret to be deployed by ndr_dev_support:deploy_secrets
15 16 17 18 19 20 21 |
# File 'lib/ndr_dev_support/capistrano/deploy_secrets.rb', line 15 def add_secret(repo:, repo_path:, shared_dest:) secrets = fetch(:secrets, []) raise "Unknown repo #{repo}" unless fetch(:secrets_repositories, {}).key?(repo) secrets << { repo: repo, repo_path: repo_path, shared_dest: shared_dest } set :secrets, secrets end |
#add_secrets_repo(name:, url:, scm:, branch: nil) ⇒ Object
Add a git or svn secrets respository for ndr_dev_support:deploy_secrets
4 5 6 7 8 9 10 11 12 |
# File 'lib/ndr_dev_support/capistrano/deploy_secrets.rb', line 4 def add_secrets_repo(name:, url:, scm:, branch: nil) raise "Invalid repo name #{name}" unless /\A[A-Z0-9_-]+\z/i.match?(name) raise "Unknown scm #{scm}" unless %w[svn git].include?(scm) raise "Expected branch for repo #{name}" if scm == 'git' && branch.to_s.empty? secrets_repositories = fetch(:secrets_repositories, {}) secrets_repositories[name] = { url: url, scm: scm, branch: branch } set :secrets_repositories, secrets_repositories end |
#add_target(env, name, app, port, app_user, is_web_server) ⇒ Object
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
# File 'lib/ndr_dev_support/capistrano/ndr_model.rb', line 205 def add_target(env, name, app, port, app_user, is_web_server) desc "Deploy to #{env} service #{app_user || 'you'}@#{app}:#{port}" task(name) do set :name, name set :application_user, app_user role :app, app set :port, port set :webapp_deployment, is_web_server set :daemon_deployment, !is_web_server set :branch, release_config_for(env).fetch('branch') if exists?(:repository_branches) set :repository, fetch(:repository_branches) + fetch(:branch) end # Extract Ruby configuration if available: ruby_version = target_ruby_version_for(env) set :ruby, ruby_version if ruby_version end after name, 'ndr_dev_support:prepare' end |
#log_deployment_message(msg) ⇒ Object
197 198 199 200 201 202 203 |
# File 'lib/ndr_dev_support/capistrano/ndr_model.rb', line 197 def (msg) name = fetch(:deployer_name, capture('id -un').chomp) log = File.join(shared_path, 'revisions.log') msg = "[#{Time.now}] #{name} #{msg}" # rubocop:disable Rails/TimeZone run "(test -e #{log} || (touch #{log} && chmod 664 #{log})) && echo #{Shellwords.escape(msg)} >> #{log};" end |
#release_config_for(env) ⇒ Object
185 186 187 188 |
# File 'lib/ndr_dev_support/capistrano/ndr_model.rb', line 185 def release_config_for(env) branches = YAML.safe_load_file('config/deployments.yml', permitted_classes: [Date]) branches.fetch(env.to_s) { raise 'Unknown release branch!' } end |
#target_ruby_version_for(env) ⇒ Object
190 191 192 193 194 195 |
# File 'lib/ndr_dev_support/capistrano/ndr_model.rb', line 190 def target_ruby_version_for(env) raw = release_config_for(env).fetch('ruby') match = raw.match(/\A(?<version>\d+\.\d+\.\d+)\z/) match ? match[:version] : raise('Unrecognized Ruby version!') end |