man_eb_deployer 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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