Sha256: 2c197bac88afbef9a187f2e7e507864845ea6feaa415a5072e8c3a5874739ab1

Contents?: true

Size: 1.89 KB

Versions: 9

Compression:

Stored size: 1.89 KB

Contents

#!/usr/bin/env ruby

require 'aws-sdk'
require 'dotenv'
require 'git'
require 'logger'
require 'thor'

module Hashicorptools
  class CodeDeploy < Thor

    desc 'deploy', 'deploy latest code to environment'
    option :environment, :required => true
    option :branch, default: 'master'
    option :commit
    def deploy
      g = Git.open('..')

      commit = if options[:commit].present?
                 g.gcommit(options[:commit])
               else
                 g.checkout(options[:branch].to_sym)
                 g.log.first
               end


      puts "deploying commit: #{commit.sha} #{commit.message}"

      create_deployment(commit.sha, commit.message)
    end

    private

    def create_deployment(commit_id, commit_message = nil)
      Dotenv.load

      client = Aws::CodeDeploy::Client.new
      response = client.create_deployment({
                                            application_name: application_name,
                                            deployment_group_name: "#{application_name}-#{options[:environment]}",
                                            revision: {
                                              revision_type: 'GitHub',
                                              git_hub_location: {
                                                repository: "controlshift/#{application_name}",
                                                commit_id: commit_id
                                              }
                                            },
                                            description: (commit_message || "commit #{commit_id}").slice(0,99)
                                          })
      puts "created deployment #{response.deployment_id}"
      puts "https://console.aws.amazon.com/codedeploy/home?region=#{ENV['AWS_REGION']}#/deployments/#{response.deployment_id}"
    end

    def application_name
      raise "implement me"
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hashicorptools-0.2.3 lib/hashicorptools/code_deploy.rb
hashicorptools-0.2.2 lib/hashicorptools/code_deploy.rb
hashicorptools-0.1.2 lib/hashicorptools/code_deploy.rb
hashicorptools-0.0.12 lib/hashicorptools/code_deploy.rb
hashicorptools-0.0.7 lib/hashicorptools/code_deploy.rb
hashicorptools-0.0.6 lib/hashicorptools/code_deploy.rb
hashicorptools-0.0.5 lib/hashicorptools/code_deploy.rb
hashicorptools-0.0.4 lib/hashicorptools/code_deploy.rb
hashicorptools-0.0.3 lib/hashicorptools/code_deploy.rb