Skip to content

Commit c5ebb8d

Browse files
committed
preserve env vars during rollbacks
1 parent d912d24 commit c5ebb8d

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

app/models/shipit/deploy.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def trigger_rollback(user = AnonymousUser.new, env: nil, force: false, lock: tru
117117
end
118118

119119
# Rolls the stack back to the most recent **previous** successful deploy
120-
def trigger_revert(force: false, rollback_to: nil)
120+
def trigger_revert(force: false, rollback_to: nil, env: nil)
121121
previous_successful_commit = rollback_to&.until_commit || commit_to_rollback_to
122122

123123
rollback = Rollback.create!(
@@ -126,6 +126,7 @@ def trigger_revert(force: false, rollback_to: nil)
126126
parent_id: id,
127127
since_commit: until_commit,
128128
until_commit: previous_successful_commit,
129+
env: env || self.env,
129130
allow_concurrency: force
130131
)
131132

@@ -301,7 +302,11 @@ def trigger_revert_if_required
301302
return unless rollback_once_aborted?
302303
return unless supports_rollback?
303304

304-
trigger_revert(rollback_to: rollback_once_aborted_to)
305+
if rollback_once_aborted_to
306+
rollback_once_aborted_to.trigger_rollback(aborted_by, env: env, force: true)
307+
else
308+
trigger_revert(force: true, env: env)
309+
end
305310
end
306311

307312
def default_since_commit_id

test/models/deploys_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,27 +437,35 @@ def setup
437437
@deploy = shipit_deploys(:shipit_running)
438438
@deploy.ping
439439
@deploy.pid = 42
440+
@deploy.env = { 'CUSTOM_VAR' => 'value' }
440441
@deploy.abort!(rollback_once_aborted: true, aborted_by: @user)
441442

442443
assert_difference -> { @stack.rollbacks.count }, 1 do
443444
assert_enqueued_with(job: PerformTaskJob) do
444445
@deploy.aborted!
445446
end
446447
end
448+
449+
rollback = @stack.rollbacks.last
450+
assert_equal({ 'CUSTOM_VAR' => 'value' }, rollback.env)
447451
end
448452

449453
test "transitioning to aborted schedule a rollback to the designated deploy if set" do
450454
@rollback_to = shipit_deploys(:shipit_pending)
451455
@deploy = shipit_deploys(:shipit_running)
452456
@deploy.ping
453457
@deploy.pid = 42
458+
@deploy.env = { 'CUSTOM_VAR' => 'value' }
454459
@deploy.abort!(rollback_once_aborted: true, rollback_once_aborted_to: @rollback_to, aborted_by: @user)
455460

456461
assert_difference -> { @stack.rollbacks.count }, 1 do
457462
assert_enqueued_with(job: PerformTaskJob) do
458463
@deploy.aborted!
459464
end
460465
end
466+
467+
rollback = @stack.rollbacks.last
468+
assert_equal({ 'CUSTOM_VAR' => 'value' }, rollback.env)
461469
end
462470

463471
test "transitioning to aborted locks the stack if a rollback is scheduled" do

0 commit comments

Comments
 (0)