man_eb_deployer 0.8.0

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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/release.yml +31 -0
  3. data/.github/workflows/test.yml +16 -0
  4. data/.gitignore +12 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/CHANGELOG.md +143 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE +22 -0
  10. data/README.md +138 -0
  11. data/Rakefile +12 -0
  12. data/TODOS.md +11 -0
  13. data/bin/eb_deploy +13 -0
  14. data/eb_deployer.gemspec +22 -0
  15. data/lib/eb_deployer/application.rb +96 -0
  16. data/lib/eb_deployer/aws_driver/beanstalk.rb +158 -0
  17. data/lib/eb_deployer/aws_driver/cloud_formation_driver.rb +53 -0
  18. data/lib/eb_deployer/aws_driver/s3_driver.rb +35 -0
  19. data/lib/eb_deployer/aws_driver.rb +8 -0
  20. data/lib/eb_deployer/cf_event_source.rb +26 -0
  21. data/lib/eb_deployer/cloud_formation_provisioner.rb +120 -0
  22. data/lib/eb_deployer/component.rb +45 -0
  23. data/lib/eb_deployer/config_loader.rb +64 -0
  24. data/lib/eb_deployer/default_component.rb +32 -0
  25. data/lib/eb_deployer/default_config.rb +20 -0
  26. data/lib/eb_deployer/default_config.yml +159 -0
  27. data/lib/eb_deployer/deployment_strategy/blue_green.rb +79 -0
  28. data/lib/eb_deployer/deployment_strategy/blue_only.rb +45 -0
  29. data/lib/eb_deployer/deployment_strategy/inplace_update.rb +16 -0
  30. data/lib/eb_deployer/deployment_strategy.rb +20 -0
  31. data/lib/eb_deployer/eb_environment.rb +204 -0
  32. data/lib/eb_deployer/eb_event_source.rb +35 -0
  33. data/lib/eb_deployer/environment.rb +60 -0
  34. data/lib/eb_deployer/event_poller.rb +51 -0
  35. data/lib/eb_deployer/package.rb +39 -0
  36. data/lib/eb_deployer/resource_stacks.rb +20 -0
  37. data/lib/eb_deployer/smoke_test.rb +23 -0
  38. data/lib/eb_deployer/tasks.rb +45 -0
  39. data/lib/eb_deployer/throttling_handling.rb +17 -0
  40. data/lib/eb_deployer/utils.rb +33 -0
  41. data/lib/eb_deployer/version.rb +3 -0
  42. data/lib/eb_deployer/version_cleaner.rb +30 -0
  43. data/lib/eb_deployer.rb +339 -0
  44. data/lib/generators/eb_deployer/install/install_generator.rb +82 -0
  45. data/lib/generators/eb_deployer/install/templates/eb_deployer.rake +1 -0
  46. data/lib/generators/eb_deployer/install/templates/eb_deployer.yml.erb +181 -0
  47. data/lib/generators/eb_deployer/install/templates/ebextensions/01_postgres_packages.config +5 -0
  48. data/lib/generators/eb_deployer/install/templates/postgres_rds.json +88 -0
  49. data/test/aws_driver_stubs.rb +350 -0
  50. data/test/beanstalk_test.rb +23 -0
  51. data/test/blue_green_deploy_test.rb +114 -0
  52. data/test/blue_only_deploy_test.rb +78 -0
  53. data/test/cf_event_poller_test.rb +32 -0
  54. data/test/cloud_formation_provisioner_test.rb +47 -0
  55. data/test/config_loader_test.rb +205 -0
  56. data/test/deploy_test.rb +42 -0
  57. data/test/eb_environment_test.rb +120 -0
  58. data/test/eb_event_poller_test.rb +32 -0
  59. data/test/inplace_update_deploy_test.rb +110 -0
  60. data/test/multi_components_deploy_test.rb +164 -0
  61. data/test/rails_generators_test.rb +67 -0
  62. data/test/resources_deploy_test.rb +191 -0
  63. data/test/smoke_test_test.rb +23 -0
  64. data/test/template_deploy_test.rb +13 -0
  65. data/test/test_helper.rb +68 -0
  66. data/test/tier_setting_deploy_test.rb +24 -0
  67. data/test/versions_deploy_test.rb +120 -0
  68. metadata +176 -0
@@ -0,0 +1,120 @@
1
+ require 'deploy_test'
2
+
3
+ class VersionsDeployTest < DeployTest
4
+
5
+ def test_deployment_with_s3_package_specification
6
+ File.open('mingle_package.yml', 'w') do |f|
7
+ f.write("s3_bucket: test-bucket\n")
8
+ f.write("s3_key: test-mingle.war")
9
+ end
10
+
11
+ deploy(:application => 'simple', :environment => "production",
12
+ :package => 'mingle_package.yml', :version_label => 1)
13
+ assert @eb.application_exists?('simple')
14
+ last_version = @eb.application_versions('simple').last
15
+ assert_equal({'s3_bucket' => 'test-bucket', 's3_key' => 'test-mingle.war'}, last_version[:source_bundle])
16
+ ensure
17
+ FileUtils.rm_rf('mingle_package.yml')
18
+ end
19
+
20
+
21
+
22
+ def test_version_prefix_should_be_prepended_to_version_label
23
+ deploy(:application => 'simple',
24
+ :environment => "production",
25
+ :version_label => 1,
26
+ :version_prefix => "prod-")
27
+ assert_equal 'prod-1', @eb.environment_verion_label('simple', t('production', 'simple'))
28
+ end
29
+
30
+ def test_should_keep_only_number_of_versions_specified
31
+ deploy(:application => 'simple',
32
+ :environment => "production",
33
+ :version_label => 1)
34
+
35
+ deploy(:application => 'simple',
36
+ :environment => "production",
37
+ :version_label => 2)
38
+
39
+ deploy(:application => 'simple',
40
+ :environment => "production",
41
+ :version_label => 3,
42
+ :keep_latest => 2)
43
+
44
+ assert_equal '1', @eb.versions_deleted('simple').first
45
+ end
46
+
47
+ def test_should_only_remove_versions_with_matching_prefix
48
+ deploy(:application => 'simple',
49
+ :environment => "production",
50
+ :version_label => 1,
51
+ :version_prefix => "prod1-",
52
+ :keep_latest => 1)
53
+ deploy(:application => 'simple',
54
+ :environment => "production",
55
+ :version_label => 2,
56
+ :version_prefix => "prod1-",
57
+ :keep_latest => 1)
58
+ deploy(:application => 'simple',
59
+ :environment => "production",
60
+ :version_label => 1,
61
+ :version_prefix => "prod2-",
62
+ :keep_latest => 1)
63
+
64
+ assert_equal 'prod1-1', @eb.versions_deleted('simple').first
65
+ assert_equal 1, @eb.versions_deleted('simple').count
66
+
67
+ app_versions = @eb.application_versions('simple').map { |apv| apv[:version_label] }
68
+ assert_equal ["prod1-2", "prod2-1"], app_versions
69
+ end
70
+
71
+ def test_default_cname_that_deployed_should_app_env_name
72
+ deploy(:application => 'simple',
73
+ :environment => "production",
74
+ :version_label => 42)
75
+ assert_equal "simple-production", @eb.environment_cname_prefix('simple', t('production', 'simple'))
76
+ end
77
+
78
+ def test_cname_prefix_can_be_override
79
+ deploy(:application => 'simple',
80
+ :environment => "production",
81
+ :cname_prefix => 'sports123',
82
+ :version_label => 42)
83
+ assert_equal "sports123", @eb.environment_cname_prefix('simple', t('production', 'simple'))
84
+ end
85
+
86
+ def test_pass_s3_object_name_as_package_file
87
+ package_name = 'test-bucket:test-mingle.war'
88
+
89
+ deploy(:package => package_name,
90
+ :application => 'simple',
91
+ :environment => "production",
92
+ :version_label => 1)
93
+
94
+ assert @eb.application_exists?('simple')
95
+ last_version = @eb.application_versions('simple').last
96
+ assert_equal({'s3_bucket' => 'test-bucket', 's3_key' => 'test-mingle.war'}, last_version[:source_bundle])
97
+ end
98
+
99
+ def test_set_s3_bucket_name_on_deployment
100
+ deploy(:application => 'simple',
101
+ :environment => "production",
102
+ :package_bucket => 'thoughtworks.simple')
103
+
104
+ assert @s3_driver.bucket_exists?('thoughtworks.simple.packages')
105
+ end
106
+
107
+
108
+ def test_pass_pathname_as_package_file
109
+ deploy(:package => Pathname.new(@sample_package),
110
+ :application => 'simple',
111
+ :environment => "production",
112
+ :package_bucket => 'thoughtworks.simple')
113
+
114
+ s3_objects = @s3_driver.objects('thoughtworks.simple.packages')
115
+ assert_equal 1, s3_objects.size
116
+ assert_equal @sample_package, s3_objects.values.first.to_s
117
+ end
118
+
119
+
120
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: man_eb_deployer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - wpc
8
+ - betarelease
9
+ - xli
10
+ - manheim
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2023-10-17 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: aws-sdk-cloudformation
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: aws-sdk-elasticbeanstalk
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '1.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: aws-sdk-s3
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '1.0'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '1.0'
58
+ description: For automating Blue-Green deployment flows on Elastic Beanstalk.
59
+ email:
60
+ - 'tooling@manheim.com '
61
+ executables:
62
+ - eb_deploy
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - ".github/workflows/release.yml"
67
+ - ".github/workflows/test.yml"
68
+ - ".gitignore"
69
+ - ".ruby-gemset"
70
+ - ".ruby-version"
71
+ - CHANGELOG.md
72
+ - Gemfile
73
+ - LICENSE
74
+ - README.md
75
+ - Rakefile
76
+ - TODOS.md
77
+ - bin/eb_deploy
78
+ - eb_deployer.gemspec
79
+ - lib/eb_deployer.rb
80
+ - lib/eb_deployer/application.rb
81
+ - lib/eb_deployer/aws_driver.rb
82
+ - lib/eb_deployer/aws_driver/beanstalk.rb
83
+ - lib/eb_deployer/aws_driver/cloud_formation_driver.rb
84
+ - lib/eb_deployer/aws_driver/s3_driver.rb
85
+ - lib/eb_deployer/cf_event_source.rb
86
+ - lib/eb_deployer/cloud_formation_provisioner.rb
87
+ - lib/eb_deployer/component.rb
88
+ - lib/eb_deployer/config_loader.rb
89
+ - lib/eb_deployer/default_component.rb
90
+ - lib/eb_deployer/default_config.rb
91
+ - lib/eb_deployer/default_config.yml
92
+ - lib/eb_deployer/deployment_strategy.rb
93
+ - lib/eb_deployer/deployment_strategy/blue_green.rb
94
+ - lib/eb_deployer/deployment_strategy/blue_only.rb
95
+ - lib/eb_deployer/deployment_strategy/inplace_update.rb
96
+ - lib/eb_deployer/eb_environment.rb
97
+ - lib/eb_deployer/eb_event_source.rb
98
+ - lib/eb_deployer/environment.rb
99
+ - lib/eb_deployer/event_poller.rb
100
+ - lib/eb_deployer/package.rb
101
+ - lib/eb_deployer/resource_stacks.rb
102
+ - lib/eb_deployer/smoke_test.rb
103
+ - lib/eb_deployer/tasks.rb
104
+ - lib/eb_deployer/throttling_handling.rb
105
+ - lib/eb_deployer/utils.rb
106
+ - lib/eb_deployer/version.rb
107
+ - lib/eb_deployer/version_cleaner.rb
108
+ - lib/generators/eb_deployer/install/install_generator.rb
109
+ - lib/generators/eb_deployer/install/templates/eb_deployer.rake
110
+ - lib/generators/eb_deployer/install/templates/eb_deployer.yml.erb
111
+ - lib/generators/eb_deployer/install/templates/ebextensions/01_postgres_packages.config
112
+ - lib/generators/eb_deployer/install/templates/postgres_rds.json
113
+ - test/aws_driver_stubs.rb
114
+ - test/beanstalk_test.rb
115
+ - test/blue_green_deploy_test.rb
116
+ - test/blue_only_deploy_test.rb
117
+ - test/cf_event_poller_test.rb
118
+ - test/cloud_formation_provisioner_test.rb
119
+ - test/config_loader_test.rb
120
+ - test/deploy_test.rb
121
+ - test/eb_environment_test.rb
122
+ - test/eb_event_poller_test.rb
123
+ - test/inplace_update_deploy_test.rb
124
+ - test/multi_components_deploy_test.rb
125
+ - test/rails_generators_test.rb
126
+ - test/resources_deploy_test.rb
127
+ - test/smoke_test_test.rb
128
+ - test/template_deploy_test.rb
129
+ - test/test_helper.rb
130
+ - test/tier_setting_deploy_test.rb
131
+ - test/versions_deploy_test.rb
132
+ homepage: https://github.com/manheim/eb_deployer
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubygems_version: 3.3.5
152
+ signing_key:
153
+ specification_version: 4
154
+ summary: Low friction deployments should be a breeze. Elastic Beanstalk provides a
155
+ great foundation for performing Blue-Green deployments, and EbDeployer add a missing
156
+ top to automate the whole flow out of the box.
157
+ test_files:
158
+ - test/aws_driver_stubs.rb
159
+ - test/beanstalk_test.rb
160
+ - test/blue_green_deploy_test.rb
161
+ - test/blue_only_deploy_test.rb
162
+ - test/cf_event_poller_test.rb
163
+ - test/cloud_formation_provisioner_test.rb
164
+ - test/config_loader_test.rb
165
+ - test/deploy_test.rb
166
+ - test/eb_environment_test.rb
167
+ - test/eb_event_poller_test.rb
168
+ - test/inplace_update_deploy_test.rb
169
+ - test/multi_components_deploy_test.rb
170
+ - test/rails_generators_test.rb
171
+ - test/resources_deploy_test.rb
172
+ - test/smoke_test_test.rb
173
+ - test/template_deploy_test.rb
174
+ - test/test_helper.rb
175
+ - test/tier_setting_deploy_test.rb
176
+ - test/versions_deploy_test.rb