class Codepipe::Webhook

Public Class Methods

new(options={}) click to toggle source
# File lib/codepipe/webhook.rb, line 6
def initialize(options={})
  @options = options
  @webhook_path = options[:webhook_path] || get_webhook_path
  @properties = default_properties
end

Public Instance Methods

default_properties() click to toggle source
# File lib/codepipe/webhook.rb, line 29
def default_properties
  {
    authentication: 'GITHUB_HMAC', # GITHUB_HMAC, IP and UNAUTHENTICATED
    authentication_configuration: {
       secret_token: @secret_token,
    },
    filters: [{
      json_path: "$.ref",
      match_equals: "refs/heads/{Branch}",
    }],
    # name: '', # optional
    register_with_third_party: 'true', # optional
    target_action: 'Source',
    target_pipeline: {ref: "Pipeline"},
    target_pipeline_version: {"Fn::GetAtt": "Pipeline.Version"},
  }
end
run() click to toggle source
# File lib/codepipe/webhook.rb, line 12
def run
  return unless File.exist?(@webhook_path)

  old_properties = @properties.clone
  evaluate(@webhook_path)
  set_secret_token!
  return if old_properties == @properties # empty webhook.rb file

  resource = {
    webhook: {
      type: "AWS::CodePipeline::Webhook",
      properties: @properties
    }
  }
  CfnCamelizer.transform(resource)
end
set_secret_token!() click to toggle source
# File lib/codepipe/webhook.rb, line 47
def set_secret_token!
  @properties.merge!(
    authentication_configuration: {
      secret_token: @secret_token
    }
  )
end

Private Instance Methods

get_webhook_path() click to toggle source
# File lib/codepipe/webhook.rb, line 56
def get_webhook_path
  lookup_codepipeline_file("webhook.rb")
end