Class: KamalGitlabReviewApp::CLI::Deploy
- Inherits:
-
Object
- Object
- KamalGitlabReviewApp::CLI::Deploy
- Defined in:
- lib/kamal_gitlab_review_app/cli/deploy.rb
Overview
Deploys (or first-time sets up) the review app for the current MR. Fails loud: any step failure raises and propagates to the caller (no swallowed errors, no exit-0 masking of a broken deploy).
Defined Under Namespace
Classes: Error
Constant Summary collapse
- DEFAULT_CONTAINER_LISTER =
lambda do ssh_user = ENV.fetch('REVIEW_SSH_USER', 'deploy') target_ip = ENV.fetch('REVIEW_TARGET_IP') stdout, status = Open3.capture2('ssh', "#{ssh_user}@#{target_ip}", "docker ps --format '{{.Names}}'") status.success? ? stdout : '' rescue StandardError '' end
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(runner: method(:system), container_lister: DEFAULT_CONTAINER_LISTER) ⇒ Deploy
constructor
A new instance of Deploy.
Constructor Details
#initialize(runner: method(:system), container_lister: DEFAULT_CONTAINER_LISTER) ⇒ Deploy
Returns a new instance of Deploy.
27 28 29 30 |
# File 'lib/kamal_gitlab_review_app/cli/deploy.rb', line 27 def initialize(runner: method(:system), container_lister: DEFAULT_CONTAINER_LISTER) @runner = runner @container_lister = container_lister end |
Class Method Details
.call(**kwargs) ⇒ Object
23 24 25 |
# File 'lib/kamal_gitlab_review_app/cli/deploy.rb', line 23 def self.call(**kwargs) new(**kwargs).call end |
Instance Method Details
#call ⇒ Object
32 33 34 35 36 37 |
# File 'lib/kamal_gitlab_review_app/cli/deploy.rb', line 32 def call project_root = ENV.fetch('KAMAL_GITLAB_REVIEW_APP_PROJECT_ROOT', Dir.pwd) iid = ENV.fetch('CI_MERGE_REQUEST_IID') Dir.chdir(project_root) { deploy(iid:) } end |