minimal_pipeline 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/minimal_pipeline/cloudformation.rb +3 -3
- data/lib/minimal_pipeline/docker.rb +1 -1
- data/lib/minimal_pipeline/packer.rb +58 -0
- data/lib/minimal_pipeline.rb +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0049179db6389e8fce50230b52b9965b98dd5c7ff041190a274e39eb29174cca'
|
4
|
+
data.tar.gz: fd8b0632cde9a18e26be5d94344a53e08d546f085a95c0eb13c02f8076e88bc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd83066fa798f9b314fddaf0a79e7be6c441b591f26d686871d9a64822b0d31ae330a6dadb3bc52ef0e7660f152934f44b261e36bd557b826c5689aab3d51b5c
|
7
|
+
data.tar.gz: 0ac1739f0f2382fca438dec93f70986452b88134a7d2603df8c301e8edeaa6899b49e5830023f01cbec26b866ae29a6fa0e80f594cd1438a16b4152f3b4a8019
|
@@ -80,17 +80,17 @@ class MinimalPipeline
|
|
80
80
|
# @param stack_parameters [Hash] Parameters to be passed into the stack
|
81
81
|
def deploy_stack(stack_name, stack_parameters)
|
82
82
|
unless @client.describe_stacks(stack_name: stack_name).stacks.empty?
|
83
|
-
puts 'Updating the existing stack'
|
83
|
+
puts 'Updating the existing stack' if ENV['DEBUG']
|
84
84
|
@client.update_stack(stack_parameters)
|
85
85
|
@client.wait_until(:stack_update_complete, stack_name: stack_name)
|
86
86
|
end
|
87
87
|
rescue Aws::CloudFormation::Errors::ValidationError => error
|
88
88
|
if error.to_s.include? 'No updates are to be performed.'
|
89
|
-
puts 'Nothing to do.'
|
89
|
+
puts 'Nothing to do.' if ENV['DEBUG']
|
90
90
|
elsif error.to_s.include? 'Template error'
|
91
91
|
raise error
|
92
92
|
else
|
93
|
-
puts 'Creating a new stack'
|
93
|
+
puts 'Creating a new stack' if ENV['DEBUG']
|
94
94
|
@client.create_stack(stack_parameters)
|
95
95
|
@client.wait_until(:stack_create_complete, stack_name: stack_name)
|
96
96
|
end
|
@@ -77,7 +77,7 @@ class MinimalPipeline
|
|
77
77
|
't' => image_id,
|
78
78
|
'buildargs' => JSON.dump(build_args)
|
79
79
|
}
|
80
|
-
puts "Build args: #{args.inspect}"
|
80
|
+
puts "Build args: #{args.inspect}" if ENV['DEBUG']
|
81
81
|
::Docker.options[:read_timeout] = timeout
|
82
82
|
::Docker::Image.build_from_dir(dir, args) { |v| build_output(v) }
|
83
83
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'packer-config'
|
4
|
+
|
5
|
+
class MinimalPipeline
|
6
|
+
# Here is an example of how to use this class to build AMIs from Packer YAML
|
7
|
+
#
|
8
|
+
# ```
|
9
|
+
# Pass in the path to the Packer JSON config file
|
10
|
+
# packer = MinimalPipeline::Packer.new('path/to/packer.json')
|
11
|
+
#
|
12
|
+
# variables = {
|
13
|
+
# 'foo' => 'bar',
|
14
|
+
# }
|
15
|
+
#
|
16
|
+
# # Build the AMI and get the new AMI ID
|
17
|
+
# new_ami_id = packer.build_ami(variables)
|
18
|
+
# ```
|
19
|
+
class Packer
|
20
|
+
attr_accessor :config
|
21
|
+
|
22
|
+
# Instaniate a Packer object
|
23
|
+
#
|
24
|
+
# @param packer_config [String] Path to the JSON packer config file
|
25
|
+
def initialize(packer_config)
|
26
|
+
@config = packer_config
|
27
|
+
end
|
28
|
+
|
29
|
+
# Parse the newly built AMI from a given packer command output
|
30
|
+
#
|
31
|
+
# @param output [String] The command output of a packer run
|
32
|
+
# @return [String]
|
33
|
+
def get_ami_id(output)
|
34
|
+
return if output.nil? || output.empty?
|
35
|
+
output.match(/AMIs were created:\\nus-east-1: (ami-.+)\\n/)[1]
|
36
|
+
end
|
37
|
+
|
38
|
+
# Build and execute a packer build command
|
39
|
+
#
|
40
|
+
# @param variables [Hash] Optional key value pairs of packer variables
|
41
|
+
# @return [String]
|
42
|
+
def build_ami(variables = {})
|
43
|
+
variable_string = ''
|
44
|
+
|
45
|
+
variables.each_pair do |key, value|
|
46
|
+
variable_string += "-var '#{key}=#{value}' "
|
47
|
+
end
|
48
|
+
|
49
|
+
command = 'packer -machine-readable build '
|
50
|
+
command += variable_string unless variable_string.empty?
|
51
|
+
command += @config
|
52
|
+
puts command if ENV['DEBUG']
|
53
|
+
|
54
|
+
output = `#{command}`
|
55
|
+
get_ami_id(output)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/minimal_pipeline.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minimal_pipeline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mayowa Aladeojebi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-10-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
@@ -67,6 +67,20 @@ dependencies:
|
|
67
67
|
- - '='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: 0.1.7
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: packer-config
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.6.3
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 1.6.3
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: rake
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,7 @@ files:
|
|
108
122
|
- lib/minimal_pipeline/crossing.rb
|
109
123
|
- lib/minimal_pipeline/docker.rb
|
110
124
|
- lib/minimal_pipeline/keystore.rb
|
125
|
+
- lib/minimal_pipeline/packer.rb
|
111
126
|
homepage: https://github.com/stelligent/minimal-pipeline-gem
|
112
127
|
licenses:
|
113
128
|
- 0BSD
|