groundskeeper-bitcore 0.12.0 → 0.17.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.ruby-version +1 -1
- data/README.md +3 -2
- data/bitbucket-pipelines.yml +1 -1
- data/config/git_config.rb +4 -1
- data/config/predeploy.rb +26 -5
- data/config/rails_config.rb.erb +1 -1
- data/config/tasks.rb +1 -3
- data/config/vhost_config_nginx.conf.erb +26 -0
- data/groundskeeper.gemspec +2 -2
- data/lib/groundskeeper/application.rb +1 -0
- data/lib/groundskeeper/commands.rb +16 -5
- data/lib/groundskeeper/project.rb +7 -0
- data/lib/groundskeeper/version.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 76a66b65c4de7ff36bc401d84e100417c577bd6fc79fa82a3a25e3068303afba
|
|
4
|
+
data.tar.gz: cbebbf63ed96160aacaf9df0d8b51a8064d747ec7a99f51f4b47e708dac74af3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 668833b27cf2c40c28f8124db0ffc95d3452bf6d163408de22de3b0440b556c6276091260003e5d7d2fe7ddcfb40b7d2ad9fdf5a9911237c1bf0c933d9c6dac0
|
|
7
|
+
data.tar.gz: 025d383dd7bed00e1eaf0b64cbd8aead02392798d1051228eb977b1d15ae4f119e95d59eaaccd9165c9d6ad17170cc0c8a45c83928093e03b74451e474b1357f
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
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
|
data/bitbucket-pipelines.yml
CHANGED
data/config/git_config.rb
CHANGED
|
@@ -21,9 +21,11 @@ task :before_run do
|
|
|
21
21
|
set :domain, project.full_dns(fetch(:stage))
|
|
22
22
|
set :user, "deploy"
|
|
23
23
|
set :repository, project.repo_url
|
|
24
|
+
set :repo_name, project.repo_name
|
|
24
25
|
set :deploy_to, project.deploy_to
|
|
25
26
|
set :forward_agent, true
|
|
26
27
|
set :bundle_path, "bundle"
|
|
28
|
+
set :smtp_domain, project.smtp_domain
|
|
27
29
|
|
|
28
30
|
set :rvm_ruby_version, project.rvm_ruby_version
|
|
29
31
|
set :rvm_type, :system
|
|
@@ -39,6 +41,7 @@ task :before_run do
|
|
|
39
41
|
end
|
|
40
42
|
|
|
41
43
|
set :branch, "master"
|
|
42
|
-
set :tag,
|
|
44
|
+
set :tag, tag
|
|
45
|
+
set :nginx, fetch(:nginx)
|
|
43
46
|
end
|
|
44
47
|
# rubocop:enable Metrics/BlockLength
|
data/config/predeploy.rb
CHANGED
|
@@ -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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
124
|
-
|
|
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
|
data/config/rails_config.rb.erb
CHANGED
|
@@ -64,7 +64,7 @@ Rails.application.configure do
|
|
|
64
64
|
authentication: :plain,
|
|
65
65
|
address: 'smtp.mailgun.org',
|
|
66
66
|
port: 587,
|
|
67
|
-
domain: '
|
|
67
|
+
domain: '<%= fetch :smtp_domain %>',
|
|
68
68
|
user_name: ENV['mailgun_db_username'],
|
|
69
69
|
password: ENV['mailgun_db_password']
|
|
70
70
|
}
|
data/config/tasks.rb
CHANGED
|
@@ -11,9 +11,7 @@ end
|
|
|
11
11
|
desc "Checks out the selected release tag"
|
|
12
12
|
task :checkout_release do
|
|
13
13
|
comment "Checking out release \"#{fetch :tag}\""
|
|
14
|
-
command %(git clone -b "#{fetch :
|
|
15
|
-
command "git fetch"
|
|
16
|
-
command %(git checkout "#{fetch :tag}")
|
|
14
|
+
command %(git clone -b "#{fetch :tag}" --depth 1 "#{fetch :repository}" .)
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
desc "Uses an RVM envionment"
|
|
@@ -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
|
+
}
|
data/groundskeeper.gemspec
CHANGED
|
@@ -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", "~>
|
|
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
|
|
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"
|
|
@@ -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
|
|
|
@@ -372,18 +375,26 @@ module Groundskeeper
|
|
|
372
375
|
end
|
|
373
376
|
end
|
|
374
377
|
|
|
375
|
-
# rubocop:disable Metrics/MethodLength
|
|
378
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
376
379
|
def update_deployed_issues
|
|
380
|
+
tries = 0
|
|
381
|
+
|
|
377
382
|
announce_step(
|
|
378
383
|
"Check deployed version at #{website.uri}/#{Website::VERSION_PATH}"
|
|
379
384
|
)
|
|
380
|
-
deployed_version = website.version
|
|
381
385
|
|
|
382
|
-
|
|
386
|
+
begin
|
|
387
|
+
deployed_version = website.version
|
|
388
|
+
|
|
389
|
+
raise VersionError unless deployed_version == ENV[TAG]
|
|
390
|
+
|
|
383
391
|
console.say("# deployment successful", :green)
|
|
384
392
|
transition_remote_issues deployed_version
|
|
385
393
|
announce_in_slack deployed_version
|
|
386
|
-
|
|
394
|
+
rescue VersionError
|
|
395
|
+
tries += 1
|
|
396
|
+
sleep 5
|
|
397
|
+
retry if tries < 3
|
|
387
398
|
# :nocov:
|
|
388
399
|
console.say(
|
|
389
400
|
"something went wrong: expected version #{ENV[TAG]}, " \
|
|
@@ -393,7 +404,7 @@ module Groundskeeper
|
|
|
393
404
|
# :nocov:
|
|
394
405
|
end
|
|
395
406
|
end
|
|
396
|
-
# rubocop:enable Metrics/MethodLength
|
|
407
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
|
397
408
|
|
|
398
409
|
# :nocov:
|
|
399
410
|
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] || ""
|
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.
|
|
4
|
+
version: 0.17.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:
|
|
12
|
+
date: 2020-06-02 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: '
|
|
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: '
|
|
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
|
|
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
|
|
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.
|
|
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.
|