Sha256: 7f8c956e51af254a6111ff48d4e43acac4dfb1f99d0a16350b12c392f027bf3f

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

# coding: utf-8

module Status
  module Github
    class Statuses
      def initialize(qa_status, branch)
        @qa_status = qa_status
        @branch = branch
        @jenkins = Jenkins.new(branch)
      end

      def request
        Request.new.post(status_api, payload)
      end

      private

      def status_api
        "/repos/#{Status.owner}/#{Status.repo}/statuses/" + sha + "?access_token=" + Status.token
      end

      def description
        "Build status: #{@jenkins.state}, QA #{@qa_status}"
      end

      def payload
        {:state => state, :description => description, :target_url => target_url}
      end

      def target_url
        "#{Status.ci_url}/job/#{@branch}"
      end

      def state
        return "success" if @jenkins.pass? && @qa_status == "pass"
        return "pending" if @jenkins.pass? && @qa_status != "pass"
        return "pending" if @jenkins.state == "pending" && @qa_status != "pass"
        git_state
      end

      def git_state
        states.include?(@jenkins.state) ? states[states.index(@jenkins.state)] : "error"
      end

      def states
        %w(error failure)
      end

      def sha
        `git log #{@branch} -1 --pretty=format:'%H'`
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
update_status-0.2.2 lib/status/github/statuses.rb