groundskeeper-bitcore 0.13.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0102f5c7aa4b0a7e1281cc6b3e640b2f3b18df75bff3bbefb6b902ef138d7f6c
4
- data.tar.gz: 359d0d559e31a3df090f4fd3daf6f48e6af1a3f411bb55eb14fb5cc769f5ca0b
3
+ metadata.gz: 8aba462cf19e6cba7461724cdd192f643f0d174f4d6ae3f078759ac21103cb18
4
+ data.tar.gz: 5586ffa52b9576701b6839166d951bdb9524d46252427b89d6858b0ab0eb2341
5
5
  SHA512:
6
- metadata.gz: fbbe59eaac445cca2c08dee4c36ff2392b3e1c31106a6c891ee938caeb449b572ec10f17c9f9ec906211730a4104574af4aba70ff03737750b1f5590ed62a3e1
7
- data.tar.gz: 1bf8d8e7123546b529240870ce62c30cce30d0b671335ae82c7986ee7417c3dd0f3ad0b4f2a5af5eb77c9b331ae7ab35beba81711798c924ff7a9f52ac6798f8
6
+ metadata.gz: 9dd9e1d9c8b91e8313dfc40e127a5630c2b0f048206dee4dad900f2c60c443afed3617679e47622d9c29035dbbc52436c25f8427c2ae5cb849b055dedc191b60
7
+ data.tar.gz: 5de0587c1b110b9a0a4bb5ffa3f475c2ba5a08f8ff68077a24a9ff5a4db77e873316c83ababd9c0b5c547c41ca4ca02060ec72c271ced41fb966d9b7ddf0d9e5
@@ -39,3 +39,6 @@ Style/SingleLineMethods:
39
39
 
40
40
  Style/StringLiterals:
41
41
  EnforcedStyle: double_quotes
42
+
43
+ Style/IfUnlessModifier:
44
+ Enabled: false
@@ -1 +1 @@
1
- 2.6.2
1
+ 2.7.1
data/README.md CHANGED
@@ -70,10 +70,11 @@ application directory:
70
70
  ground release
71
71
  ```
72
72
 
73
- To prepare the server (only required the first time) for deployment:
73
+ To prepare the server (only required the first time) for deployment, add nginx
74
+ flag if deploying to nginx server:
74
75
 
75
76
  ```bash
76
- tag=0.0.0 stage=production ground predeploy
77
+ tag=0.0.0 stage=production ground predeploy [--nginx]
77
78
  ```
78
79
 
79
80
  To deploy the release (note that `stage` is optional and will be set to staging
@@ -1,4 +1,4 @@
1
- image: 'isgmhradd/rails-ruby26:2019-10-07'
1
+ image: 'isgmhradd/rails-ruby27:2020-04-01'
2
2
 
3
3
  pipelines:
4
4
  default:
@@ -25,6 +25,7 @@ task :before_run do
25
25
  set :deploy_to, project.deploy_to
26
26
  set :forward_agent, true
27
27
  set :bundle_path, "bundle"
28
+ set :smtp_domain, project.smtp_domain
28
29
 
29
30
  set :rvm_ruby_version, project.rvm_ruby_version
30
31
  set :rvm_type, :system
@@ -41,5 +42,6 @@ task :before_run do
41
42
 
42
43
  set :branch, "master"
43
44
  set :tag, tag
45
+ set :nginx, fetch(:nginx)
44
46
  end
45
47
  # rubocop:enable Metrics/BlockLength
@@ -28,6 +28,14 @@ def vhost_config_file
28
28
  "/etc/httpd/conf.d/#{fetch :application_name}.conf"
29
29
  end
30
30
 
31
+ def vhost_nginx_config_file
32
+ "/etc/nginx/sites-available/#{fetch :application_name}.conf"
33
+ end
34
+
35
+ def vhost_nginx_linked_file
36
+ "/etc/nginx/sites-enabled/#{fetch :application_name}.conf"
37
+ end
38
+
31
39
  def remote_shared_path(path)
32
40
  "#{fetch(:user)}@#{fetch(:domain)}:#{fetch(:shared_path)}/#{path}"
33
41
  end
@@ -101,14 +109,25 @@ namespace :deploy_configure do
101
109
  end
102
110
  # rubocop:enable Metrics/BlockLength
103
111
 
112
+ # rubocop:disable Metrics/BlockLength
104
113
  namespace :deploy_prepare do
105
114
  desc "Write the virtual host config file. May require an Apache restart."
106
115
  task :create_vhost do
107
116
  load_project
117
+ vhost_file = vhost_config_file
108
118
  vhost_config = load_template("vhost_config.conf.erb")
109
- if !(File.exist? vhost_config_file) || FORCE_OVERWRITE
110
- comment "Writing virtual host config to #{vhost_config_file}"
111
- command "echo \"#{vhost_config}\" > #{vhost_config_file}"
119
+
120
+ if fetch(:nginx)
121
+ vhost_file = vhost_nginx_config_file
122
+ vhost_config = load_template("vhost_config_nginx.conf.erb")
123
+ command "sudo chown -R deploy:nginx /etc/nginx/sites-available"
124
+ command "sudo chown -R deploy:nginx /etc/nginx/sites-enabled"
125
+ end
126
+
127
+ if !(File.exist? vhost_file) || FORCE_OVERWRITE
128
+ comment "Writing virtual host config to #{vhost_file}"
129
+ command "echo \"#{vhost_config}\" > #{vhost_file}"
130
+ command "ln -s #{vhost_file} #{vhost_nginx_linked_file}" if fetch(:nginx)
112
131
  end
113
132
  end
114
133
 
@@ -120,7 +139,9 @@ namespace :deploy_prepare do
120
139
 
121
140
  desc "Set owner."
122
141
  task :set_owner do
123
- comment "Setting owner of #{fetch :deploy_to} apache"
124
- command "sudo chgrp -R apache #{fetch :deploy_to}"
142
+ owner = fetch(:nginx) ? "nginx" : "apache"
143
+ comment "Setting owner of #{fetch :deploy_to} #{owner}"
144
+ command "sudo chgrp -R #{owner} #{fetch :deploy_to}"
125
145
  end
126
146
  end
147
+ # rubocop:enable Metrics/BlockLength
@@ -64,7 +64,7 @@ Rails.application.configure do
64
64
  authentication: :plain,
65
65
  address: 'smtp.mailgun.org',
66
66
  port: 587,
67
- domain: 'cbits.northwestern.edu',
67
+ domain: '<%= fetch :smtp_domain %>',
68
68
  user_name: ENV['mailgun_db_username'],
69
69
  password: ENV['mailgun_db_password']
70
70
  }
@@ -0,0 +1,26 @@
1
+ <% project = fetch :project -%>
2
+ server {
3
+ listen 80;
4
+
5
+ server_name <%= fetch :domain %>;
6
+ return 301 https://<%= fetch :domain -%>/;
7
+ }
8
+
9
+ server {
10
+ listen 443 ssl;
11
+ server_name <%= fetch :domain %>;
12
+
13
+ passenger_enabled on;
14
+ passenger_friendly_error_pages off;
15
+ passenger_app_env <%= fetch :stage %>;
16
+ passenger_ruby /usr/local/rvm/gems/ruby-<%= fetch :rvm_ruby_version -%>/wrappers/ruby;
17
+ passenger_min_instances 1;
18
+ passenger_base_uri /;
19
+
20
+ root <%= fetch :deploy_to -%>/current/public;
21
+
22
+ ssl_certificate <%= project.ssl_certificate_file(fetch(:stage).to_sym) %>;
23
+ ssl_certificate_key <%= project.ssl_certificate_key_file(fetch(:stage).to_sym) %>;
24
+ ssl_protocols TLSv1.2;
25
+ ssl_ciphers HIGH:!aNULL:!MD5;
26
+ }
@@ -31,10 +31,10 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = "ground"
32
32
  spec.require_paths = %w[lib config]
33
33
 
34
- spec.add_dependency "jira-ruby", "~> 1.6"
34
+ spec.add_dependency "jira-ruby", "~> 2.0"
35
35
  spec.add_dependency "mina", "~> 1.2"
36
36
  spec.add_dependency "mina-whenever", "~> 1.0.1"
37
- spec.add_dependency "thor", "~> 0.19"
37
+ spec.add_dependency "thor", "~> 1.0"
38
38
 
39
39
  spec.add_development_dependency "bundler", "~> 2.0"
40
40
  spec.add_development_dependency "byebug"
@@ -29,6 +29,7 @@ module Groundskeeper
29
29
 
30
30
  # :nocov:
31
31
  desc "predeploy", "create configuration files for the project"
32
+ option :nginx, type: :boolean
32
33
  def predeploy
33
34
  commands.info options
34
35
  commands.predeploy options
@@ -5,6 +5,8 @@ require "mina"
5
5
  require "pp"
6
6
  require "open3"
7
7
 
8
+ class VersionError < StandardError; end
9
+
8
10
  module Groundskeeper
9
11
  # Formulas for managing releases and deployments.
10
12
  # rubocop:disable Metrics/ClassLength
@@ -191,6 +193,7 @@ module Groundskeeper
191
193
  cmd << " -s" if options[:simulate]
192
194
  cmd << " -v" if options[:verbose]
193
195
  cmd << " force_asset_precompile=true" if options[:force_asset_precompile]
196
+ cmd << " nginx=true" if options[:nginx]
194
197
  run_mina cmd
195
198
  end
196
199
 
@@ -209,16 +212,18 @@ module Groundskeeper
209
212
  :bold)
210
213
  latest_version = rubygems.latest_groundskeeper_version
211
214
 
212
- if SemanticVersion.new(latest_version) > SemanticVersion.new(VERSION)
213
- console.say(
214
- "Groundskeeper is outdated, please install #{latest_version}",
215
- :red
216
- )
215
+ return true unless SemanticVersion.new(latest_version) > VERSION
217
216
 
218
- false
219
- else
220
- true
221
- end
217
+ question = <<~TEXT.squish
218
+ Groundskeeper is outdated,
219
+ would you like the latest version installed?
220
+ TEXT
221
+
222
+ response = console.ask(question, :red, limited_to: %w[yes no])
223
+
224
+ return true if response == "no"
225
+
226
+ console.run("gem install groundskeeper-bitcore")
222
227
  end
223
228
  end
224
229
  # rubocop:enable Metrics/MethodLength
@@ -372,18 +377,26 @@ module Groundskeeper
372
377
  end
373
378
  end
374
379
 
375
- # rubocop:disable Metrics/MethodLength
380
+ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
376
381
  def update_deployed_issues
382
+ tries = 0
383
+
377
384
  announce_step(
378
385
  "Check deployed version at #{website.uri}/#{Website::VERSION_PATH}"
379
386
  )
380
- deployed_version = website.version
381
387
 
382
- if deployed_version == ENV[TAG]
388
+ begin
389
+ deployed_version = website.version
390
+
391
+ raise VersionError unless deployed_version == ENV[TAG]
392
+
383
393
  console.say("# deployment successful", :green)
384
394
  transition_remote_issues deployed_version
385
395
  announce_in_slack deployed_version
386
- else
396
+ rescue VersionError
397
+ tries += 1
398
+ sleep 5
399
+ retry if tries < 3
387
400
  # :nocov:
388
401
  console.say(
389
402
  "something went wrong: expected version #{ENV[TAG]}, " \
@@ -393,7 +406,7 @@ module Groundskeeper
393
406
  # :nocov:
394
407
  end
395
408
  end
396
- # rubocop:enable Metrics/MethodLength
409
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
397
410
 
398
411
  # :nocov:
399
412
  def release_version
@@ -17,6 +17,7 @@ module Groundskeeper
17
17
  DB_ENV_VARIABLES_KEY = "db_env_variables"
18
18
  SENTRY_DSN_KEY = "sentry_dsn"
19
19
  SENTRY_PROJECT_KEY = "sentry_project"
20
+ SMTP_DOMAIN = "smtp_domain"
20
21
  SSL_CERTIFICATE_FILE_KEY = "SSLCertificateFile"
21
22
  SSL_CERTIFICATE_CHAIN_FILE_KEY = "SSLCertificateChainFile"
22
23
  SSL_CERTIFICATE_KEY_FILE_KEY = "SSLCertificateKeyFile"
@@ -65,6 +66,12 @@ module Groundskeeper
65
66
  end
66
67
  # :nocov:
67
68
 
69
+ # :nocov:
70
+ def smtp_domain
71
+ details[SMTP_DOMAIN] || ""
72
+ end
73
+ # :nocov:
74
+
68
75
  # :nocov:
69
76
  def rvm_ruby_version
70
77
  details[RVM_RUBY_VERSION_KEY] || ""
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Groundskeeper
4
- VERSION = "0.13.0"
4
+ VERSION = "0.18.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groundskeeper-bitcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - BIT Core
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - certs/ericcf.pem
12
- date: 2019-12-13 00:00:00.000000000 Z
12
+ date: 2020-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jira-ruby
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.6'
20
+ version: '2.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.6'
27
+ version: '2.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: mina
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -59,14 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0.19'
62
+ version: '1.0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0.19'
69
+ version: '1.0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: bundler
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -181,6 +181,7 @@ files:
181
181
  - config/secrets_config.yml.erb
182
182
  - config/tasks.rb
183
183
  - config/vhost_config.conf.erb
184
+ - config/vhost_config_nginx.conf.erb
184
185
  - groundskeeper.gemspec
185
186
  - lib/groundskeeper.rb
186
187
  - lib/groundskeeper/application.rb
@@ -223,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
224
  - !ruby/object:Gem::Version
224
225
  version: '0'
225
226
  requirements: []
226
- rubygems_version: 3.0.6
227
+ rubygems_version: 3.1.2
227
228
  signing_key:
228
229
  specification_version: 4
229
230
  summary: A gem for managing releases and deployments.