jumpup-deis 0.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 531635c07a6aca428890cf81e5064d314aed711e
4
+ data.tar.gz: ac2100e82b07ea06fe6ca263ad6230cb0ba088ce
5
+ SHA512:
6
+ metadata.gz: c7a23ca29e78880aa80d07819a3767e21a23add1bf79cd72852a59e872c528742bd36e795922fe77da2522f10dd5777bb9961e90fcec78cedcfa2fd1117e7644
7
+ data.tar.gz: cb8a33efc40d34042473cc2eba5ef4755ea03eea0cb079db7b893b3ae7147a3afb18b9e448d3b77919ec870952691c0fa554271fba5a7fac36f6754cb22ce299
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ jumpup-deis
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.0
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## 0.0.1 (September 16, 2014)
4
+
5
+ Initial release based on [jumpup-heroku](https://github.com/Helabs/jumpup-heroku)
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,31 @@
1
+ # Contributing
2
+
3
+ We love pull requests. Here's a quick guide:
4
+
5
+ 1. Fork the repo.
6
+
7
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
8
+
9
+ 3. Run the tests. We only take pull requests with passing tests, and it's great
10
+ to know that you have a clean slate: `bundle && rake`
11
+
12
+ 4. Add a test for your change. Only refactoring and documentation changes
13
+ require no new tests. If you are adding functionality or fixing a bug, we need
14
+ a test!
15
+
16
+ 5. Make the test pass.
17
+
18
+ 6. Update [CHANGELOG.md](https://github.com/Helabs/jumpup-deis/blob/master/CHANGELOG.md) with a brief description of your changes under the `unreleased` heading.
19
+
20
+ 7. Commit your changes (`git commit -am 'Added some feature'`)
21
+
22
+ 8. Push to the branch (`git push origin my-new-feature`)
23
+
24
+ 9. Create new Pull Request
25
+
26
+ At this point you're waiting on us. We like to at least comment on, if not
27
+ accept, pull requests within three business days (and, typically, one business
28
+ day). We may suggest some changes or improvements or alternatives.
29
+
30
+ Some things that will increase the chance that your pull request is accepted is to follow the practices described on [Ruby style guide](https://github.com/bbatsov/ruby-style-guide), [Rails style guide](https://github.com/bbatsov/rails-style-guide) and [Better Specs](http://betterspecs.org/).
31
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jumpup-deis.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 HE:labs
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,129 @@
1
+ # Jumpup-deis
2
+ [![RubyGems][gem_version_badge]][ruby_gems]
3
+ [![Code Climate](https://codeclimate.com/github/Helabs/jumpup-deis.png)](https://codeclimate.com/github/Helabs/jumpup-deis)
4
+ [![Dependency Status](https://gemnasium.com/Helabs/jumpup-deis.svg)](https://gemnasium.com/Helabs/jumpup-deis)
5
+
6
+ Rake tasks to deploy any Rails application to [Deis](http://deis.io/) using [Jumpup](https://github.com/Helabs/jumpup).
7
+
8
+ ## Instalation
9
+
10
+ Add to your gem file.
11
+
12
+ ```ruby
13
+ gem 'jumpup-deis'
14
+ ```
15
+
16
+ Without groups on Gemfile as this gem makes use of an initializer.
17
+
18
+ ## Usage
19
+
20
+ 1. Create the initializer on `config/initializers/jumpup-deis.rb`
21
+
22
+ ```ruby
23
+ # config/initializers/jumpup-deis.rb
24
+ Jumpup::Deis.configure do |config|
25
+ config.host = 'deis.mycompany.com'
26
+ config.app = 'myapp'
27
+ end if Rails.env.development?
28
+ ```
29
+
30
+ 2. Add to the tasks on jumpup.rake the tasks to deploy to Deis:
31
+
32
+ ```ruby
33
+ # lib/tasks/jumpup.rake
34
+
35
+ INTEGRATION_TASKS = %w(
36
+ jumpup:deis:start
37
+ jumpup:start
38
+ jumpup:bundle_install
39
+ db:migrate
40
+ spec
41
+ jumpup:finish
42
+ jumpup:deis:finish
43
+ )
44
+ ```
45
+
46
+ ### Production and staging apps
47
+
48
+ Have production and staging app? Do like this:
49
+
50
+ ```ruby
51
+ Jumpup::Deis.configure do |config|
52
+ config.host = 'deis.mycompany.com'
53
+ config.staging_app = 'myapp-staging'
54
+ config.production_app = 'myapp'
55
+ end if Rails.env.development?
56
+ ```
57
+ The branch send to staging app is `master` and the branch send to production is the `production`.
58
+
59
+ ### Deploy to production
60
+
61
+ #### When I have a single app
62
+
63
+ Run ```rake jumpup:deis:deploy:production``` or as an alias ```rake integrate:production```
64
+
65
+ #### When I have staging and production apps
66
+
67
+ We have the following config
68
+
69
+ | Branch | App Environment |
70
+ | ------------- |-----------------|
71
+ | master | staging |
72
+ | production | production |
73
+
74
+ So to send to production we need to
75
+
76
+ ```bash
77
+ $ git checkout production
78
+ $ git merge master
79
+ $ git push -u origin production
80
+ ```
81
+
82
+ And send to Deis with ```rake jumpup:deis:deploy:production``` or as an alias ```rake integrate:production```
83
+
84
+ ## Versioning
85
+
86
+ Jumpup-deis follow the [Semantic Versioning](http://semver.org/).
87
+
88
+ ## Issues
89
+
90
+ If you have problems, please create a [Github Issue](https://github.com/Helabs/jumpup-deis/issues).
91
+
92
+ ## Contributing
93
+
94
+ Please see [CONTRIBUTING.md](https://github.com/Helabs/jumpup-deis/blob/master/CONTRIBUTING.md) for details.
95
+
96
+ ## Maintainers
97
+
98
+ - [Anézio Campos](https://github.com/aneziocampos)
99
+ - [Rafael Fiuza](https://github.com/guiloyins)
100
+
101
+ ## Release
102
+
103
+ Follow this steps to release a new version of the gem.
104
+
105
+ 1. Test if everything is running ok;
106
+ 1. Change version of the gem on `VERSION` constant;
107
+ 1. Add the release date on the `CHANGELOG`;
108
+ 1. Do a commit "Bump version x.x.x", follow the semantic version;
109
+ 1. Run `$ rake release`, this will send the gem to the rubygems;
110
+ 1. Check if the gem is on the rubygems and the tags are correct on the github;
111
+
112
+ ## Credits
113
+
114
+ Jumpup-deis is maintained and funded by [HE:labs](http://helabs.com.br/opensource/).
115
+ Thank you to all the [contributors](https://github.com/Helabs/jumpup-deis/graphs/contributors).
116
+
117
+ ## License
118
+
119
+ Jumpup-deis is Copyright © 2014 HE:labs. It is free software, and may be redistributed under the terms specified in the LICENSE file.
120
+
121
+ [gem_version_badge]: https://badge.fury.io/rb/jumpup-deis.png
122
+ [ruby_gems]: http://rubygems.org/gems/jumpup-deis
123
+
124
+
125
+ ## Made with love by HE:labs
126
+
127
+ ![HE:labs](http://helabs.com.br/images/logo.png)
128
+
129
+ This gem was created and is maintained by [HE:labs](https://github.com/Helabs).
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core'
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = FileList['spec/**/*_spec.rb']
7
+ end
8
+
9
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
10
+ spec.pattern = 'spec/**/*_spec.rb'
11
+ spec.rcov = true
12
+ end
13
+
14
+ task :default => :spec
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'jumpup/deis/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "jumpup-deis"
8
+ spec.version = Jumpup::Deis::VERSION
9
+ spec.authors = ["HE:labs"]
10
+ spec.email = ["tech@helabs.com.br"]
11
+ spec.description = %q{Rake tasks to deploy on deis}
12
+ spec.summary = %q{Rake tasks to deploy on deis}
13
+ spec.homepage = "https://github.com/Helabs/jumpup-deis"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 3.1.0"
24
+ spec.add_development_dependency "pry", "0.9.12.4"
25
+ end
@@ -0,0 +1,13 @@
1
+ require "jumpup/deis/version"
2
+
3
+ module Jumpup
4
+ module Deis
5
+ require 'jumpup/deis/errors'
6
+ require 'jumpup/deis/configuration'
7
+ require 'jumpup/deis/env'
8
+ require 'jumpup/deis/integrate'
9
+ end
10
+ end
11
+
12
+ gem_path = Gem::Specification.find_by_name('jumpup-deis').full_gem_path
13
+ Dir["#{gem_path}/lib/tasks/*.rake"].each { |ext| load ext } if defined?(Rake)
@@ -0,0 +1,55 @@
1
+ module Jumpup
2
+ module Deis
3
+
4
+ class << self
5
+ attr_accessor :configuration
6
+ end
7
+
8
+ def self.configure
9
+ self.configuration ||= Configuration.new
10
+ yield(configuration)
11
+ end
12
+
13
+
14
+ class Configuration
15
+ attr_accessor :app, :staging_app, :production_app, :run_database_tasks, :host
16
+
17
+ def initialize
18
+ @run_database_tasks ||= true
19
+ end
20
+
21
+ def valid?
22
+ host_is_set? &&
23
+ boolean_run_database_tasks? &&
24
+ (only_app? || only_production_and_staging_apps?)
25
+ end
26
+
27
+ def deploy_branch
28
+ 'master'
29
+ end
30
+
31
+ def deploy_to_production_branch
32
+ return 'production' if production_app
33
+ 'master'
34
+ end
35
+
36
+ private
37
+
38
+ def host_is_set?
39
+ not host.nil?
40
+ end
41
+
42
+ def only_app?
43
+ app && staging_app.nil? && production_app.nil?
44
+ end
45
+
46
+ def only_production_and_staging_apps?
47
+ staging_app && production_app && app.nil?
48
+ end
49
+
50
+ def boolean_run_database_tasks?
51
+ run_database_tasks.is_a?(TrueClass) || run_database_tasks.is_a?(FalseClass)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,27 @@
1
+ module Jumpup
2
+ module Deis
3
+
4
+ class Env
5
+
6
+ def self.all
7
+ if Jumpup::Deis.configuration.valid?
8
+ {
9
+ app: Jumpup::Deis.configuration.app,
10
+ staging_app: Jumpup::Deis.configuration.staging_app,
11
+ production_app: Jumpup::Deis.configuration.production_app,
12
+ run_database_tasks: Jumpup::Deis.configuration.run_database_tasks,
13
+ host: Jumpup::Deis.configuration.host,
14
+ deploy_branch: Jumpup::Deis.configuration.deploy_branch,
15
+ deploy_to_production_branch: Jumpup::Deis.configuration.deploy_to_production_branch,
16
+ }.delete_if { |k, v| v.nil? }
17
+ else
18
+ error_message = 'Check your `/config/initializers/jumpup-deis.rb` and ' \
19
+ 'confirm you have defined the `host` and that you have defined ' \
20
+ 'only `app` or `staging_app` and `production_app` together ' \
21
+ 'more info here https://github.com/Helabs/jumpup-deis'
22
+ raise ConfigurationError, error_message
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ module Jumpup
2
+ module Deis
3
+
4
+ class ConfigurationError < StandardError
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,187 @@
1
+ require 'pathname'
2
+
3
+ module Jumpup
4
+ module Deis
5
+
6
+ class Integrate
7
+
8
+ attr_reader :app
9
+
10
+ def self.deploy
11
+ message = "Starting to deploy on Deis app #{integrate.app}"
12
+ integrate.when_branch_send_to_deis(message) do
13
+ integrate.deploy
14
+ end
15
+ end
16
+
17
+ def self.deploy_to_production
18
+ app = Env.all[:production_app]
19
+ integrate = new(app)
20
+ message = "Starting to deploy to production on Deis app #{integrate.app}"
21
+ integrate.when_branch_send_to_deis(message) do
22
+ integrate.deploy_to_production
23
+ end
24
+ end
25
+
26
+ def self.add_remote
27
+ message = "Adding Deis git remotes for app #{integrate.app}"
28
+ integrate.when_branch_send_to_deis(message) do
29
+ integrate.add_remote
30
+ end
31
+ end
32
+
33
+ def self.check
34
+ message = "Checking if there's already someone integrating to #{integrate.app}"
35
+ integrate.when_branch_send_to_deis(message) do
36
+ integrate.check
37
+ end
38
+ end
39
+
40
+ def self.integrate
41
+ envs = Env.all
42
+ app = envs[:app] || envs[:staging_app]
43
+ new(app)
44
+ end
45
+
46
+ def initialize(app)
47
+ @app = app
48
+ @envs = Env.all
49
+ end
50
+
51
+ def when_branch_send_to_deis(message, &block)
52
+ puts "--> #{message}"
53
+ if branches_that_send_to_deis.include?(actual_branch)
54
+ block.call
55
+ else
56
+ puts "----> Skipping since you are in a feature branch [#{actual_branch}]"
57
+ end
58
+ end
59
+
60
+ def branches_that_send_to_deis
61
+ [Env.all[:deploy_branch], Env.all[:deploy_to_production_branch]]
62
+ end
63
+
64
+ def deploy
65
+ run_database_checks if run_database_tasks?
66
+
67
+ push(Env.all[:deploy_branch])
68
+ migrate if run_database_tasks?
69
+ seed if run_database_tasks?
70
+ end
71
+
72
+ def deploy_to_production
73
+ run_database_checks if run_database_tasks?
74
+
75
+ confirm_deploy
76
+ spec
77
+ tag
78
+ push(Env.all[:deploy_to_production_branch])
79
+ migrate if run_database_tasks?
80
+ seed if run_database_tasks?
81
+ end
82
+
83
+ def add_remote
84
+ remote = run_with_clean_env("git remote | grep deis").strip
85
+ exec_with_clean_env("git remote add deis ssh://git@#{host}:2222/#{app}.git") if remote.blank?
86
+ end
87
+
88
+ private
89
+ attr_reader :envs
90
+
91
+ def check_if_migration_is_needed
92
+ files_changed = run_with_clean_env("git diff HEAD #{latest_remote_sha} --name-only -- db/migrate | wc -l").strip.to_i
93
+ @migrations_changed = files_changed > 0
94
+ end
95
+
96
+ def check_if_seed_is_needed
97
+ files_changed = run_with_clean_env("git diff HEAD #{latest_remote_sha} --name-only -- db/seeds* | wc -l").strip.to_i
98
+ @seeds_changed = files_changed > 0
99
+ end
100
+
101
+ def latest_remote_sha
102
+ @latest_remote_sha ||= run_with_clean_env("git ls-remote ssh://git@#{host}:2222/#{app}.git HEAD 2>/dev/null | awk '{ print $1 }'").strip
103
+ end
104
+
105
+ def run_with_clean_env(command)
106
+ Bundler.with_clean_env { `#{command}` }
107
+ end
108
+
109
+ def exec_with_clean_env(command)
110
+ Bundler.with_clean_env do
111
+ unless system(command)
112
+ raise "Error while running #{command}"
113
+ end
114
+ end
115
+ end
116
+
117
+ def confirm(message)
118
+ print "\n#{message}\nAre you sure? [yN] "
119
+ raise 'Ok. Bye...' unless STDIN.gets.chomp.downcase == 'y'
120
+ end
121
+
122
+ def run_database_tasks?
123
+ @envs[:run_database_tasks]
124
+ end
125
+
126
+ def migrate
127
+ if @migrations_changed
128
+ output "Migrating"
129
+ exec_with_clean_env("deis run rake db:migrate --app #{app}")
130
+ else
131
+ output "Skipping migrations"
132
+ end
133
+ end
134
+
135
+ def seed
136
+ if @seeds_changed
137
+ output "Seeding"
138
+ exec_with_clean_env("deis run rake db:seed --app #{app}")
139
+ else
140
+ output "Skipping seeds"
141
+ end
142
+ end
143
+
144
+ def push(branch)
145
+ output "Pushing to #{host} from branch [#{branch}]"
146
+ exec_with_clean_env("git push ssh://git@#{host}:2222/#{app}.git #{branch}:master")
147
+ end
148
+
149
+ def confirm_deploy
150
+ confirm("[#{app}] Deploying to production using branch [#{Env.all[:deploy_to_production_branch]}]")
151
+ end
152
+
153
+ def spec
154
+ puts "----> Running all specs"
155
+ Rake::Task['spec'].invoke
156
+ end
157
+
158
+ def tag
159
+ iso_date = Time.now.strftime('%Y-%m-%dT%H%M%S')
160
+ tag_name = "production-#{iso_date}"
161
+
162
+ puts "----> Tagging as #{tag_name}"
163
+ exec_with_clean_env("git tag #{tag_name} master")
164
+
165
+ puts "----> Pushing to origin"
166
+ exec_with_clean_env("git push origin #{tag_name}")
167
+ end
168
+
169
+ def host
170
+ Env.all[:host]
171
+ end
172
+
173
+ def actual_branch
174
+ run_with_clean_env("git rev-parse --abbrev-ref HEAD").strip
175
+ end
176
+
177
+ def output(message)
178
+ puts "----> [#{app}] #{message}"
179
+ end
180
+
181
+ def run_database_checks
182
+ check_if_migration_is_needed
183
+ check_if_seed_is_needed
184
+ end
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,5 @@
1
+ module Jumpup
2
+ module Deis
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
@@ -0,0 +1,32 @@
1
+ namespace :jumpup do
2
+ namespace :deis do
3
+
4
+ task :start => ["add_remote"]
5
+ task :finish => ["deploy"]
6
+
7
+ desc "Add Deis git remotes"
8
+ task add_remote: :environment do
9
+ Jumpup::Deis::Integrate.add_remote
10
+ end
11
+
12
+ desc "Deploy to deis"
13
+ task deploy: :environment do
14
+ Jumpup::Deis::Integrate.deploy
15
+ end
16
+
17
+ namespace :deploy do
18
+ desc "Deploy to production"
19
+ task production: :environment do
20
+ Jumpup::Deis::Integrate.deploy_to_production
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ namespace :integrate do
27
+ desc 'Alias to jumpup:deis:deploy:production'
28
+ task production: :environment do
29
+ Rake.application.invoke_task('jumpup:deis:deploy:production')
30
+ end
31
+ end
32
+
@@ -0,0 +1,290 @@
1
+ require 'spec_helper'
2
+
3
+ describe Jumpup::Deis::Configuration do
4
+
5
+ before do
6
+ Jumpup::Deis.configuration = nil
7
+ end
8
+
9
+ describe ".configure" do
10
+ describe "without configuration" do
11
+ before do
12
+ Jumpup::Deis.configure { |config| nil }
13
+ end
14
+
15
+ subject { Jumpup::Deis.configuration }
16
+
17
+ describe '#app' do
18
+ subject { super().app }
19
+ it { is_expected.to be_nil }
20
+ end
21
+
22
+ describe '#staging_app' do
23
+ subject { super().staging_app }
24
+ it { is_expected.to be_nil }
25
+ end
26
+
27
+ describe '#production_app' do
28
+ subject { super().production_app }
29
+ it { is_expected.to be_nil }
30
+ end
31
+
32
+ describe '#run_database_tasks' do
33
+ subject { super().run_database_tasks }
34
+ it { is_expected.to be_truthy }
35
+ end
36
+
37
+ describe '#host' do
38
+ subject { super().host }
39
+ it { is_expected.to be_nil }
40
+ end
41
+
42
+ describe '#deploy_branch' do
43
+ subject { super().deploy_branch }
44
+ it { is_expected.to eq('master') }
45
+ end
46
+
47
+ describe '#deploy_to_production_branch' do
48
+ subject { super().deploy_to_production_branch }
49
+ it { is_expected.to eq('master') }
50
+ end
51
+ end
52
+
53
+ describe "with configurations" do
54
+ before do
55
+ Jumpup::Deis.configure do |config|
56
+ config.app = 'myapp'
57
+ config.production_app = 'myapp-production'
58
+ config.staging_app = 'myapp-staging'
59
+ config.run_database_tasks = false
60
+ config.host = 'myhost.com'
61
+ end
62
+ end
63
+
64
+ subject { Jumpup::Deis.configuration }
65
+
66
+ describe '#app' do
67
+ subject { super().app }
68
+ it { is_expected.to eq('myapp') }
69
+ end
70
+
71
+ describe '#staging_app' do
72
+ subject { super().staging_app }
73
+ it { is_expected.to eq('myapp-staging')}
74
+ end
75
+
76
+ describe '#production_app' do
77
+ subject { super().production_app }
78
+ it { is_expected.to eq('myapp-production') }
79
+ end
80
+
81
+ describe '#run_database_tasks' do
82
+ subject { super().run_database_tasks }
83
+ it { is_expected.to be_falsey }
84
+ end
85
+
86
+ describe '#host' do
87
+ subject { super().host }
88
+ it { is_expected.to eq('myhost.com') }
89
+ end
90
+
91
+ describe '#deploy_branch' do
92
+ subject { super().deploy_branch }
93
+ it { is_expected.to eq('master') }
94
+ end
95
+
96
+ describe '#deploy_to_production_branch' do
97
+ subject { super().deploy_to_production_branch }
98
+ it { is_expected.to eq('production') }
99
+ end
100
+ end
101
+ end
102
+
103
+ describe "#valid?" do
104
+ describe 'app configs' do
105
+ describe "with app" do
106
+ before do
107
+ Jumpup::Deis.configure do |config|
108
+ config.app = 'myapp'
109
+ end
110
+ end
111
+
112
+ it "is invalid" do
113
+ expect(Jumpup::Deis.configuration).to_not be_valid
114
+ end
115
+ end
116
+
117
+ describe "with app and host" do
118
+ before do
119
+ Jumpup::Deis.configure do |config|
120
+ config.host = 'host.com'
121
+ config.app = 'myapp'
122
+ end
123
+ end
124
+
125
+ it "is valid" do
126
+ expect(Jumpup::Deis.configuration).to be_valid
127
+ end
128
+ end
129
+
130
+ describe "with staging_app and production_app" do
131
+ before do
132
+ Jumpup::Deis.configure do |config|
133
+ config.production_app = 'myapp-production'
134
+ config.staging_app = 'myapp-staging'
135
+ end
136
+ end
137
+
138
+ it "is invalid" do
139
+ expect(Jumpup::Deis.configuration).to_not be_valid
140
+ end
141
+ end
142
+
143
+ describe "with host, staging_app and production_app" do
144
+ before do
145
+ Jumpup::Deis.configure do |config|
146
+ config.host = 'host.com'
147
+ config.production_app = 'myapp-production'
148
+ config.staging_app = 'myapp-staging'
149
+ end
150
+ end
151
+
152
+ it "is valid" do
153
+ expect(Jumpup::Deis.configuration).to be_valid
154
+ end
155
+ end
156
+
157
+ describe "with host, app, staging_app and production_app" do
158
+ before do
159
+ Jumpup::Deis.configure do |config|
160
+ config.host = 'host.com'
161
+ config.app = 'myapp'
162
+ config.production_app = 'myapp-production'
163
+ config.staging_app = 'myapp-staging'
164
+ end
165
+ end
166
+
167
+ it 'is invalid' do
168
+ expect(Jumpup::Deis.configuration).to_not be_valid
169
+ end
170
+ end
171
+
172
+ describe "with host and staging_app" do
173
+ before do
174
+ Jumpup::Deis.configure do |config|
175
+ config.host = 'host.com'
176
+ config.staging_app = 'myapp-staging'
177
+ end
178
+ end
179
+
180
+ it 'is invalid' do
181
+ expect(Jumpup::Deis.configuration).to_not be_valid
182
+ end
183
+ end
184
+
185
+ describe "with host and production_app" do
186
+ before do
187
+ Jumpup::Deis.configure do |config|
188
+ config.host = 'host.com'
189
+ config.production_app = 'myapp-production'
190
+ end
191
+ end
192
+
193
+ it 'is invalid' do
194
+ expect(Jumpup::Deis.configuration).to_not be_valid
195
+ end
196
+ end
197
+
198
+ describe "with host, app and production_app" do
199
+ before do
200
+ Jumpup::Deis.configure do |config|
201
+ config.host = 'host.com'
202
+ config.app = 'myapp'
203
+ config.production_app = 'myapp-production'
204
+ end
205
+ end
206
+
207
+ it 'is invalid' do
208
+ expect(Jumpup::Deis.configuration).to_not be_valid
209
+ end
210
+ end
211
+
212
+ describe "with host, app and staging_app" do
213
+ before do
214
+ Jumpup::Deis.configure do |config|
215
+ config.host = 'host.com'
216
+ config.app = 'myapp'
217
+ config.staging_app = 'myapp-staging'
218
+ end
219
+ end
220
+
221
+ it 'is not valid' do
222
+ expect(Jumpup::Deis.configuration).to_not be_valid
223
+ end
224
+ end
225
+ end
226
+
227
+ describe 'run_database_tasks configs' do
228
+ describe "with true run_database_tasks" do
229
+ before do
230
+ Jumpup::Deis.configure do |config|
231
+ config.host = 'host.com'
232
+ config.app = 'myapp'
233
+ config.run_database_tasks = true
234
+ end
235
+ end
236
+
237
+ it 'is valid' do
238
+ expect(Jumpup::Deis.configuration).to be_valid
239
+ end
240
+ end
241
+
242
+ describe "with false run_database_tasks" do
243
+ before do
244
+ Jumpup::Deis.configure do |config|
245
+ config.host = 'host.com'
246
+ config.app = 'myapp'
247
+ config.run_database_tasks = false
248
+ end
249
+ end
250
+
251
+ it 'is valid' do
252
+ expect(Jumpup::Deis.configuration).to be_valid
253
+ end
254
+ end
255
+
256
+ describe "with invalid run_database_tasks" do
257
+ before do
258
+ Jumpup::Deis.configure do |config|
259
+ config.host = 'host.com'
260
+ config.app = 'myapp'
261
+ config.run_database_tasks = 'a'
262
+ end
263
+ end
264
+
265
+ it 'is invalid' do
266
+ expect(Jumpup::Deis.configuration).to_not be_valid
267
+ end
268
+ end
269
+ end
270
+
271
+ describe "without configuration" do
272
+ before do
273
+ Jumpup::Deis.configure { |config| nil }
274
+ end
275
+
276
+ it 'is invalid' do
277
+ expect(Jumpup::Deis.configuration).to_not be_valid
278
+ end
279
+ end
280
+
281
+ describe "with configuration nil" do
282
+ before { Jumpup::Deis.configuration = nil }
283
+
284
+ it 'is invalid' do
285
+ pending "The bug is raised when have no config/initialier/deis-deploy.rb file"
286
+ expect(Jumpup::Deis.configuration).to_not be_valid
287
+ end
288
+ end
289
+ end
290
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ describe Jumpup::Deis::Env do
4
+ before do
5
+ Jumpup::Deis.configuration = nil
6
+ end
7
+
8
+ describe "with app" do
9
+ before do
10
+ Jumpup::Deis.configure do |config|
11
+ config.host = 'host.com'
12
+ config.app = 'myapp'
13
+ end
14
+ end
15
+
16
+ it "have correct env info" do
17
+ config = { app: 'myapp', run_database_tasks: true, host: 'host.com',
18
+ deploy_branch: 'master', deploy_to_production_branch: 'master'}
19
+ expect(Jumpup::Deis::Env.all).to eq(config)
20
+ end
21
+ end
22
+
23
+ describe "with staging_app and production_app" do
24
+ before do
25
+ Jumpup::Deis.configure do |config|
26
+ config.host = 'host.com'
27
+ config.production_app = 'myapp-production'
28
+ config.staging_app = 'myapp-staging'
29
+ end
30
+ end
31
+
32
+ it "have correct env info" do
33
+ config = { production_app: 'myapp-production', staging_app: 'myapp-staging',
34
+ run_database_tasks: true, host: 'host.com',
35
+ deploy_branch: 'master', deploy_to_production_branch: 'production'}
36
+ expect(Jumpup::Deis::Env.all).to eq(config)
37
+ end
38
+ end
39
+
40
+ describe "with run_database_tasks" do
41
+ before do
42
+ Jumpup::Deis.configure do |config|
43
+ config.host = 'host.com'
44
+ config.app = 'myapp'
45
+ config.run_database_tasks = false
46
+ end
47
+ end
48
+
49
+ it "have correct env info" do
50
+ result = { app: 'myapp', run_database_tasks: false, host: 'host.com',
51
+ deploy_branch: 'master', deploy_to_production_branch: 'master' }
52
+ expect(Jumpup::Deis::Env.all).to eq(result)
53
+ end
54
+ end
55
+
56
+ describe "with a invalid config env" do
57
+ before do
58
+ Jumpup::Deis.configure do |config|
59
+ config.host = 'host.com'
60
+ config.app = 'myapp'
61
+ config.production_app = 'myapp-production'
62
+ config.staging_app = 'myapp-staging'
63
+ config.run_database_tasks = 'a'
64
+ end
65
+ end
66
+
67
+ it 'raise error' do
68
+ expect do
69
+ Jumpup::Deis::Env.all
70
+ end.to raise_error(Jumpup::Deis::ConfigurationError, %r{/config/initializers/jumpup-deis.rb})
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,11 @@
1
+ require "bundler/setup"
2
+ Bundler.require(:default, :development)
3
+
4
+ require "jumpup/deis"
5
+
6
+ RSpec.configure do |config|
7
+ config.expect_with :rspec do |c|
8
+ c.syntax = :expect
9
+ end
10
+ end
11
+
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jumpup-deis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - HE:labs
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.12.4
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.12.4
69
+ description: Rake tasks to deploy on deis
70
+ email:
71
+ - tech@helabs.com.br
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".ruby-gemset"
78
+ - ".ruby-version"
79
+ - CHANGELOG.md
80
+ - CONTRIBUTING.md
81
+ - Gemfile
82
+ - LICENSE
83
+ - README.md
84
+ - Rakefile
85
+ - jumpup-heroku.gemspec
86
+ - lib/jumpup/deis.rb
87
+ - lib/jumpup/deis/configuration.rb
88
+ - lib/jumpup/deis/env.rb
89
+ - lib/jumpup/deis/errors.rb
90
+ - lib/jumpup/deis/integrate.rb
91
+ - lib/jumpup/deis/version.rb
92
+ - lib/tasks/integrate.rake
93
+ - spec/jumpup/deis/configuration_spec.rb
94
+ - spec/jumpup/deis/env_spec.rb
95
+ - spec/spec_helper.rb
96
+ homepage: https://github.com/Helabs/jumpup-deis
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.2.2
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Rake tasks to deploy on deis
120
+ test_files:
121
+ - spec/jumpup/deis/configuration_spec.rb
122
+ - spec/jumpup/deis/env_spec.rb
123
+ - spec/spec_helper.rb