GitHub Integration Example

This example demonstrates how to integrate Jobly with GitHub for:

  • Handling incoming webhooks from GitHub
  • Sending pull request status updates

These features are not built into Jobly, but can be easily implemented by adding the Loadrunner gem.

Code

# jobs/build.rb
require 'loadrunner/status'

class Build < Jobly::Job
  def execute(repo:, commit: nil)
    logger.info "Building #{repo}"

    # Send status update to GitHub
    if commit
      Loadrunner::Status.update repo: "YourGithubUser/#{repo}", 
        sha: commit, 
        state: :pending,  # :pending :success :failure :error
        context: "Jobly Demo",
        description: "Build in progress",
        url: "http://example.com"

    end
  end
end

# hooks/global
#!/usr/bin/env ruby

# Handle any incoming GitHub hook

require 'jobly/boot'

commit = ENV['LOADRUNNER_COMMIT']
repo = ENV['LOADRUNNER_REPO']

# Execute a Jobly job

Build.run_later repo: repo, commit: commit

# config/jobly.rb
require 'loadrunner/server'

Jobly.configure do |config|
  # Mount the Loadrunner server under Jobly's /github endpoint
  config.mounts = { "/github" => Loadrunner::Server }
end

Commands to Try

cd examples/github
bundle install

# Start the server
foreman start

# Simulate a webhook using loadrunner command line interface
loadrunner event localhost:3000/github repo push