capistrano-opscomplete 0.2.0 → 0.3.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 +5 -5
- data/CHANGELOG.md +13 -0
- data/Gemfile +1 -3
- data/README.md +9 -12
- data/Rakefile +2 -2
- data/capistrano-opscomplete.gemspec +21 -18
- data/lib/capistrano/dsl/opscomplete.rb +27 -3
- data/lib/capistrano/opscomplete.rb +3 -3
- data/lib/capistrano/opscomplete/tasks.rake +30 -24
- data/lib/capistrano/opscomplete/version.rb +1 -1
- metadata +18 -5
- data/lib/capistrano-opscomplete.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fbb4c106ea61f218ac2ed13cab91256b12d76e6d064343d36a9b78c941bba2af
|
4
|
+
data.tar.gz: 4c849d23d37b0abfab117914d29edfd9425bf6ddbb12baed15586474fd33bcb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 529b9dd12ad04f4cfd707704505c57f69276b01c53a9ed944e5bfa13eb8537dca8cc21c3a25eed03b8049810df11f78b23ca87a9050a66bb868901d7531ea2f0
|
7
|
+
data.tar.gz: 37d3ceb10b4d99ab89ee12730dfda034cb26d482e8b11545e49a3fd71e88a4e26ae74ae0168d7bda6d608e53843d2d33e666464a16d82bd74ec95c76d0382771
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## [0.3.0] - 2019-04-05
|
2
|
+
### Added
|
3
|
+
- You can now specify the rubygems and bundler version to be installed. (#4)
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
- Support more rubygems versions by using --no-document rather than --no-ri/--no-rdoc (#6)
|
7
|
+
- Use makandra-rubocop to improve code style, moved some rbenv calls to DSL (#3)
|
8
|
+
- Fixed a deprecation warning where opscomplete:ruby:update_ruby_build was called multiple times. (#7)
|
9
|
+
|
10
|
+
### Removed
|
11
|
+
- `appserver:restart` task has been obsoleted. Please use https://github.com/capistrano/passenger (#1)
|
12
|
+
|
1
13
|
## [0.2.0] - 2018-08-28
|
2
14
|
### Added
|
3
15
|
- Look up .ruby-version from your local branch (cwd) if other options fail
|
@@ -14,4 +26,5 @@
|
|
14
26
|
### Added
|
15
27
|
- Initial release.
|
16
28
|
|
29
|
+
[0.3.0]: https://github.com/makandra/capistrano-opscomplete/compare/v0.2.0...v0.3.0
|
17
30
|
[0.2.0]: https://github.com/makandra/capistrano-opscomplete/compare/v0.1.0...v0.2.0
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -33,8 +33,6 @@ Now, add some [hooks](#using-capistrano-hooks) in your capistrano configuration.
|
|
33
33
|
```ruby
|
34
34
|
# After unpacking your release, before bundling, compiling assets, ...
|
35
35
|
after 'deploy:updating', 'opscomplete:ruby:ensure'
|
36
|
-
# After your application has been successfully deployed and the current symlink has been set
|
37
|
-
after 'deploy:published', 'opscomplete:appserver:restart'
|
38
36
|
```
|
39
37
|
|
40
38
|
## Usage
|
@@ -80,14 +78,12 @@ More specifically this task will:
|
|
80
78
|
- Install the `bundler` and `geordi` gem if required.
|
81
79
|
- Run `rbenv rehash` if required.
|
82
80
|
|
83
|
-
**Note:** If, for any reason, no `.ruby-version` file can be found in your release or current working directory, you may set the following option in deploy.rb
|
81
|
+
**Note:** If, for any reason, no `.ruby-version` file can be found in your release or current working directory, you may set the following option in `deploy.rb`:
|
84
82
|
|
85
83
|
```ruby
|
86
84
|
set :opscomplete_ruby_version, '<VERSION>'
|
87
85
|
```
|
88
86
|
|
89
|
-
Where `<VERSION>` is the desired ruby version.
|
90
|
-
|
91
87
|
**Optional:** By default, the ruby version is checked/installed for all server roles. If you want to limit the rbenv operations to certain roles, set `rbenv_roles` in your `deploy.rb`:
|
92
88
|
|
93
89
|
```ruby
|
@@ -96,15 +92,17 @@ set :rbenv_roles, :web
|
|
96
92
|
set :rbenv_roles, [:web, :worker]
|
97
93
|
```
|
98
94
|
|
99
|
-
|
100
|
-
|
101
|
-
To restart your application server execute:
|
95
|
+
**Optional:** By default, the most recent version of bundler will be installed. If you want a specific bundler version available for your release, set it in your `deploy.rb`:
|
102
96
|
|
103
|
-
|
97
|
+
```ruby
|
98
|
+
set :bundler_version, '<VERSION>'
|
99
|
+
```
|
104
100
|
|
105
|
-
|
101
|
+
**Optional:** By default, the rubygems version defined by the ruby-build manifest will be installed. If you want a specific rubygems version available for your release, set it in your `deploy.rb`:
|
106
102
|
|
107
|
-
|
103
|
+
```ruby
|
104
|
+
set :rubygems_version, '<VERSION>'
|
105
|
+
```
|
108
106
|
|
109
107
|
### Using capistrano hooks
|
110
108
|
|
@@ -112,7 +110,6 @@ There are many hooks available in the [default deploy flow](https://capistranorb
|
|
112
110
|
|
113
111
|
```ruby
|
114
112
|
after 'deploy:updating', 'opscomplete:ruby:ensure'
|
115
|
-
after 'deploy:published', 'opscomplete:appserver:restart'
|
116
113
|
```
|
117
114
|
|
118
115
|
## Contributing
|
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require
|
2
|
-
task :
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
task default: :spec
|
@@ -1,36 +1,39 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
3
|
+
require 'capistrano/opscomplete/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
6
|
+
spec.name = 'capistrano-opscomplete'
|
7
|
+
spec.version = Capistrano::Opscomplete::VERSION
|
8
|
+
spec.authors = ['Makandra Operations']
|
9
|
+
spec.email = ['ops@makandra.de']
|
10
10
|
|
11
|
-
spec.summary
|
12
|
-
spec.homepage
|
11
|
+
spec.summary = %q(Capistrano tasks for easy deployment to a makandra opscomplete environment.)
|
12
|
+
spec.homepage = 'https://opscomplete.com/ruby'
|
13
13
|
|
14
|
-
spec.license
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
if spec.respond_to?(:metadata)
|
17
|
-
spec.metadata[
|
17
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
18
18
|
else
|
19
|
-
raise
|
20
|
-
|
19
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
20
|
+
'public gem pushes.'
|
21
21
|
end
|
22
22
|
|
23
23
|
# Specify which files should be added to the gem when it is released.
|
24
24
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
-
spec.files
|
25
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
26
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^((test|spec|features)/|.gitignore|.rubocop.yml)}) }
|
27
27
|
end
|
28
|
-
spec.bindir =
|
29
|
-
spec.executables = spec.files.grep(%r
|
30
|
-
spec.require_paths = [
|
28
|
+
spec.bindir = 'exe'
|
29
|
+
spec.executables = spec.files.grep(%r(^exe/)) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ['lib']
|
31
31
|
|
32
|
-
spec.
|
33
|
-
|
32
|
+
spec.required_rubygems_version = '>=2.0.1'
|
33
|
+
|
34
|
+
spec.add_development_dependency 'makandra-rubocop', '~> 0'
|
35
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
36
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
34
37
|
|
35
38
|
spec.add_dependency 'capistrano', '>=3.0', '<4.0.0'
|
36
39
|
end
|
@@ -2,7 +2,7 @@ module Capistrano
|
|
2
2
|
module DSL
|
3
3
|
# A whole capistrano/rake namespace, for grouping our helpers and tasks
|
4
4
|
module Opscomplete
|
5
|
-
def managed_ruby
|
5
|
+
def managed_ruby?
|
6
6
|
test("[ -f #{rbenv_root_path}/.ruby_managed_by_makandra ]")
|
7
7
|
end
|
8
8
|
|
@@ -56,12 +56,36 @@ module Capistrano
|
|
56
56
|
def rbenv_installed_rubies
|
57
57
|
if test("[ -d #{rbenv_root_path}/versions ]")
|
58
58
|
rbenv_installed_rubies = capture(:ls, '-1', "#{rbenv_root_path}/versions").split("\n")
|
59
|
-
|
59
|
+
rbenv_installed_rubies.map!(&:strip)
|
60
60
|
else
|
61
61
|
warn("Could not look up installed versions from missing '.rbenv/versions' directory. This is probably the first ruby install for this rbenv.")
|
62
|
-
|
62
|
+
[]
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
def rbenv_exec(*args)
|
67
|
+
execute(:rbenv, :exec, *args)
|
68
|
+
end
|
69
|
+
|
70
|
+
def gem_installed?(name, version = nil)
|
71
|
+
if version
|
72
|
+
test(:rbenv, :exec, "gem query --quiet --installed --version #{version} --name-matches ^#{name}$")
|
73
|
+
else
|
74
|
+
test(:rbenv, :exec, :gem, :query, "--quiet --installed --name-matches ^#{name}$")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def gem_install(name, version = nil)
|
79
|
+
if version
|
80
|
+
rbenv_exec('gem install', name, '--no-document', '--version', version)
|
81
|
+
else
|
82
|
+
rbenv_exec('gem install', name, '--no-document')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def rubygems_install(version)
|
87
|
+
rbenv_exec('gem update --no-document --system', version)
|
88
|
+
end
|
65
89
|
end
|
66
90
|
end
|
67
91
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'capistrano/opscomplete/version'
|
2
2
|
|
3
|
-
load File.expand_path('
|
4
|
-
load File.expand_path('
|
3
|
+
load File.expand_path('opscomplete/tasks.rake', __dir__)
|
4
|
+
load File.expand_path('opscomplete/deploy.rake', __dir__)
|
@@ -19,7 +19,7 @@ namespace :opscomplete do
|
|
19
19
|
desc 'Check if rbenv global ruby is set according to application\'s .ruby-version.'
|
20
20
|
task :check do
|
21
21
|
on roles fetch(:rbenv_roles, :all) do |host|
|
22
|
-
warn("#{host}: Managed ruby environment! Won't do any changes to ruby version.") if managed_ruby
|
22
|
+
warn("#{host}: Managed ruby environment! Won't do any changes to ruby version.") if managed_ruby?
|
23
23
|
unless capture(:rbenv, :global) == app_ruby_version
|
24
24
|
raise Capistrano::ValidationError,
|
25
25
|
"#{host}: Ruby version is not set according to application\'s .ruby-version file. Use cap opscomplete:ruby:ensure."
|
@@ -52,8 +52,11 @@ namespace :opscomplete do
|
|
52
52
|
# desc 'Install bundler gem'
|
53
53
|
task :install_bundler do
|
54
54
|
on roles fetch(:rbenv_roles, :all) do
|
55
|
-
|
56
|
-
|
55
|
+
if fetch(:bundler_version, false)
|
56
|
+
gem_install('bundler', fetch(:bundler_version)) unless gem_installed?('bundler', fetch(:bundler_version))
|
57
|
+
else
|
58
|
+
gem_install('bundler') unless gem_installed?('bundler')
|
59
|
+
end
|
57
60
|
set :rbenv_needs_rehash, true
|
58
61
|
end
|
59
62
|
end
|
@@ -61,45 +64,48 @@ namespace :opscomplete do
|
|
61
64
|
# desc 'Install geordi gem'
|
62
65
|
task :install_geordi do
|
63
66
|
on roles fetch(:rbenv_roles, :all) do
|
64
|
-
|
65
|
-
execute(:rbenv, :exec, :gem, :install, :geordi, '--quiet --no-rdoc --no-ri')
|
67
|
+
gem_install('geordi') unless gem_installed?('geordi')
|
66
68
|
set :rbenv_needs_rehash, true
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
72
|
+
task :install_rubygems do
|
73
|
+
on roles fetch(:rbenv_roles, :all) do
|
74
|
+
# if no rubygems_version was set, we use and don't check the rubygems version installed by rbenv
|
75
|
+
if fetch(:rubygems_version, false)
|
76
|
+
current_rubygems_version = capture(:rbenv, :exec, :gem, '--version').chomp
|
77
|
+
info("Ensuring requested RubyGems version #{fetch(:rubygems_version)}")
|
78
|
+
next if current_rubygems_version == fetch(:rubygems_version)
|
79
|
+
info("Previously installed RubyGems version was #{current_rubygems_version}")
|
80
|
+
rbenv_exec(:gem, :update, '--no-document', '--system', fetch(:rubygems_version))
|
81
|
+
set :rbenv_needs_rehash, true
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
70
86
|
desc 'Install and configure ruby according to applications .ruby-version.'
|
71
87
|
task :ensure do
|
88
|
+
invoke('opscomplete:ruby:update_ruby_build')
|
72
89
|
on roles fetch(:rbenv_roles, :all) do |host|
|
73
|
-
if managed_ruby
|
90
|
+
if managed_ruby?
|
74
91
|
raise Capistrano::ValidationError, "#{host}: Managed ruby environment! Won't do any changes to ruby version."
|
75
92
|
end
|
76
93
|
if rbenv_installed_rubies.include?(app_ruby_version)
|
77
94
|
info("#{host}: Required ruby version '#{app_ruby_version}' is installed.")
|
95
|
+
elsif rbenv_installable_rubies.include?(app_ruby_version)
|
96
|
+
info("#{host}: Required ruby version is not installed, but available for installation.")
|
97
|
+
execute(:rbenv, :install, app_ruby_version)
|
98
|
+
set :rbenv_needs_rehash, true
|
78
99
|
else
|
79
|
-
|
80
|
-
|
81
|
-
info("#{host}: Required ruby version is not installed, but available for installation.")
|
82
|
-
execute(:rbenv, :install, app_ruby_version)
|
83
|
-
set :rbenv_needs_rehash, true
|
84
|
-
else
|
85
|
-
raise Capistrano::ValidationError,
|
86
|
-
"#{host}: Ruby version required by application is neither installed nor installable using ruby-install."
|
87
|
-
end
|
100
|
+
raise Capistrano::ValidationError,
|
101
|
+
"#{host}: Ruby version required by application is neither installed nor installable using ruby-install."
|
88
102
|
end
|
89
103
|
execute(:rbenv, :global, app_ruby_version) unless capture(:rbenv, :global) == app_ruby_version
|
90
104
|
end
|
105
|
+
invoke('opscomplete:ruby:install_rubygems')
|
91
106
|
invoke('opscomplete:ruby:install_bundler')
|
92
107
|
invoke('opscomplete:ruby:install_geordi')
|
93
108
|
invoke('opscomplete:ruby:rehash') if fetch(:rbenv_needs_rehash, false)
|
94
109
|
end
|
95
110
|
end
|
96
|
-
|
97
|
-
namespace :appserver do
|
98
|
-
desc 'Restart Application'
|
99
|
-
task :restart do
|
100
|
-
on roles :app do
|
101
|
-
execute "sudo passenger-config restart-app --ignore-app-not-running #{fetch(:deploy_to)}"
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
111
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-opscomplete
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Makandra Operations
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: makandra-rubocop
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,7 +87,6 @@ files:
|
|
73
87
|
- bin/console
|
74
88
|
- bin/setup
|
75
89
|
- capistrano-opscomplete.gemspec
|
76
|
-
- lib/capistrano-opscomplete.rb
|
77
90
|
- lib/capistrano/dsl/opscomplete.rb
|
78
91
|
- lib/capistrano/opscomplete.rb
|
79
92
|
- lib/capistrano/opscomplete/deploy.rake
|
@@ -97,10 +110,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
110
|
requirements:
|
98
111
|
- - ">="
|
99
112
|
- !ruby/object:Gem::Version
|
100
|
-
version:
|
113
|
+
version: 2.0.1
|
101
114
|
requirements: []
|
102
115
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.6
|
116
|
+
rubygems_version: 2.7.6
|
104
117
|
signing_key:
|
105
118
|
specification_version: 4
|
106
119
|
summary: Capistrano tasks for easy deployment to a makandra opscomplete environment.
|
File without changes
|