capistrano-sozo_magento2 1.1.0 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 067f69be7940139b39853f161c2cdccfaf59bc3efe7c889a3c4282b7a6c91191
4
- data.tar.gz: b235fcf83c747dcdb843e64bdddd44df30366bdc84a363a90e0425571b8a04f4
3
+ metadata.gz: 57d66531993d668be8a75fef480862d07035dcf0750f7831912f71bc749d5201
4
+ data.tar.gz: 5032e4073c3eed84ce9030206c0e9c3cfbdfbf29e8d12d1968802f48df3fa42b
5
5
  SHA512:
6
- metadata.gz: 4015c5c7f9cf4be49d35cda7732803d4e7bd240c7d4b5f85470c8a05587c452fcb48452509561b9d55ef3fa0330ce41582c63f965e427addc5590001c64f9360
7
- data.tar.gz: 60fc48f2e8a1b5437749978e887eec9d7ff28601a27742199826ba9a60101931ace0b6bed9ed44d91858561b79c6bd90c1fe52eb7e0989efbcc47668ae984f35
6
+ metadata.gz: 3550c64e691e692c9e896078f269ecc8ef5035b3ce4c110df0020aa47cdd6d6c5e3b1bb47b58f06ef57db16b57a96510d6ac8509713fd3ff4f299519810842f1
7
+ data.tar.gz: 2e6f979c104a3c2d175894d0cc3e0ad08531abdc9bbfb8faa19cc2714c4d0e92bf18a2c2c6fa042f7a30a8228842167ea44ece6350482a4d886d2e344fedce98
data/CHANGELOG.md CHANGED
@@ -21,6 +21,23 @@ Given a version number MAJOR.MINOR.PATCH, increment the:
21
21
 
22
22
  ## [Unreleased]
23
23
 
24
+ ## [v1.2.0] - 2020-03-25
25
+ ### Added
26
+ - New variable `clear_failures` for future use.
27
+ - New Slack class to control the message template.
28
+
29
+ ### Changed
30
+ - Updated Slack messaging to newer version to future proof.
31
+ - Current directory fix now updates MAGE_ROOT as well.
32
+ - Standardised tasks order based on key capistrano core tasks.
33
+
34
+ ### Removed
35
+ - Removed dotenv from the gem.
36
+
37
+ ### Fixed
38
+ - Fix issue when there were less than CAP_KEEP_BACKUPS available.
39
+
40
+
24
41
  ## [v1.1.0] - 2020-02-24
25
42
  ### Added
26
43
  - Added defaults for the :wp_backup, :keep_backups and :slack_channel instead of using ENV's
data/README.md CHANGED
@@ -7,7 +7,7 @@ It is advised to use bundler.
7
7
 
8
8
  1. Add the following to your projects `Gemfile`
9
9
  ```
10
- gem "capistrano-sozo_magento2", "~> 1.1"
10
+ gem "capistrano-sozo_magento2", "~> 1.2"
11
11
  ```
12
12
  2. Install
13
13
  ```
@@ -17,7 +17,8 @@ Gem::Specification.new do |spec|
17
17
  spec.bindir = "bin"
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = '>= 2.5.3'
20
22
 
21
23
  spec.add_dependency "capistrano", "~> 3.9"
22
- spec.add_dependency "dotenv", "~> 2.2"
23
24
  end
@@ -1,6 +1,4 @@
1
1
  require 'date'
2
- require 'dotenv'
3
- Dotenv.load
4
2
 
5
3
  SSHKit.config.command_map[:composer] = 'php -dmemory_limit=-1 -f /usr/local/bin/composer'
6
4
  SSHKit.config.command_map[:n98magerun] = '/usr/local/bin/n98-magerun'
@@ -19,33 +17,33 @@ load File.expand_path('../tasks/server.rake', __FILE__)
19
17
  load File.expand_path('../tasks/wordpress.rake', __FILE__)
20
18
 
21
19
  after 'deploy:updating', 'composer:install'
22
- after 'composer:install', 'magento:setup:permissions'
20
+ after 'deploy:updating', 'magento:setup:permissions'
23
21
 
24
22
  before 'deploy:updated', 'slack:deploying'
25
- after 'slack:deploying', 'db:backup'
26
- after 'db:backup', 'sozo:config:setup'
27
- after 'sozo:config:setup', 'magento:maintenance:enable'
23
+ before 'deploy:updated', 'db:backup'
24
+ before 'deploy:updated', 'sozo:config:setup'
25
+ before 'deploy:updated', 'magento:maintenance:enable'
28
26
 
29
27
  after 'deploy:updated', 'provision:setup_dir'
30
- after 'provision:setup_dir', 'magento:setup:upgrade'
31
- after 'magento:setup:upgrade', 'magento:setup:di:compile'
32
- after 'magento:setup:di:compile', 'magento:setup:static-content:deploy'
33
- after 'magento:setup:static-content:deploy', 'provision:permissions'
28
+ after 'deploy:updated', 'magento:setup:upgrade'
29
+ after 'deploy:updated', 'magento:setup:di:compile'
30
+ after 'deploy:updated', 'magento:setup:static-content:deploy'
31
+ after 'deploy:updated', 'provision:permissions'
34
32
 
35
33
  after 'deploy:finishing', 'sozo:symlink'
36
- after 'sozo:symlink', 'fishpig:setup:install_theme'
37
- after 'fishpig:setup:install_theme', 'wordpress:sozo_mu'
38
- after 'wordpress:sozo_mu', 'wordpress:cleanup'
39
- after 'wordpress:cleanup', 'sozo:optimise'
40
- after 'sozo:optimise', 'server:service:restart'
41
- after 'server:service:restart', 'magento:maintenance:disable'
34
+ after 'deploy:finishing', 'fishpig:setup:install_theme'
35
+ after 'deploy:finishing', 'wordpress:sozo_mu'
36
+ after 'deploy:finishing', 'wordpress:cleanup'
37
+ after 'deploy:finishing', 'sozo:optimise'
38
+ after 'deploy:finishing', 'server:service:restart'
39
+ after 'deploy:finishing', 'magento:maintenance:disable'
42
40
 
43
41
  after 'deploy:finished', "slack:deployed"
44
- after 'slack:deployed', "db:cleanup"
42
+ after 'deploy:finished', "db:cleanup"
45
43
 
46
44
  after 'deploy:failed', "slack:failed"
47
- after 'slack:failed', "sozo:fix_current"
48
- after 'sozo:fix_current', 'magento:maintenance:disable'
45
+ after 'deploy:failed', "sozo:fix_current"
46
+ after 'deploy:failed', 'magento:maintenance:disable'
49
47
 
50
48
  namespace :load do
51
49
  task :defaults do
@@ -35,4 +35,8 @@ set :slack_channel, fetch(:slack_channel, '#deployments')
35
35
  set :slack_webhook, 'https://hooks.slack.com/services/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'
36
36
 
37
37
  # Deployment defaults
38
- set :magento_deploy_confirm_roles, fetch(:magento_deploy_confirm_roles, [])
38
+ set :magento_deploy_confirm_roles, fetch(:magento_deploy_confirm_roles, [])
39
+
40
+ # Other defaults (for future use)
41
+ # Clear or leave the failed deployment dirs
42
+ set :clear_failures, fetch(:clear_failures, true)
@@ -0,0 +1,64 @@
1
+ require 'json'
2
+
3
+ include Capistrano::DSL
4
+
5
+ module SozoMagento2
6
+ module Slack
7
+ def message_hash
8
+ {
9
+ "channel" => fetch(:slack_channel),
10
+ "username" => "SOZO Deploy Bot",
11
+ "icon_emoji" => ":satellite:",
12
+ "color" => "good",
13
+ "blocks" => [
14
+ {
15
+ "type" => "header",
16
+ "text" => {
17
+ "type" => "plain_text",
18
+ "text" => "Deployment Process Begun"
19
+ }
20
+ },
21
+ {
22
+ "type" => "divider"
23
+ },
24
+ {
25
+ "type" => "section",
26
+ "text" => {
27
+ "type" => "mrkdwn",
28
+ "text" => "#{fetch(:url)} is being Deployed"
29
+ },
30
+ "accessory" => {
31
+ "type" => "button",
32
+ "style" => "primary",
33
+ "text" => {
34
+ "type" => "plain_text",
35
+ "text" => "Visit Site",
36
+ "emoji" => true
37
+ },
38
+ "value" => "click_me_123",
39
+ "url" => fetch(:url),
40
+ "action_id" => "button-action"
41
+ }
42
+ },
43
+ {
44
+ "type" => "section",
45
+ "fields" => [
46
+ {
47
+ "type" => "mrkdwn",
48
+ "text" => "*Branch:*\n#{fetch(:branch)}"
49
+ },
50
+ {
51
+ "type" => "mrkdwn",
52
+ "text" => "*Developer:*\n#{fetch(:local_user)}"
53
+ },
54
+ {
55
+ "type" => "mrkdwn",
56
+ "text" => "*Environment:*\n#{fetch(:environment)}"
57
+ }
58
+ ]
59
+ }
60
+ ]
61
+ }
62
+ end
63
+ end
64
+ end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module SozoMagento2
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -49,11 +49,11 @@ namespace :db do
49
49
  files = (valid - valid.last(fetch(:keep_backups).to_i)).map do |backup|
50
50
  "#{fetch(:backupdir)}" + "/" + (backup).to_s
51
51
  end
52
- end
53
52
 
54
- if files.any?
55
- files.each_slice(100) do |files_batch|
56
- execute :rm, "-f", *files_batch
53
+ if files.any?
54
+ files.each_slice(100) do |files_batch|
55
+ execute :rm, "-f", *files_batch
56
+ end
57
57
  end
58
58
  end
59
59
  end
@@ -1,29 +1,46 @@
1
+ require 'capistrano/sozo_magento2/slack'
2
+ require 'json'
3
+
4
+ include SozoMagento2::Slack
5
+
1
6
  namespace :slack do
2
7
  desc "Post to channel that the site has been deployed"
3
8
  task :deployed do
4
9
  on roles(:all) do
5
- execute :curl, "-X", "POST", "--data-urlencode", "'payload={\"channel\": \"#{fetch(:slack_channel)}\", \"username\": \"SOZO Deploy Bot\", \"pretext\": \"Deployment Successful\", \"text\": \"<#{fetch(:url)}> Deployed\", \"icon_emoji\": \":satellite:\", \"color\": \"good\", \"fields\": [{ \"title\": \"Branch\", \"value\": \"#{fetch(:branch)}\", \"short\": \"true\" },{ \"title\": \"Environment\", \"value\": \"#{fetch(:environment)}\", \"short\": \"true\" }]}'", "#{fetch(:slack_webhook)}"
10
+ slack_template = message_hash
11
+ slack_template['blocks'][0]['text']['text'] = ":smile: Deployment Successful :smile:"
12
+ slack_template['blocks'][2]['text']['text'] = "#{fetch(:url)} Deployed."
13
+ execute :curl, "--request", "POST", "--header", "'Content-Type: application/json'", "--data", "'" + JSON.generate(slack_template) + "'", fetch(:slack_webhook)
6
14
  end
7
15
  end
8
16
 
9
17
  desc "Post to channel that the site is being deployed"
10
18
  task :deploying do
11
19
  on roles(:all) do
12
- execute :curl, "-X", "POST", "--data-urlencode", "'payload={\"channel\": \"#{fetch(:slack_channel)}\", \"username\": \"SOZO Deploy Bot\", \"pretext\": \"Deployment Process Begun\", \"text\": \"<#{fetch(:url)}> is being Deployed\", \"icon_emoji\": \":satellite:\", \"color\": \"warning\", \"fields\": [{ \"title\": \"Branch\", \"value\": \"#{fetch(:branch)}\", \"short\": \"true\" },{ \"title\": \"Environment\", \"value\": \"#{fetch(:environment)}\", \"short\": \"true\" }]}'", "#{fetch(:slack_webhook)}"
20
+ slack_template = message_hash
21
+ slack_template['blocks'][0]['text']['text'] = ":crossed_fingers: Deployment Process Begun :crossed_fingers:"
22
+ slack_template['blocks'][2]['text']['text'] = "#{fetch(:url)} is being Deployed."
23
+ execute :curl, "--request", "POST", "--header", "'Content-Type: application/json'", "--data", "'" + JSON.generate(slack_template) + "'", fetch(:slack_webhook)
13
24
  end
14
25
  end
15
26
 
16
27
  desc "Post to channel that something is happening"
17
28
  task :message do
18
29
  on roles(:all) do
19
- execute :curl, "-X", "POST", "--data-urlencode", "'payload={\"channel\": \"#{fetch(:slack_channel)}\", \"username\": \"SOZO Deploy Bot\", \"pretext\": \"Next stage\", \"text\": \"<#{fetch(:url)}> is stage change\", \"icon_emoji\": \":satellite:\", \"color\": \"good\", \"fields\": [{ \"title\": \"Branch\", \"value\": \"#{fetch(:branch)}\", \"short\": \"true\" },{ \"title\": \"Environment\", \"value\": \"#{fetch(:environment)}\", \"short\": \"true\" }]}'", "#{fetch(:slack_webhook)}"
30
+ slack_template = message_hash
31
+ slack_template['blocks'][0]['text']['text'] = "Message"
32
+ slack_template['blocks'][2]['text']['text'] = "Some message to go here"
33
+ execute :curl, "--request", "POST", "--header", "'Content-Type: application/json'", "--data", "'" + JSON.generate(slack_template) + "'", fetch(:slack_webhook)
20
34
  end
21
35
  end
22
36
 
23
37
  desc "Post to channel that the site deployment has failed"
24
38
  task :failed do
25
39
  on roles(:all) do
26
- execute :curl, "-X", "POST", "--data-urlencode", "'payload={\"channel\": \"#{fetch(:slack_channel)}\", \"username\": \"SOZO Deploy Bot\", \"pretext\": \"Deployment Process Failed\", \"text\": \"<#{fetch(:url)}> deployment has failed\", \"icon_emoji\": \":satellite:\", \"color\": \"warning\", \"fields\": [{ \"title\": \"Branch\", \"value\": \"#{fetch(:branch)}\", \"short\": \"true\" },{ \"title\": \"Environment\", \"value\": \"#{fetch(:environment)}\", \"short\": \"true\" }]}'", "#{fetch(:slack_webhook)}"
40
+ slack_template = message_hash
41
+ slack_template['blocks'][0]['text']['text'] = ":boom: Deployment Process Failed :boom:"
42
+ slack_template['blocks'][2]['text']['text'] = "#{fetch(:url)} deployment has failed."
43
+ execute :curl, "--request", "POST", "--header", "'Content-Type: application/json'", "--data", "'" + JSON.generate(slack_template) + "'", fetch(:slack_webhook)
27
44
  end
28
45
  end
29
46
  end
@@ -10,6 +10,7 @@ namespace :sozo do
10
10
  info "Creating symlink from #{fetch(:deploy_to)}/releases/#{valid.last} to #{fetch(:deploy_to)}/current"
11
11
 
12
12
  execute :ln, "-sf", "#{fetch(:deploy_to)}/releases/#{valid.last}", "#{fetch(:deploy_to)}/current"
13
+ execute :ln, "-sf", "#{fetch(:deploy_to)}/releases/#{valid.last}", "#{fetch(:mage_root)}"
13
14
  end
14
15
  end
15
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-sozo_magento2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clive Walkden
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-24 00:00:00.000000000 Z
11
+ date: 2021-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.9'
27
- - !ruby/object:Gem::Dependency
28
- name: dotenv
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.2'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.2'
41
27
  description: Magento 2 support for Capistrano 3.x in SOZO hosted environments
42
28
  email:
43
29
  - clive@sozodesign.co.uk
@@ -54,6 +40,7 @@ files:
54
40
  - capistrano-sozo_magento.gemspec
55
41
  - lib/capistrano/sozo_magento2.rb
56
42
  - lib/capistrano/sozo_magento2/defaults.rb
43
+ - lib/capistrano/sozo_magento2/slack.rb
57
44
  - lib/capistrano/sozo_magento2/version.rb
58
45
  - lib/capistrano/tasks/composer.rake
59
46
  - lib/capistrano/tasks/db.rake
@@ -78,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
65
  requirements:
79
66
  - - ">="
80
67
  - !ruby/object:Gem::Version
81
- version: '0'
68
+ version: 2.5.3
82
69
  required_rubygems_version: !ruby/object:Gem::Requirement
83
70
  requirements:
84
71
  - - ">="