capistrano-sozo_magento2 1.1.0 → 1.2.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: 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
  - - ">="