Sha256: 4861278b4ccc70daf1482896848b2f62453d0e4f18bf9577f341c0dd2d7e5065

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

module Codepipe
  class Webhook
    include Codepipe::Dsl::Webhook
    include Evaluate

    def initialize(options={})
      @options = options
      @webhook_path = options[:webhook_path] || get_webhook_path
      @properties = default_properties
    end

    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

    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

    def set_secret_token!
      @properties.merge!(
        authentication_configuration: {
          secret_token: @secret_token
        }
      )
    end
  private

    def get_webhook_path
      lookup_codepipeline_file("webhook.rb")
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
codepipeline-0.3.4 lib/codepipe/webhook.rb
codepipeline-0.3.3 lib/codepipe/webhook.rb
codepipeline-0.3.2 lib/codepipe/webhook.rb
codepipeline-0.3.1 lib/codepipe/webhook.rb
codepipeline-0.3.0 lib/codepipe/webhook.rb
codepipeline-0.2.1 lib/codepipe/webhook.rb
codepipeline-0.2.0 lib/codepipe/webhook.rb