Sha256: c0905c575c7513466d91950a9de415fbe678f5123676fa86b55753312caf4e3b

Contents?: true

Size: 1.64 KB

Versions: 13

Compression:

Stored size: 1.64 KB

Contents

require 'evrone/ci/message'
require 'evrone/ci/common/error_notifier'

module Evrone
  module CI
    module Worker

      UpdateJobStatus = Struct.new(:app) do

        include Helper::Logger

        STARTED  = 2
        FINISHED = 3
        BROKEN   = 4
        FAILED   = 5

        def call(env)

          update_status env.job, STARTED
          rs = -1
          begin
            rs = app.call env
          rescue Exception => e
            env.job.add_to_output("\n\nERROR: #{e.inspect}\n")
            logger.error("ERROR: #{e.inspect}\n    BACKTRACE:\n#{e.backtrace.map{|i| "    #{i}" }.join("\n")}")
            Common::ErrorNotifier.notify(e)
          end

          msg = "\nDone. Your build exited with %s.\n"
          env.job.add_to_output(msg % rs.abs)

          case
          when rs == 0
            update_status env.job, FINISHED
          when rs > 0
            update_status env.job, BROKEN
          when rs < 0
            update_status env.job, FAILED
          end

          rs
        end

        private

          def update_status(job, status)
            publish_status create_message(job, status)
          end

          def create_message(job, status)
            tm = Time.now
            Message::JobStatus.new(
              build_id: job.message.id,
              job_id:   job.message.job_id,
              status:   status,
              tm:       tm.to_i,
              matrix:   job.message.matrix_keys
            )
          end

          def publish_status(message)
            logger.info "delivered job status #{message.inspect}"
            JobStatusConsumer.publish message
          end

      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
evrone-ci-worker-0.2.0.pre20 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre19 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre18 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre17 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre15 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre14 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre13 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre12 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre11 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre10 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre9 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre8 lib/evrone/ci/worker/middlewares/update_job_status.rb
evrone-ci-worker-0.2.0.pre7 lib/evrone/ci/worker/middlewares/update_job_status.rb