builderator 0.3.15 → 1.0.0.pre.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +440 -0
  4. data/README.md +72 -18
  5. data/Rakefile +1 -2
  6. data/VERSION +1 -1
  7. data/bin/build-clean +102 -0
  8. data/bin/build-data +45 -0
  9. data/builderator.gemspec +7 -4
  10. data/docs/configuration.md +154 -0
  11. data/docs/configuration/cookbook.md +19 -0
  12. data/docs/configuration/profile.md +71 -0
  13. data/docs/versioning.md +65 -0
  14. data/lib/builderator.rb +3 -0
  15. data/lib/builderator/config.rb +93 -0
  16. data/lib/builderator/config/attributes.rb +287 -0
  17. data/lib/builderator/config/defaults.rb +163 -0
  18. data/lib/builderator/config/file.rb +336 -0
  19. data/lib/builderator/config/rash.rb +80 -0
  20. data/lib/builderator/control/cleaner.rb +138 -0
  21. data/lib/builderator/control/cookbook.rb +16 -0
  22. data/lib/builderator/control/data.rb +16 -0
  23. data/lib/builderator/control/data/image.rb +98 -0
  24. data/lib/builderator/control/version.rb +128 -0
  25. data/lib/builderator/control/version/auto.rb +48 -0
  26. data/lib/builderator/control/version/bump.rb +82 -0
  27. data/lib/builderator/control/version/comparable.rb +77 -0
  28. data/lib/builderator/control/version/git.rb +45 -0
  29. data/lib/builderator/control/version/scm.rb +92 -0
  30. data/lib/builderator/interface.rb +67 -0
  31. data/lib/builderator/interface/berkshelf.rb +38 -0
  32. data/lib/builderator/interface/packer.rb +75 -0
  33. data/lib/builderator/interface/vagrant.rb +31 -0
  34. data/lib/builderator/metadata.rb +5 -3
  35. data/lib/builderator/model/cleaner.rb +49 -0
  36. data/lib/builderator/model/cleaner/images.rb +93 -0
  37. data/lib/builderator/model/cleaner/instances.rb +58 -0
  38. data/lib/builderator/model/cleaner/launch_configs.rb +47 -0
  39. data/lib/builderator/model/cleaner/scaling_groups.rb +45 -0
  40. data/lib/builderator/model/cleaner/snapshots.rb +50 -0
  41. data/lib/builderator/model/cleaner/volumes.rb +48 -0
  42. data/lib/builderator/patch/berkshelf.rb +18 -0
  43. data/lib/builderator/patch/thor-actions.rb +47 -0
  44. data/lib/builderator/tasks.rb +127 -17
  45. data/lib/builderator/tasks/berkshelf.rb +63 -0
  46. data/lib/builderator/tasks/packer.rb +17 -56
  47. data/lib/builderator/tasks/vagrant.rb +111 -42
  48. data/lib/builderator/tasks/vendor.rb +94 -0
  49. data/lib/builderator/tasks/version.rb +58 -0
  50. data/lib/builderator/util.rb +37 -11
  51. data/lib/builderator/util/aws_exception.rb +1 -1
  52. data/lib/builderator/util/limit_exception.rb +12 -11
  53. data/lib/builderator/util/task_exception.rb +0 -2
  54. data/mkmf.log +4 -0
  55. data/spec/config_spec.rb +30 -0
  56. data/spec/data/Berksfile +6 -0
  57. data/spec/data/Buildfile +0 -0
  58. data/spec/data/Vagrantfile +0 -0
  59. data/spec/data/history.json +483 -0
  60. data/spec/data/packer.json +0 -0
  61. data/spec/interface_spec.rb +36 -0
  62. data/spec/resource/Buildfile +27 -0
  63. data/spec/spec_helper.rb +90 -0
  64. data/spec/version_spec.rb +282 -0
  65. data/template/Berksfile.erb +10 -0
  66. data/template/Buildfile.erb +28 -0
  67. data/template/Gemfile.erb +16 -0
  68. data/template/README.md.erb +61 -0
  69. data/template/Vagrantfile.erb +75 -0
  70. data/template/gitignore.erb +104 -0
  71. data/{.rubocop.yml → template/rubocop.erb} +0 -0
  72. metadata +203 -56
  73. data/.gitignore +0 -14
  74. data/lib/builderator/control/ami.rb +0 -65
  75. data/lib/builderator/control/clean.rb +0 -130
  76. data/lib/builderator/model.rb +0 -46
  77. data/lib/builderator/model/images.rb +0 -89
  78. data/lib/builderator/model/instances.rb +0 -55
  79. data/lib/builderator/model/launch_configs.rb +0 -46
  80. data/lib/builderator/model/scaling_groups.rb +0 -43
  81. data/lib/builderator/model/snapshots.rb +0 -49
  82. data/lib/builderator/model/volumes.rb +0 -48
  83. data/lib/builderator/tasks/ami.rb +0 -47
  84. data/lib/builderator/tasks/berks.rb +0 -68
  85. data/lib/builderator/tasks/clean.rb +0 -97
  86. data/lib/builderator/util/berkshim.rb +0 -34
  87. data/lib/builderator/util/cookbook.rb +0 -87
  88. data/lib/builderator/util/packer.rb +0 -39
  89. data/lib/builderator/util/shell.rb +0 -44
@@ -0,0 +1,94 @@
1
+ require 'pathname'
2
+ require 'thor'
3
+
4
+ require_relative '../patch/thor-actions'
5
+ require_relative '../util'
6
+
7
+ module Builderator
8
+ module Tasks
9
+ ##
10
+ # Tasks to fetch and clean up remote artifacts
11
+ ##
12
+ class Vendor < Thor
13
+ include Thor::Actions
14
+
15
+ def self.exit_on_failure?
16
+ true
17
+ end
18
+
19
+ desc 'all', 'Fetch all vendor sources'
20
+ def all
21
+ Config.vendor.each { |name, _| fetch(name) }
22
+ end
23
+
24
+ desc 'clean [NAME]', 'Clean up vendor directories'
25
+ def clean(name = nil)
26
+ ## Clean up all vendors
27
+ return Config.vendor.each { |n, _| clean(n) } if name.nil?
28
+
29
+ remove_dir Util.vendor(name)
30
+ end
31
+
32
+ desc 'fetch NAME', 'Fetch vendor NAME from its source'
33
+ def fetch(name = :default)
34
+ empty_directory Util::VENDOR
35
+
36
+ path = Util.vendor(name)
37
+ params = Config.vendor(name)
38
+
39
+ if params.has?(:github)
40
+ say_status :vendor, "#{ name } from GitHub repository #{ params.github }"
41
+ _fetch_github(path, params)
42
+ elsif params.has?(:git)
43
+ say_status :vendor, "#{ name } from git repository #{ params.git }"
44
+ _fetch_git(path, params)
45
+ elsif params.has?(:path)
46
+ say_status :vendor, "#{ name } from path #{ params.path }"
47
+ _fetch_path(path, params)
48
+ end
49
+
50
+ ## Include any policies embedded in this vendor
51
+ Config.recompile
52
+ end
53
+
54
+ no_commands do
55
+ def _fetch_git(path, params)
56
+ empty_directory path
57
+
58
+ inside path do
59
+ ## Initialize new repository
60
+ unless path.join('.git').exist?
61
+ run 'git init'
62
+ run "git remote add origin #{ params.git }"
63
+ end
64
+
65
+ run 'git fetch origin --tags --prune'
66
+
67
+ ## Checkout reference
68
+ if params.has?(:tag) then run "git checkout #{ params.tag }"
69
+ elsif params.has?(:ref) then run "git checkout #{ params.ref }"
70
+ else ## specified branch or master
71
+ run "git checkout #{ params.fetch(:branch, 'master') }"
72
+
73
+ ## Only pull if a tracking branch is checked out
74
+ run 'git pull'
75
+ end
76
+
77
+ ## Apply relative subdirectory
78
+ run "git filter-branch --subdirectory-filter \"#{ params.rel }\" --force" if params.has?(:rel)
79
+ end
80
+ end
81
+
82
+ def _fetch_github(path, params)
83
+ params.git = "git@github.com:#{ params.github }.git"
84
+ _fetch_git(path, params)
85
+ end
86
+
87
+ def _fetch_path(path, params)
88
+ remove_dir path.to_s if path.exist?
89
+ create_link path.to_s, params.path.to_s
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,58 @@
1
+ require 'thor'
2
+
3
+ require_relative '../patch/thor-actions'
4
+ require_relative '../control/version'
5
+ require_relative '../util'
6
+
7
+ module Builderator
8
+ module Tasks
9
+ ##
10
+ # Tasks to detect and increment package versions
11
+ ##
12
+ class Version < Thor
13
+ include Thor::Actions
14
+
15
+ def self.exit_on_failure?
16
+ true
17
+ end
18
+
19
+ desc 'current', 'Print the current version and write it to file'
20
+ def current
21
+ unless Config.autoversion.search_tags
22
+ say_status :disabled, 'Automatically detecting version informantion '\
23
+ 'from SCM tags is disabled', :red
24
+ return
25
+ end
26
+
27
+ say_status :version, "#{Control::Version.current} (#{Control::Version.current.ref})"
28
+ Control::Version.write
29
+ Control::Version.set_config_version
30
+ end
31
+
32
+ desc 'bump TYPE [PRERELEASE_NAME]', 'Increment the package version, optionally with a named prerelease'
33
+ def bump(type = :auto, prerelease_name = nil)
34
+ ## Guard: Don't try to create a new version if `create_tags` is explicitly disabled
35
+ ## or `search_tags` is disabled as we won't have a valud current version to increment
36
+ unless Config.autoversion.create_tags && Config.autoversion.search_tags
37
+ say_status :disabled, 'Tag creation is disabled for this build. Not '\
38
+ 'creating new SCM tags!', :red
39
+
40
+ ## Try to read the current version anyway, incase `search_tags == true`
41
+ current
42
+
43
+ return
44
+ end
45
+
46
+ say_status :bump, "by #{type} version"
47
+ Control::Version.bump(type, prerelease_name)
48
+
49
+ ## Print the new version and write out a VERSION file
50
+ current
51
+
52
+ ## Try to create and push a tag
53
+ run "git tag #{Control::Version.current}"
54
+ run 'git push --tags'
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,8 +1,18 @@
1
1
  require 'pathname'
2
2
 
3
3
  module Builderator
4
+ ##
5
+ # Shared helper methods
6
+ ##
4
7
  module Util
8
+ GEM_PATH = Pathname.new(__FILE__).join('../../..').expand_path
9
+ WORKSPACE = '.builderator'.freeze
10
+ VENDOR = 'vendor'.freeze
11
+
5
12
  class << self
13
+ ##
14
+ # Transform helpers
15
+ ##
6
16
  def to_array(arg)
7
17
  arg.is_a?(Array) ? arg : [arg]
8
18
  end
@@ -11,6 +21,28 @@ module Builderator
11
21
  {}.tap { |tt| aws_tags.each { |t| tt[t.key.to_s] = t.value } }
12
22
  end
13
23
 
24
+ ##
25
+ # Relative path from working directory
26
+ ##
27
+ def relative_path(*relative)
28
+ Pathname.pwd.join(*(relative.flatten.map(&:to_s))).expand_path
29
+ end
30
+
31
+ def workspace(*relative)
32
+ relative_path(WORKSPACE, relative)
33
+ end
34
+
35
+ def vendor(*relative)
36
+ workspace(VENDOR, relative)
37
+ end
38
+
39
+ def source_path(*relative)
40
+ GEM_PATH.join(*(relative.flatten.map(&:to_s))).expand_path
41
+ end
42
+
43
+ ##
44
+ # Set-filter helpers
45
+ ##
14
46
  def filter(resources, filters = {})
15
47
  resources.select do |_, r|
16
48
  _filter_reduce(r, filters)
@@ -25,21 +57,15 @@ module Builderator
25
57
  resources
26
58
  end
27
59
 
28
- def region(arg = nil)
29
- return @region || 'us-east-1' if arg.nil?
30
- @region = arg
31
- end
32
-
60
+ ##
61
+ # AWS Clients
62
+ ##
33
63
  def ec2
34
- @ec2 ||= Aws::EC2::Client.new(:region => region)
64
+ @ec2 ||= Aws::EC2::Client.new(:region => Config.aws.region)
35
65
  end
36
66
 
37
67
  def asg
38
- @asg ||= Aws::AutoScaling::Client.new(:region => region)
39
- end
40
-
41
- def working_dir(relative = '.')
42
- Pathname.pwd.join(relative).expand_path
68
+ @asg ||= Aws::AutoScaling::Client.new(:region => Config.aws.region)
43
69
  end
44
70
 
45
71
  private
@@ -23,7 +23,7 @@ module Builderator
23
23
  end
24
24
 
25
25
  def message
26
- "An error occured executing performing task #{ task }. #{ operation }"\
26
+ "An error occured performing task #{ task }. #{ operation }"\
27
27
  "(#{ JSON.generate(parameters) }): #{ exception.message }"
28
28
  end
29
29
  end
@@ -6,12 +6,15 @@ module Builderator
6
6
  # Exception raised if a safety limit is exceeded
7
7
  ##
8
8
  class LimitException < TaskException
9
+ DEFAULT_LIMIT = 4
10
+
11
+ attr_reader :resource_name
9
12
  attr_reader :resources
10
13
 
11
- def initialize(klass, task, resources)
14
+ def initialize(resource_name, task, resources)
12
15
  super(:limit, task, :yellow)
13
16
 
14
- @klass = klass
17
+ @resource_name = resource_name
15
18
  @resources = resources
16
19
  end
17
20
 
@@ -20,18 +23,16 @@ module Builderator
20
23
  end
21
24
 
22
25
  def limit
23
- @klass::LIMIT
24
- end
25
-
26
- def resource
27
- @klass.name
26
+ Config.cleaner.limits[resource_name]
28
27
  end
29
28
 
30
29
  def message
31
- "Safety limit exceeded for task `#{ task }`: Count #{ count } is"\
32
- " greater than the limit of #{ limit } set in #{ resource }. Please"\
33
- " re-run this task with the --no-limit flag if you are sure this is"\
34
- " the correct set of resources to delete."
30
+ msg = "Safety limit exceeded for task `#{task}`: Count #{count} is "
31
+ msg << "greater than the limit of #{limit} set in `cleaner.limits.#{resource_name}`. "
32
+ msg << 'Please re-run this task with the --force flag if you are sure this is '\
33
+ 'the correct set of resources to delete.' unless Config.cleaner.force
34
+
35
+ msg
35
36
  end
36
37
  end
37
38
  end
@@ -4,11 +4,9 @@ module Builderator
4
4
  # Generic wrapper for exceptions in Thor Tasks
5
5
  ##
6
6
  class TaskException < StandardError
7
- attr_reader :status
8
7
  attr_reader :task
9
8
 
10
9
  def initialize(status, task, color = :red)
11
-
12
10
  @status = status
13
11
  @task = task
14
12
  @color = color
@@ -0,0 +1,4 @@
1
+ find_executable: checking for vagrant... -------------------- yes
2
+
3
+ --------------------
4
+
@@ -0,0 +1,30 @@
1
+ require_relative './spec_helper'
2
+
3
+ # :nodoc:
4
+ module Builderator
5
+ RSpec.describe Config, '#load' do
6
+ it 'loads a DSL file' do
7
+ expect(Config.layers.length).to eq 1
8
+ end
9
+
10
+ it 'compiles loaded DSL' do
11
+ layer = Config.layers.first
12
+ layer.compile.seal
13
+
14
+ expect(layer.build_name).to eq 'builderator'
15
+ expect(layer.autoversion.create_tags).to be false
16
+
17
+ ## Collection `depends` in Namespace `cookbook`
18
+ expect(layer.cookbook.depends['apt']).to be_kind_of(Config::Attributes::Namespace)
19
+ expect(layer.cookbook.depends['etcd-v2']).to be_kind_of(Config::Attributes::Namespace)
20
+ end
21
+
22
+ it 'compiles configuration layers' do
23
+ Config.compile
24
+
25
+ ## Ensure that layer-order is respected
26
+ expect(Config.aws.region).to eq 'us-east-1'
27
+ expect(Config.build_name).to eq 'builderator'
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,6 @@
1
+ require 'builderator/patch/berkshelf'
2
+
3
+ source 'https://supermarket.chef.io'
4
+
5
+ cookbook 'apt', '>= 0.0.0', {}
6
+ cookbook 'etcd-v2', '>= 0.0.0', {}
File without changes
File without changes
@@ -0,0 +1,483 @@
1
+ [
2
+ {
3
+ "id": "d6f0ae080a484b40687350110f15795bdcde6d7e",
4
+ "message": "In reset, check for the setter-method instead of the getter-method"
5
+ },
6
+ {
7
+ "id": "506d7d8d17c49d80c7d4e72cd7ebbe67c04d679d",
8
+ "message": "Add auto-version controller"
9
+ },
10
+ {
11
+ "id": "945beb804859749706f67268229fe991f496c41a",
12
+ "message": "Merge pull request #16 from rapid7/cleaner-refactor"
13
+ },
14
+ {
15
+ "id": "0b1b7a9fe1aa840b73fe9a0b96097967027cf6ab",
16
+ "message": "Fix cleaner CLI options. Pass AWS region to COnfig argv correctly"
17
+ },
18
+ {
19
+ "id": "a1d3dcbd91a0abff829f8f09337ddc257257e730",
20
+ "message": "Merge pull request #14 from rapid7/gemspec"
21
+ },
22
+ {
23
+ "id": "c3a0b2402ddf4084c175cc69793d592f8864daf1",
24
+ "message": "Add mixlib-shellout, remove mkfifo from gemspec dependencies"
25
+ },
26
+ {
27
+ "id": "a0213856213536f4b2ea8a75543b12e35b8cc52e",
28
+ "message": "Make thor-scmversion a dev dependency"
29
+ },
30
+ {
31
+ "id": "bc8dd9b9ceac207ef9b45613f66228aeef698dd0",
32
+ "message": "Add vagrant, berkshelf, and builderator state files as well as VERSION to gitignore"
33
+ },
34
+ {
35
+ "id": "723184617c594635c5191621e3b6a519609adcaf",
36
+ "message": "Merge pull request #11 from rapid7/interface"
37
+ },
38
+ {
39
+ "id": "560cea5ea897a2c9e6a484aa5ed95e1a0d81b9c9",
40
+ "message": "Add berkshelf_config parameter to berkshelf interface, and copy tags from profile to packer-builders in the packer interface"
41
+ },
42
+ {
43
+ "id": "89403f24e8a4a82ffa67eb941d5afefe55ced37a",
44
+ "message": "Fix packer build parameter name `ami_virtualization_type`"
45
+ },
46
+ {
47
+ "id": "91c4e2aea4f391c966fe5a2f049bed29d05783aa",
48
+ "message": "Don't try to template an embedded cookbook's Berksfile in berks tasks. We may handle that in cookbook tasks later on..."
49
+ },
50
+ {
51
+ "id": "6287a49d467a0a049a59e3a6f025373b529f0578",
52
+ "message": "Add node about packer assuming ubuntu user"
53
+ },
54
+ {
55
+ "id": "cd9b9d6738b25abb80d2256c76c9b8297f07009f",
56
+ "message": "Can't test Vafrantfile generator against a file with an absolute path"
57
+ },
58
+ {
59
+ "id": "ab703a9cfb4fdeea319a0de37c258cb803bbd5a4",
60
+ "message": "Rename write to render in interface/packer"
61
+ },
62
+ {
63
+ "id": "3f785e2f9306605d4574da8384e22e1bcd8c4c33",
64
+ "message": "Remove comment cruft at the bottom of interface/packer"
65
+ },
66
+ {
67
+ "id": "d9719348b177741a18a4e064a01767d1f7dd907f",
68
+ "message": "Adds a configuration parameter for a path to Berkshelf's config.json file (defaults to localtion in HOME), and removes invalid default for tags from the default packer configuration"
69
+ },
70
+ {
71
+ "id": "6d5778ab1b7ac7a8e73287c6e1ddb783a67ec395",
72
+ "message": "Ensure that Config is compiled before trying to get values from it"
73
+ },
74
+ {
75
+ "id": "2807c5881c4aa8f6a5beef2b5ba23e83d6a7ddf4",
76
+ "message": "Add a helper method to check if the project includes a cookbook"
77
+ },
78
+ {
79
+ "id": "1fed58c680c7cfd3bc53083d97a6346b2f0aa2a6",
80
+ "message": "Add a patch for Berksfiles to add gzip middleware to Faraday"
81
+ },
82
+ {
83
+ "id": "2fa5cb96b5fb13a4e0240dede3896c8a04079a37",
84
+ "message": "Add tests for Interface"
85
+ },
86
+ {
87
+ "id": "74e666d7d7c495eb5e837959fd681962779526dd",
88
+ "message": "Add creater/getters to Interface. Fix Vagrantfile template"
89
+ },
90
+ {
91
+ "id": "0e85b3e22da561272103435e5562ec77123ad428",
92
+ "message": "Document integration file changes"
93
+ },
94
+ {
95
+ "id": "58203268e7ea1074ba5edd637b4360349d059f66",
96
+ "message": "Add configuration interfaces and templates"
97
+ },
98
+ {
99
+ "id": "8c953123b65b53544468c43bac7fa2d6d379c1f2",
100
+ "message": "Merge pull request #12 from rapid7/cleaner-refactor"
101
+ },
102
+ {
103
+ "id": "ed1422283e31c694704ba9241066a8601f88b50d",
104
+ "message": "Don't tell users to re-run with --force if Config.cleaner.force is already true"
105
+ },
106
+ {
107
+ "id": "1a5ed1d683bce8e49a03245ec2b6f944918fa009",
108
+ "message": "Refactor warning messages to print limit, force, and commit warnings and stop-waits for every task"
109
+ },
110
+ {
111
+ "id": "5e0b2b24ba49e78699656a06c179f5088246dd61",
112
+ "message": "Favor fluent Config interface over hash-getters"
113
+ },
114
+ {
115
+ "id": "1745be5b51d85f520a8d41b15ef9df6b485aeb07",
116
+ "message": "Refactor model, controller, and exceptions to use Config"
117
+ },
118
+ {
119
+ "id": "2aeda487ec631e00701529e776633a34b97386c0",
120
+ "message": "Replace - with _ in keys when merging: makes loading CLI options much simpler"
121
+ },
122
+ {
123
+ "id": "5e3401f098653678febc41659eff15d9ca728984",
124
+ "message": "Add config parameters from cleaner CLI options and sane defaults"
125
+ },
126
+ {
127
+ "id": "662ca3dffcd50c9ddc600076feedc0d6593f221a",
128
+ "message": "Fix source name for argv layer"
129
+ },
130
+ {
131
+ "id": "9a5ecc7a57a642e12ec9279616ffb01f2a3c1011",
132
+ "message": "Use configuration sys-system for limits and AWS region"
133
+ },
134
+ {
135
+ "id": "35cd14da75b83a2162ad70610be28a886423de11",
136
+ "message": "Refactor clean tasks into their own CLI"
137
+ },
138
+ {
139
+ "id": "c926b1effd1ef30b48d7331cf62eef3d8b1ab53f",
140
+ "message": "Create build-clean executable and rename clean contorller to cleaner"
141
+ },
142
+ {
143
+ "id": "ed5c8f8460accd3db414f675893a037bb506f3e4",
144
+ "message": "Move module Model into Model::Cleaner"
145
+ },
146
+ {
147
+ "id": "880d43d45846d3f422b569b7a1f7cd769933b643",
148
+ "message": "Fix grammar in exception message"
149
+ },
150
+ {
151
+ "id": "543206c0c679671360de75761664f76a447972d9",
152
+ "message": "remove shadowed getter for `status`"
153
+ },
154
+ {
155
+ "id": "5a1d6913f1a348462f336013a7557647ef6cf4cb",
156
+ "message": "Merge pull request #9 from rapid7/configuration"
157
+ },
158
+ {
159
+ "id": "8d8b08acc05c20c8acff69eafe46914930288a54",
160
+ "message": "Clean up usage of method_missing and fix/dedup some getter code in attributes"
161
+ },
162
+ {
163
+ "id": "b04825102b97285b27b98e29a76183b54bb395b7",
164
+ "message": "First pass at adding RSpec tests"
165
+ },
166
+ {
167
+ "id": "0c14d1aa7218af12e5e6d8e0771981afd61d8747",
168
+ "message": "Remove data_bag and environment paths from defaults. These should be matched with a vendor config in a site or build-specific Buildfile"
169
+ },
170
+ {
171
+ "id": "bd6331500fcd9e0eac6983faf8628a6af5f3dc08",
172
+ "message": "Spelling"
173
+ },
174
+ {
175
+ "id": "fc19a72782b83962030b6ca1ee79da6da9ede372",
176
+ "message": "Adds a central configuration layer"
177
+ },
178
+ {
179
+ "id": "50d6d78e2c0b189380714221f56e068476ed47fc",
180
+ "message": "First pass at a composite configuration layer"
181
+ },
182
+ {
183
+ "id": "3ad70114e85745fe3fe6039d5b8d23e65b4bfde5",
184
+ "message": "Merge pull request #6 from rapid7/find_amazon_windows_baseami",
185
+ "tags": [
186
+ "0.3.15"
187
+ ]
188
+ },
189
+ {
190
+ "id": "13cd4aeeca1c87c607dddc654c798b4278e80818",
191
+ "message": "Support for finding the latest Windows AMI from Amazon (defaults to 2012 R2)"
192
+ },
193
+ {
194
+ "id": "560dffc6680b6ad633352b5f06a2445602c24f67",
195
+ "message": "Merge pull request #5 from rapid7/negative-filtering"
196
+ },
197
+ {
198
+ "id": "d6a6795a268531bd56df84ef49e104f950ad969e",
199
+ "message": "Implement negative resource filtering"
200
+ },
201
+ {
202
+ "id": "145f71212a2679763f0e45ac6e0bcc0dc7795146",
203
+ "message": "Exit the clean task with a non-zero code when errors occur to make Jenkins jobs fail."
204
+ },
205
+ {
206
+ "id": "0e5ab9fd83371e725614ec73b252b70b298c8eb0",
207
+ "message": "Merge pull request #4 from rapid7/complete-cleaner",
208
+ "tags": [
209
+ "0.3.14"
210
+ ]
211
+ },
212
+ {
213
+ "id": "29149adaa2286d35466b7a77761c8d4ab6eb5765",
214
+ "message": "Add API calls to delete resources"
215
+ },
216
+ {
217
+ "id": "19bc4022fdd8acdb8f36422d5b030e05aed7b581",
218
+ "message": "returned berkshelf to 3.2"
219
+ },
220
+ {
221
+ "id": "9100add6f6defd1e523709f63ffb30eabc905bb3",
222
+ "message": "revert berkshelf to 3.2"
223
+ },
224
+ {
225
+ "id": "94e8d1784e4215459288f343e8f1ff1319ce58f2",
226
+ "message": "updated berkshelf to 4.0.1"
227
+ },
228
+ {
229
+ "id": "a2e694f8e3954b24a8269a8957b920f2a4dea837",
230
+ "message": "updated berkshelf to 4.0 as berkshelf-api-clinet required to be on 2.0.0 to run"
231
+ },
232
+ {
233
+ "id": "3c438f6f1c3e4d6da11f19e7f9355a50170a478e",
234
+ "message": "Chef::Cookbook::Medata.from_json expects JSON, not a filepath",
235
+ "tags": [
236
+ "0.3.13"
237
+ ]
238
+ },
239
+ {
240
+ "id": "1e03d71f7f93861139bfc471cecd95b4c7e721da",
241
+ "message": "Handle Pathname obects in berks tasks",
242
+ "tags": [
243
+ "0.3.12"
244
+ ]
245
+ },
246
+ {
247
+ "id": "bf9581b0efef5585a6908c13b1d6224b56d7fc7a",
248
+ "message": "Merge pull request #3 from rapid7/cookbook-push",
249
+ "tags": [
250
+ "0.3.11"
251
+ ]
252
+ },
253
+ {
254
+ "id": "ea9927b2d5d4ea07deea4909a5dd13e249e11e46",
255
+ "message": "Require thor-scmversion in the Tasks module, not Util"
256
+ },
257
+ {
258
+ "id": "6be176bc0b2f7c0cb968b5ad9a331bc43bd5ee46",
259
+ "message": "Add build and push tasks for cookbooks"
260
+ },
261
+ {
262
+ "id": "8e6be1d6ac1347e6961e0a74a13ae3639414dcef",
263
+ "message": "Extend Chef::Cookbook::Metadata"
264
+ },
265
+ {
266
+ "id": "e7584e73c56aa9b32f4f57cd3ac13e6715d9bb53",
267
+ "message": "Bring in ignorefile"
268
+ },
269
+ {
270
+ "id": "e8d9dbe9962b933eac7eeb990729a17bd709ce63",
271
+ "message": "Add homepage to gemspec",
272
+ "tags": [
273
+ "0.3.10"
274
+ ]
275
+ },
276
+ {
277
+ "id": "31ba2630e260edc8ac0db80499bb46e2f053562a",
278
+ "message": "Merge pull request #2 from rapid7/fix-cookbook-path"
279
+ },
280
+ {
281
+ "id": "f4105a9bee4aeba116c54cc05d0e8a7643f4f775",
282
+ "message": "Fix cookbook path resolution"
283
+ },
284
+ {
285
+ "id": "9303364ba5e298271e4dde6317100fe84bcd49d6",
286
+ "message": "Some opinionated changes... -> Error message when executed outside of Bundler -> Name of CONSTANT that the gem path is stored in"
287
+ },
288
+ {
289
+ "id": "20106bebfb63163bbb899b2106f1174938c805e3",
290
+ "message": "Update vagrant version in config instructions"
291
+ },
292
+ {
293
+ "id": "bae8761a1b54bd3a26a3de2b4e013b9082684c81",
294
+ "message": "Add a helper to reference files relative to pwd"
295
+ },
296
+ {
297
+ "id": "d6075989bb7b7b7d4ef21bb0ba6134a07945b8dd",
298
+ "message": "Move packer helpers into Util namespace"
299
+ },
300
+ {
301
+ "id": "773c3cdd824d2c77bba13c2f4a8116404f589487",
302
+ "message": "Merge pull request #1 from rapid7/ec2-clean-tasks"
303
+ },
304
+ {
305
+ "id": "e4cc2f2531ccbfca956666956397ddb140c1fe5e",
306
+ "message": "Whelp, the launch config cleaner seemed to work..."
307
+ },
308
+ {
309
+ "id": "2b748d8aee8d8b2de2529a1ecceb319108bf9084",
310
+ "message": "Fix packer install/build paths",
311
+ "tags": [
312
+ "0.3.9"
313
+ ]
314
+ },
315
+ {
316
+ "id": "5ba1233d6b6278777a57f7920d3d139c339464f8",
317
+ "message": "Use AwsException in Clean controller"
318
+ },
319
+ {
320
+ "id": "99ca8ec34d98beca0ded33091e311a5a83fb131b",
321
+ "message": "Fix argument lists passed to invocations in the 'all' task"
322
+ },
323
+ {
324
+ "id": "4d664756ef6d13aac9fbf3f6010d5b06c9ea41df",
325
+ "message": "Add a wrapper exception for AWS-SDK service errors"
326
+ },
327
+ {
328
+ "id": "c24a83c7a0645c76c6e39dc055cf999197a62486",
329
+ "message": "Abstract the status method from LimitException into a generic TaskException class that cen be reused for other Thor task exceptions"
330
+ },
331
+ {
332
+ "id": "072dd13091ccbac2fca30302c3a6795d1043f6ad",
333
+ "message": "Add exception handling to the Clean controller"
334
+ },
335
+ {
336
+ "id": "c32f0ea60f395226b913528263acbe9281fafd41",
337
+ "message": "Add default to reject argument"
338
+ },
339
+ {
340
+ "id": "94a41faef678fbf86a459b2922185d8b264332fc",
341
+ "message": "Fix class header comment, override the safety LIMIT constant for several resources"
342
+ },
343
+ {
344
+ "id": "e241d71098c9fdca904ff2a243bd845eab38ae7f",
345
+ "message": "Clean up data model and logic that determines if a resource is in use"
346
+ },
347
+ {
348
+ "id": "bd0b2585263d25de51d6582443fc2dd5c5602dd7",
349
+ "message": "Starting usage docs for clean tasks"
350
+ },
351
+ {
352
+ "id": "861b642a63342b4d51c5535bf419f01145cb6ecb",
353
+ "message": "First pass at tasks to clean up abandoned EC2 resources"
354
+ },
355
+ {
356
+ "id": "f0b7b990ac953eaccc5725ec498be00ffb0550fe",
357
+ "message": "Move AWS clients into util"
358
+ },
359
+ {
360
+ "id": "1d9120c0621a020fac5a65b952578031e6d0340c",
361
+ "message": "Fix AMI ID matching logic in packer:build"
362
+ },
363
+ {
364
+ "id": "bfb61e34baa264a11a9022e8867e1b1755979bea",
365
+ "message": "Bump version",
366
+ "tags": [
367
+ "0.3.8"
368
+ ]
369
+ },
370
+ {
371
+ "id": "c6893e182bf1e56766094ae5bc515e6557c1a5a9",
372
+ "message": "Add option to disable version:current task"
373
+ },
374
+ {
375
+ "id": "f490a14a428db458be63748da544547956babb36",
376
+ "message": "Bump version",
377
+ "tags": [
378
+ "0.3.7"
379
+ ]
380
+ },
381
+ {
382
+ "id": "fa6883ba10217ae8347ec90c96942814f07bc28e",
383
+ "message": "Fix berksfile finder logic"
384
+ },
385
+ {
386
+ "id": "67d8551a5a3da923ef155161e90d924a48cbeb8a",
387
+ "message": "Bump version",
388
+ "tags": [
389
+ "0.3.6"
390
+ ]
391
+ },
392
+ {
393
+ "id": "db948f53914ca08df25adb077cee6b4bfb2e8b2d",
394
+ "message": "Fix packer:find_ami task"
395
+ },
396
+ {
397
+ "id": "e231d947bcc70d4bf0fad231f8ff2a0ce520b844",
398
+ "message": "Bump version",
399
+ "tags": [
400
+ "0.3.5"
401
+ ]
402
+ },
403
+ {
404
+ "id": "b3d75ec63987368009942092de38f16dbd716e82",
405
+ "message": "Update packer:install to use 0.8.1"
406
+ },
407
+ {
408
+ "id": "468e7515ad88fa61c0f59a1a599d3da69ce549ce",
409
+ "message": "Bump version",
410
+ "tags": [
411
+ "0.3.4"
412
+ ]
413
+ },
414
+ {
415
+ "id": "671e874ef03fa9dd35f45f264a1fd60eafad5ac1",
416
+ "message": "Use Dir to find bin scripts in gemspec"
417
+ },
418
+ {
419
+ "id": "fbab43f58cc54d5ab58bd43293360b91e4b8fc49",
420
+ "message": "Add output capture from Packer to find AMI ids"
421
+ },
422
+ {
423
+ "id": "5816a03973e2c8ba734b3aea85cfda458bcdceee",
424
+ "message": "Add execution checks for Bundler and Vagrant"
425
+ },
426
+ {
427
+ "id": "52742381f8f3cfa8f5079d55439e0fa3c4b05521",
428
+ "message": "Add VERSION file to git repo while this is in development",
429
+ "tags": [
430
+ "0.3.3"
431
+ ]
432
+ },
433
+ {
434
+ "id": "d33519df2a10d134c454fa05a7a91e445cae7fb4",
435
+ "message": "Pass options from berks upload to berks local"
436
+ },
437
+ {
438
+ "id": "abafd9de16c6a77f989d33a00037060a80a73f11",
439
+ "message": "Run Berks install before upload. Upload requires a Berksfile.lock",
440
+ "tags": [
441
+ "0.3.2"
442
+ ]
443
+ },
444
+ {
445
+ "id": "6ad2938a70d3f0b1ff9578d116c88ea3e615b7e2",
446
+ "message": "Fix thor-scmversion invocation in cookbook tasks",
447
+ "tags": [
448
+ "0.3.1"
449
+ ]
450
+ },
451
+ {
452
+ "id": "51aa9de31c98873b101aeaeac3b83ce99c1169d8",
453
+ "message": "Add more tasks to wrap berkshelf, and vagrant",
454
+ "tags": [
455
+ "0.3.0"
456
+ ]
457
+ },
458
+ {
459
+ "id": "17a514cf3eedcb143472c4351cb84ca695bbd68a",
460
+ "message": "Add first packer tasks, seperate shared logic from tasks, complete ami tasks",
461
+ "tags": [
462
+ "0.2.0"
463
+ ]
464
+ },
465
+ {
466
+ "id": "7b11c43da2dd90f9cfd28f1e2d12590e716f4bfe",
467
+ "message": "Fix handling of multiple results",
468
+ "tags": [
469
+ "0.1.1"
470
+ ]
471
+ },
472
+ {
473
+ "id": "760040713d5b59981c639dd9523b7e2d8a24c8ba",
474
+ "message": "Basic Ubuntu iamge lookup",
475
+ "tags": [
476
+ "0.1.0"
477
+ ]
478
+ },
479
+ {
480
+ "id": "0893bfd3477c1373e2beeb53cf5f872ee70c0a91",
481
+ "message": "Starting Gem"
482
+ }
483
+ ]