Sha256: 07abff32c514a645a7b1d2afcc00b2772b8dbfd5a7a384cefaf54fa408028904

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 KB

Contents

module Shipit
  class Rollback < Deploy
    belongs_to :deploy, foreign_key: :parent_id, inverse_of: false

    state_machine :status do
      after_transition to: :success, do: :lock_reverted_commits
    end

    def rollback?
      true
    end

    def rollbackable?
      false
    end

    def supports_rollback?
      false
    end

    def commits
      return Commit.none unless stack

      @commits ||= stack.commits.reachable.newer_than(until_commit_id).until(since_commit_id).order(id: :asc)
    end

    def commit_range
      [until_commit, since_commit]
    end

    def to_partial_path
      'deploys/deploy'
    end

    private

    def update_release_status
      return unless stack.release_status?

      # When we rollback to a certain revision, assume that all later deploys were faulty
      stack.deploys.newer_than(deploy.id).until(stack.last_completed_deploy.id).to_a.each do |deploy|
        deploy.report_faulty!(description: "A rollback of #{stack.to_param} was triggered")
      end
    end

    def lock_reverted_commits
      stack.lock_reverted_commits!
    end

    def create_commit_deployments
      # Rollback events are confusing in GitHub
    end

    def update_commit_deployments
      # Rollback events are confusing in GitHub
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
shipit-engine-0.31.0 app/models/shipit/rollback.rb
shipit-engine-0.30.0 app/models/shipit/rollback.rb
shipit-engine-0.29.0 app/models/shipit/rollback.rb
shipit-engine-0.28.1 app/models/shipit/rollback.rb
shipit-engine-0.28.0 app/models/shipit/rollback.rb