Sha256: 5730df4c3b843c7ca6a1ed28d28ad0c703af7e8e908ca3ab958d3013056dfc72

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 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?

      case status
      when 'pending'
        if deploy.rollback_once_aborted?
          deploy.report_faulty!(description: "A rollback of #{stack.to_param} was triggered")
        else
          since_commit.create_release_status!(
            'failure',
            user: user.presence,
            target_url: permalink,
            description: "A rollback of #{stack.to_param} was triggered",
          )
        end
      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

1 entries across 1 versions & 1 rubygems

Version Path
shipit-engine-0.27.0 app/models/shipit/rollback.rb