papa 0.6.2 → 0.7.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/.papa.config.yml.example +1 -0
- data/CHANGELOG.md +12 -0
- data/README.md +29 -5
- data/USAGE.md +9 -1
- data/lib/papa/command/git/merge.rb +3 -0
- data/lib/papa/command/larga/deploy.rb +32 -21
- data/lib/papa/command/slack/send_message.rb +33 -0
- data/lib/papa/helper/config.rb +33 -0
- data/lib/papa/helper/logger.rb +18 -0
- data/lib/papa/helper/output.rb +25 -8
- data/lib/papa/task/base.rb +46 -0
- data/lib/papa/task/common/add.rb +31 -54
- data/lib/papa/task/common/deploy.rb +11 -18
- data/lib/papa/task/common/finish.rb +28 -38
- data/lib/papa/task/common/start.rb +7 -23
- data/lib/papa/task/hotfix/add.rb +1 -0
- data/lib/papa/task/hotfix/deploy.rb +1 -0
- data/lib/papa/task/hotfix/finish.rb +1 -0
- data/lib/papa/task/hotfix/start.rb +1 -0
- data/lib/papa/task/integration/add.rb +1 -0
- data/lib/papa/task/integration/deploy.rb +1 -0
- data/lib/papa/task/integration/start.rb +1 -0
- data/lib/papa/task/release/add.rb +1 -0
- data/lib/papa/task/release/finish.rb +1 -0
- data/lib/papa/task/release/start.rb +1 -0
- data/lib/papa/version.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3d3673db02cd16b804010fa3df5884f1b2e97d33e8a3dca2609af7eb0a20614a
|
4
|
+
data.tar.gz: 5cf1be5f8044e36c2dfe57cf573234ca2922a0a476cb635e75762488687832c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e00a8b49144a6f15b5cb7ffc569238b977c08e0277b9731c3f0a7e8403d8e2e083a864b05a44f82efa0bdf680f23832e8cdce48f158b569aaed685ff846312b
|
7
|
+
data.tar.gz: 4832a8e1f7547d96469f6a1d8f7be71479d53df9235717e6f2ee7e87c3f41cc7c36e2b100f4644547b3be8d271719d8e256af5b8076594675a7f1f02840ab15b
|
@@ -0,0 +1 @@
|
|
1
|
+
slack_webhook: https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.7.0
|
4
|
+
* All output will be logged to a log file in the current working directory
|
5
|
+
* Properly determine whether to build or redeploy an integration or hotfix environment
|
6
|
+
* Destroy old outdated integration or hotfix environments if a different branch is to be deployed
|
7
|
+
* Slack notifications for integration and hotfix deployments
|
8
|
+
* Add documentation for the `-b` option in `papa hotfix finish`
|
9
|
+
* Minor documentation formatting changes
|
10
|
+
|
11
|
+
## 0.6.3
|
12
|
+
* Fixed bug when cleaning up after a failed `git merge`
|
13
|
+
* Exit out of `papa [hotfix, release] finish` when one of the base branches fails to be merged on
|
14
|
+
|
3
15
|
## 0.6.2
|
4
16
|
* Reset build branch from origin every time a new branch is added
|
5
17
|
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Papa [](https://rubygems.org/gems/papa) [](https://travis-ci.org/b-ggs/papa)
|
2
2
|
|
3
3
|
Helper tool for inDinero's git workflow. Ako ang papa mo.
|
4
4
|
|
@@ -7,20 +7,40 @@ Helper tool for inDinero's git workflow. Ako ang papa mo.
|
|
7
7
|
* [Getting Started](#getting-started)
|
8
8
|
* [Commands](#commands)
|
9
9
|
* [papa release](#papa-release)
|
10
|
+
* [start](#starting-a-release-branch)
|
11
|
+
* [add](#adding-feature-branches-to-a-release-branch)
|
12
|
+
* [finish](#finishing-a-release-branch)
|
10
13
|
* [papa hotfix](#papa-hotfix)
|
14
|
+
* [start](#starting-a-hotfix-branch)
|
15
|
+
* [add](#adding-bugfix-branches-to-a-hotfix-branch)
|
16
|
+
* [deploy](#deploying-a-hotfix-branch-to-a-hotfix-environment)
|
17
|
+
* [finish](#finishing-a-hotfix-branch)
|
11
18
|
* [papa integration](#papa-integration)
|
12
|
-
|
19
|
+
* [start](#starting-an-integration-branch)
|
20
|
+
* [add](#adding-branches-to-an-integration-branch)
|
21
|
+
* [deploy](#deploying-an-integration-branch-to-an-integration-environment)
|
13
22
|
* [papa sandbox](#papa-sandbox)
|
23
|
+
* [generate](#papa-sandbox)
|
14
24
|
|
15
25
|
## Getting Started
|
16
26
|
|
17
|
-
Install `papa` from Rubygems
|
27
|
+
### Install `papa` from Rubygems
|
18
28
|
|
19
29
|
```
|
20
30
|
$ gem install papa
|
21
31
|
```
|
22
32
|
|
23
|
-
|
33
|
+
### Set up configs
|
34
|
+
|
35
|
+
Create a config file in `~/.papa.config.yml`.
|
36
|
+
|
37
|
+
An example config file can be found in `.papa.config.yml.example`.
|
38
|
+
|
39
|
+
tl;dr:
|
40
|
+
|
41
|
+
```
|
42
|
+
echo 'slack_webhook: YOUR_SLACK_WEBHOOK_URL_HERE' > ~/.papa.config.yml
|
43
|
+
```
|
24
44
|
|
25
45
|
## Usage
|
26
46
|
|
@@ -86,7 +106,11 @@ $ papa hotfix deploy -v 17.12.0
|
|
86
106
|
#### Finishing a hotfix branch
|
87
107
|
|
88
108
|
```
|
89
|
-
$ papa
|
109
|
+
$ papa hotfix finish -v 17.12.0
|
110
|
+
```
|
111
|
+
|
112
|
+
```
|
113
|
+
$ papa hotfix finish -v 17.12.0 -b release/17.11.0
|
90
114
|
```
|
91
115
|
|
92
116
|
### `papa integration`
|
data/USAGE.md
CHANGED
@@ -121,15 +121,23 @@ $ papa hotfix deploy -v 17.12.0
|
|
121
121
|
The finished hotfix branch will be merged to `master` and `develop`. The updated `master` and `develop` branches will be pushed to origin.
|
122
122
|
|
123
123
|
```
|
124
|
-
$ papa release hotfix -v, --version=VERSION
|
124
|
+
$ papa release hotfix -v, --version=VERSION [-b, --additional-branches=one two three]
|
125
125
|
```
|
126
126
|
|
127
|
+
If `--additional-branches` is specified, the hotfix branch will also be merged to the specified branches.
|
128
|
+
|
127
129
|
#### Sample Usage:
|
128
130
|
|
129
131
|
```
|
130
132
|
$ papa release hotfix -v 17.12.0
|
131
133
|
```
|
132
134
|
|
135
|
+
If the hotfix branch will also be merged to a release branch:
|
136
|
+
|
137
|
+
```
|
138
|
+
$ papa hotfix finish -v 17.12.0 -b release/17.11.0
|
139
|
+
```
|
140
|
+
|
133
141
|
## `papa integration`
|
134
142
|
|
135
143
|
#### Starting an integration branch
|
@@ -4,10 +4,8 @@ module Papa
|
|
4
4
|
module Command
|
5
5
|
module Larga
|
6
6
|
class Deploy < Command::Base
|
7
|
-
|
8
|
-
|
9
|
-
RELEASE_OR_HOTFIX_PROTECTION = 'off'
|
10
|
-
DEFAULT_PROTECTION = 'on'
|
7
|
+
RELEASE_OR_INTEGRATION_LIFESPAN = '3d'
|
8
|
+
RELEASE_OR_INTEGRATION_PROTECTION = 'off'
|
11
9
|
|
12
10
|
def initialize(options)
|
13
11
|
@options = options
|
@@ -21,7 +19,7 @@ module Papa
|
|
21
19
|
@stdout = ''
|
22
20
|
IO.popen(command).each do |line|
|
23
21
|
@stdout << line
|
24
|
-
|
22
|
+
Helper::Output.info line
|
25
23
|
end
|
26
24
|
self
|
27
25
|
end
|
@@ -38,32 +36,45 @@ module Papa
|
|
38
36
|
private
|
39
37
|
|
40
38
|
def larga_options
|
39
|
+
action = determine_action
|
41
40
|
branch = @options[:branch]
|
42
|
-
lifespan =
|
43
|
-
|
44
|
-
RELEASE_OR_HOTFIX_LIFESPAN
|
45
|
-
else
|
46
|
-
DEFAULT_LIFESPAN
|
47
|
-
end
|
48
|
-
protection =
|
49
|
-
if branch_is_release_or_hotfix?
|
50
|
-
RELEASE_OR_HOTFIX_PROTECTION
|
51
|
-
else
|
52
|
-
DEFAULT_PROTECTION
|
53
|
-
end
|
41
|
+
lifespan = RELEASE_OR_INTEGRATION_LIFESPAN
|
42
|
+
protection = RELEASE_OR_INTEGRATION_PROTECTION
|
54
43
|
hostname = @options[:hostname]
|
55
44
|
|
56
45
|
options = []
|
57
|
-
options <<
|
46
|
+
options << "-action #{action}"
|
58
47
|
options << "-branch #{branch}"
|
59
48
|
options << "-lifespan #{lifespan}"
|
60
49
|
options << "-protection #{protection}"
|
61
|
-
options << "-hostname #{hostname}"
|
50
|
+
options << "-hostname #{hostname}"
|
62
51
|
options
|
63
52
|
end
|
64
53
|
|
65
|
-
def
|
66
|
-
|
54
|
+
def determine_action
|
55
|
+
previous_branches = `larga -action show -branch x | grep https://#{@options[:hostname]} | awk '{print $1}'`.chomp.split("\n")
|
56
|
+
if previous_branches.empty?
|
57
|
+
# If there are no old instances with the same hostname, continue building instance.
|
58
|
+
return 'build'
|
59
|
+
elsif previous_branches.count == 1 && previous_branches.include?(@options[:branch])
|
60
|
+
# If the old instance has the same branch name, skip building and just deploy.
|
61
|
+
return 'deploy'
|
62
|
+
else
|
63
|
+
# If all else fails, destroy old instance(s), and continue building.
|
64
|
+
destroy_old_instances(previous_branches)
|
65
|
+
return 'build'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def destroy_old_instances(previous_branches)
|
70
|
+
Helper::Output.stdout "Destroying old instances..."
|
71
|
+
previous_branches.each do |previous_branch|
|
72
|
+
destroy_command = "larga -action destroy -branch #{previous_branch}"
|
73
|
+
Helper::Output.stdout "Running #{destroy_command.bold}..."
|
74
|
+
IO.popen(destroy_command).each do |line|
|
75
|
+
Helper::Output.info line
|
76
|
+
end
|
77
|
+
end
|
67
78
|
end
|
68
79
|
end
|
69
80
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'papa/command/base'
|
2
|
+
require 'papa/helper/config'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Papa
|
6
|
+
module Command
|
7
|
+
module Slack
|
8
|
+
class SendMessage < Command::Base
|
9
|
+
def initialize(build_type, hostname, action)
|
10
|
+
@build_type = build_type
|
11
|
+
@hostname = hostname
|
12
|
+
@action = action
|
13
|
+
|
14
|
+
command = "curl -X POST --data-urlencode 'payload=#{payload.to_json}' #{webhook_url}"
|
15
|
+
super(command)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def payload
|
21
|
+
url = "https://#{@hostname}.indinerocorp.com"
|
22
|
+
{
|
23
|
+
'text' => "<!channel> Deployment to <#{url}|#{@build_type}> #{@action}."
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def webhook_url
|
28
|
+
Helper::Config.read["slack_webhook"]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'papa/helper/output'
|
3
|
+
|
4
|
+
module Papa
|
5
|
+
module Helper
|
6
|
+
class Config
|
7
|
+
def self.read
|
8
|
+
return @config if defined?(@config)
|
9
|
+
exit_on_config_not_exists unless config_exists?
|
10
|
+
@config = YAML.load_file(config_path)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.config_path
|
14
|
+
"#{Dir.home}/.papa.config.yml"
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.config_exists?
|
18
|
+
File.exists?(config_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.exit_on_config_not_exists
|
22
|
+
message = 'Cannot find config file.'
|
23
|
+
Helper::Output.failure message
|
24
|
+
info = <<-INFO
|
25
|
+
Make sure you have a valid config file in #{config_path}.
|
26
|
+
See README.md for more details.
|
27
|
+
INFO
|
28
|
+
Helper::Output.failure_info info
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Papa
|
2
|
+
module Helper
|
3
|
+
class Logger
|
4
|
+
def self.log(message)
|
5
|
+
File.open(log_path, 'a+') do |file|
|
6
|
+
file.puts message
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.log_path
|
11
|
+
return @log_path if defined?(@log_path)
|
12
|
+
command = ARGV.first(2).join('_')
|
13
|
+
timestamp = Time.now.strftime('%Y_%m_%d_%I_%M_%S')
|
14
|
+
@log_path = ['papa', command, timestamp].join('_') + '.log'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/papa/helper/output.rb
CHANGED
@@ -1,38 +1,55 @@
|
|
1
|
-
require '
|
1
|
+
require 'papa/helper/logger'
|
2
2
|
|
3
3
|
module Papa
|
4
4
|
module Helper
|
5
|
-
class
|
5
|
+
class Output
|
6
6
|
REDIRECT_TO_NULL = '> /dev/null 2>&1'
|
7
7
|
|
8
8
|
def self.stdout(message, options = {})
|
9
|
-
|
9
|
+
message = build_output(message)
|
10
|
+
puts message
|
11
|
+
Helper::Logger.log(message)
|
10
12
|
end
|
11
13
|
|
12
14
|
def self.stderr(message, options = {})
|
13
|
-
|
15
|
+
message = build_output(message)
|
16
|
+
STDERR.puts message
|
17
|
+
Helper::Logger.log(message)
|
14
18
|
end
|
15
19
|
|
16
20
|
def self.error(message)
|
17
|
-
|
21
|
+
message = "ERROR: #{message}"
|
22
|
+
stderr(message)
|
23
|
+
Helper::Logger.log(message)
|
18
24
|
end
|
19
25
|
|
20
26
|
def self.success(message)
|
27
|
+
message.strip!
|
21
28
|
puts
|
22
|
-
puts message.
|
29
|
+
puts message.green
|
30
|
+
Helper::Logger.log(message)
|
23
31
|
end
|
24
32
|
|
25
33
|
def self.failure(message)
|
34
|
+
message.strip!
|
26
35
|
STDERR.puts
|
27
|
-
STDERR.puts message.
|
36
|
+
STDERR.puts message.red
|
37
|
+
Helper::Logger.log(message)
|
28
38
|
end
|
29
39
|
|
30
40
|
def self.success_info(message)
|
31
41
|
puts message
|
42
|
+
Helper::Logger.log(message)
|
32
43
|
end
|
33
44
|
|
34
45
|
def self.failure_info(message)
|
35
46
|
STDERR.puts message
|
47
|
+
Helper::Logger.log(message)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.info(message)
|
51
|
+
puts message
|
52
|
+
Helper::Logger.log(message)
|
36
53
|
end
|
37
54
|
|
38
55
|
def self.build_output(message)
|
@@ -40,7 +57,7 @@ module Papa
|
|
40
57
|
end
|
41
58
|
|
42
59
|
def self.timestamp
|
43
|
-
|
60
|
+
Time.now.strftime('%I:%M:%S %p')
|
44
61
|
end
|
45
62
|
end
|
46
63
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'papa/command/git/fetch'
|
2
|
+
require 'papa/command/git/checkout'
|
3
|
+
require 'papa/runner'
|
4
|
+
require 'papa/helper/output'
|
5
|
+
|
6
|
+
module Papa
|
7
|
+
module Task
|
8
|
+
class Base
|
9
|
+
def run
|
10
|
+
perform_task
|
11
|
+
result
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def perform_task
|
17
|
+
runner = Runner.new(queue)
|
18
|
+
@success = runner.run
|
19
|
+
end
|
20
|
+
|
21
|
+
def result
|
22
|
+
if @success
|
23
|
+
success_message
|
24
|
+
else
|
25
|
+
failure_message
|
26
|
+
exit 1
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_branch
|
31
|
+
@build_branch ||= "#{@build_type}/#{@version}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def check_if_build_branch_exists
|
35
|
+
queue = [
|
36
|
+
Command::Git::Fetch.new('origin'),
|
37
|
+
Command::Git::Checkout.new(build_branch)
|
38
|
+
]
|
39
|
+
runner = Runner.new(queue)
|
40
|
+
return if runner.run
|
41
|
+
Helper::Output.failure 'Build branch does not exist.'
|
42
|
+
exit 1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/papa/task/common/add.rb
CHANGED
@@ -1,34 +1,36 @@
|
|
1
|
-
require 'papa/
|
2
|
-
require 'papa/command/git/fetch'
|
3
|
-
require 'papa/command/git/checkout'
|
1
|
+
require 'papa/task/base'
|
4
2
|
require 'papa/command/git/reset_hard'
|
5
3
|
require 'papa/command/git/rebase'
|
6
4
|
require 'papa/command/git/push_force'
|
7
5
|
require 'papa/command/git/merge'
|
8
6
|
require 'papa/command/git/push'
|
9
7
|
require 'papa/command/git/branch_delete'
|
10
|
-
require 'papa/runner'
|
11
8
|
|
12
9
|
module Papa
|
13
10
|
module Task
|
14
11
|
module Common
|
15
|
-
class Add
|
16
|
-
def
|
17
|
-
@build_branch ||= "#{@build_type}/#{@version}"
|
18
|
-
|
12
|
+
class Add < Base
|
13
|
+
def initialize
|
19
14
|
check_if_build_branch_exists
|
20
15
|
check_if_branches_are_given
|
21
|
-
|
22
|
-
success = true
|
23
16
|
@success_branches = []
|
24
17
|
@failed_branches = []
|
18
|
+
end
|
25
19
|
|
26
|
-
|
20
|
+
private
|
27
21
|
|
22
|
+
def check_if_branches_are_given
|
23
|
+
return unless @branches.empty?
|
24
|
+
require 'papa/helper/vi'
|
25
|
+
vi_file_helper = Helper::Vi.new
|
26
|
+
@branches = vi_file_helper.run
|
27
|
+
end
|
28
|
+
|
29
|
+
def perform_task
|
30
|
+
@success = true
|
28
31
|
@branches.each_with_index do |branch, index|
|
29
32
|
Helper::Output.stdout "Adding branch #{branch.bold} (#{index + 1} of #{@branches.count})..."
|
30
33
|
runner = Runner.new(queue(branch))
|
31
|
-
|
32
34
|
if runner.run
|
33
35
|
@success_branches << branch
|
34
36
|
else
|
@@ -37,60 +39,39 @@ module Papa
|
|
37
39
|
message: runner.last_error
|
38
40
|
}
|
39
41
|
@failed_branches << failed_branch
|
40
|
-
success = false
|
42
|
+
@success = false
|
41
43
|
end
|
42
44
|
end
|
43
|
-
|
44
|
-
success_and_failure_messages
|
45
|
-
|
46
|
-
if !success
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def check_if_build_branch_exists
|
54
|
-
queue = [
|
55
|
-
Command::Git::Fetch.new('origin'),
|
56
|
-
Command::Git::Checkout.new(@build_branch)
|
57
|
-
]
|
58
|
-
runner = Runner.new(queue)
|
59
|
-
return if runner.run
|
60
|
-
Helper::Output.failure 'Build branch does not exist.'
|
61
|
-
exit 1
|
62
45
|
end
|
63
46
|
|
64
47
|
def queue(branch)
|
65
48
|
[
|
66
|
-
Command::Git::Checkout.new(
|
67
|
-
Command::Git::ResetHard.new('origin',
|
49
|
+
Command::Git::Checkout.new(build_branch),
|
50
|
+
Command::Git::ResetHard.new('origin', build_branch),
|
68
51
|
Command::Git::Checkout.new(branch),
|
69
52
|
Command::Git::ResetHard.new('origin', branch),
|
70
|
-
Command::Git::Rebase.new(
|
53
|
+
Command::Git::Rebase.new(build_branch),
|
71
54
|
Command::Git::PushForce.new('origin', branch),
|
72
|
-
Command::Git::Checkout.new(
|
55
|
+
Command::Git::Checkout.new(build_branch),
|
73
56
|
Command::Git::Merge.new(branch),
|
74
57
|
Command::Git::BranchDelete.new(branch),
|
75
|
-
Command::Git::Push.new('origin',
|
58
|
+
Command::Git::Push.new('origin', build_branch)
|
76
59
|
]
|
77
60
|
end
|
78
61
|
|
79
|
-
def
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
@
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
success_message
|
88
|
-
failure_message
|
62
|
+
def result
|
63
|
+
if @success_branches.count > 0
|
64
|
+
success_message
|
65
|
+
end
|
66
|
+
if @failed_branches.count > 0
|
67
|
+
failure_message
|
68
|
+
exit 1
|
69
|
+
end
|
89
70
|
end
|
90
71
|
|
91
72
|
def success_message
|
92
|
-
|
93
|
-
Helper::Output.success
|
73
|
+
success_message = "Successfully added these branches to #{build_branch}:\n"
|
74
|
+
Helper::Output.success(success_message)
|
94
75
|
info = ''
|
95
76
|
@success_branches.each_with_index do |branch, index|
|
96
77
|
info << " #{index + 1}.) #{branch}\n"
|
@@ -99,9 +80,7 @@ module Papa
|
|
99
80
|
end
|
100
81
|
|
101
82
|
def failure_message
|
102
|
-
|
103
|
-
|
104
|
-
Helper::Output.failure "Failed to add these branches to #{@build_branch}:\n"
|
83
|
+
Helper::Output.failure "Failed to add these branches to #{build_branch}:\n"
|
105
84
|
info = ''
|
106
85
|
@failed_branches.each_with_index do |failed_branch, index|
|
107
86
|
branch = failed_branch[:branch]
|
@@ -110,11 +89,9 @@ module Papa
|
|
110
89
|
info << " - #{message}\n"
|
111
90
|
end
|
112
91
|
info << "\n"
|
113
|
-
|
114
92
|
branch_names = @failed_branches.map { |f| f[:branch] }
|
115
93
|
info << "When the above problems are resolved, you can re-run this with:\n"
|
116
94
|
info << " papa #{@build_type} add -v #{@version} -b #{branch_names.join(' ')}"
|
117
|
-
|
118
95
|
Helper::Output.failure_info info
|
119
96
|
end
|
120
97
|
end
|
@@ -1,23 +1,14 @@
|
|
1
|
-
require 'papa/
|
1
|
+
require 'papa/task/base'
|
2
2
|
require 'papa/command/larga/type'
|
3
3
|
require 'papa/command/larga/deploy'
|
4
|
-
require 'papa/
|
4
|
+
require 'papa/command/slack/send_message'
|
5
5
|
|
6
6
|
module Papa
|
7
7
|
module Task
|
8
8
|
module Common
|
9
|
-
class Deploy
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
runner = Runner.new(queue)
|
14
|
-
|
15
|
-
if runner.run
|
16
|
-
success_message
|
17
|
-
else
|
18
|
-
failure_message
|
19
|
-
exit 1
|
20
|
-
end
|
9
|
+
class Deploy < Base
|
10
|
+
def initialize
|
11
|
+
check_if_build_branch_exists
|
21
12
|
end
|
22
13
|
|
23
14
|
private
|
@@ -25,13 +16,15 @@ module Papa
|
|
25
16
|
def queue
|
26
17
|
[
|
27
18
|
Command::Larga::Type.new,
|
28
|
-
Command::
|
19
|
+
Command::Slack::SendMessage.new(@build_type, @hostname, 'started'),
|
20
|
+
Command::Larga::Deploy.new(deploy_options),
|
21
|
+
Command::Slack::SendMessage.new(@build_type, @hostname, 'done')
|
29
22
|
]
|
30
23
|
end
|
31
24
|
|
32
25
|
def deploy_options
|
33
26
|
{
|
34
|
-
branch:
|
27
|
+
branch: build_branch,
|
35
28
|
hostname: @hostname
|
36
29
|
}
|
37
30
|
end
|
@@ -39,7 +32,7 @@ module Papa
|
|
39
32
|
def success_message
|
40
33
|
Helper::Output.success 'Successfully deployed larga instance.'
|
41
34
|
info = ''
|
42
|
-
info << " Branch: #{
|
35
|
+
info << " Branch: #{build_branch}\n"
|
43
36
|
info << " URL: https://#{@hostname}.indinerocorp.com\n"
|
44
37
|
Helper::Output.success_info info
|
45
38
|
end
|
@@ -47,7 +40,7 @@ module Papa
|
|
47
40
|
def failure_message
|
48
41
|
Helper::Output.failure 'There was a problem deploying larga instance.'
|
49
42
|
info = ''
|
50
|
-
info << " Branch: #{
|
43
|
+
info << " Branch: #{build_branch}\n"
|
51
44
|
Helper::Output.failure_info info
|
52
45
|
end
|
53
46
|
end
|
@@ -1,60 +1,41 @@
|
|
1
|
-
require 'papa/
|
2
|
-
require 'papa/command/git/checkout'
|
1
|
+
require 'papa/task/base'
|
3
2
|
require 'papa/command/git/merge'
|
3
|
+
require 'papa/command/git/reset_hard'
|
4
4
|
require 'papa/command/git/push'
|
5
5
|
require 'papa/command/git/tag'
|
6
6
|
require 'papa/command/git/tag_push'
|
7
|
-
require 'papa/runner'
|
8
|
-
require 'papa/helper/output'
|
9
7
|
|
10
8
|
module Papa
|
11
9
|
module Task
|
12
10
|
module Common
|
13
|
-
class Finish
|
14
|
-
def
|
15
|
-
@build_branch ||= "#{@build_type}/#{@version}"
|
16
|
-
|
11
|
+
class Finish < Base
|
12
|
+
def initialize
|
17
13
|
check_if_build_branch_exists
|
18
|
-
|
19
|
-
success = true
|
20
14
|
@success_branches = []
|
15
|
+
@failed_branches = []
|
16
|
+
end
|
21
17
|
|
18
|
+
private
|
19
|
+
|
20
|
+
def perform_task
|
21
|
+
@success = true
|
22
22
|
@base_branches.each do |branch|
|
23
23
|
runner = Runner.new(queue(branch))
|
24
|
-
|
25
24
|
if runner.run
|
26
25
|
@success_branches << branch
|
27
26
|
else
|
28
|
-
|
27
|
+
@failed_branches << branch
|
28
|
+
@success = false
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
32
|
-
if success
|
33
|
-
success_message
|
34
|
-
else
|
35
|
-
failure_message
|
36
|
-
exit 1
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def check_if_build_branch_exists
|
43
|
-
queue = [
|
44
|
-
Command::Git::Fetch.new('origin'),
|
45
|
-
Command::Git::Checkout.new(@build_branch)
|
46
|
-
]
|
47
|
-
runner = Runner.new(queue)
|
48
|
-
return if runner.run
|
49
|
-
Helper::Output.failure 'Build branch does not exist.'
|
50
|
-
exit 1
|
51
31
|
end
|
52
32
|
|
53
33
|
def queue(branch)
|
54
34
|
queue = [
|
55
|
-
Command::Git::Checkout.new(
|
35
|
+
Command::Git::Checkout.new(build_branch),
|
56
36
|
Command::Git::Checkout.new(branch),
|
57
|
-
Command::Git::
|
37
|
+
Command::Git::ResetHard.new('origin', branch),
|
38
|
+
Command::Git::Merge.new(build_branch),
|
58
39
|
Command::Git::Push.new('origin', branch)
|
59
40
|
]
|
60
41
|
if @tag_name && branch == 'master'
|
@@ -64,8 +45,18 @@ module Papa
|
|
64
45
|
queue
|
65
46
|
end
|
66
47
|
|
48
|
+
def result
|
49
|
+
if @success_branches.count > 0
|
50
|
+
success_message
|
51
|
+
end
|
52
|
+
if @failed_branches.count > 0
|
53
|
+
failure_message
|
54
|
+
exit 1
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
67
58
|
def success_message
|
68
|
-
Helper::Output.success "Successfully merged #{
|
59
|
+
Helper::Output.success "Successfully merged #{build_branch} to these branches:\n"
|
69
60
|
info = ''
|
70
61
|
@success_branches.each_with_index do |branch, index|
|
71
62
|
info << " #{index + 1}.) #{branch}\n"
|
@@ -74,10 +65,9 @@ module Papa
|
|
74
65
|
end
|
75
66
|
|
76
67
|
def failure_message
|
77
|
-
|
78
|
-
Helper::Output.failure "Failed to merge #{@build_branch} to these branches:\n"
|
68
|
+
Helper::Output.failure "Failed to merge #{build_branch} to these branches:\n"
|
79
69
|
info = ''
|
80
|
-
failed_branches.each_with_index do |branch, index|
|
70
|
+
@failed_branches.each_with_index do |branch, index|
|
81
71
|
info << " #{index + 1}.) #{branch}\n"
|
82
72
|
end
|
83
73
|
Helper::Output.failure_info info
|
@@ -1,45 +1,29 @@
|
|
1
|
-
require 'papa/
|
2
|
-
require 'papa/command/git/checkout'
|
1
|
+
require 'papa/task/base'
|
3
2
|
require 'papa/command/git/branch'
|
4
3
|
require 'papa/command/git/push'
|
5
|
-
require 'papa/runner'
|
6
|
-
require 'papa/helper/output'
|
7
4
|
|
8
5
|
module Papa
|
9
6
|
module Task
|
10
7
|
module Common
|
11
|
-
class Start
|
12
|
-
def run
|
13
|
-
@build_branch ||= "#{@build_type}/#{@version}"
|
14
|
-
|
15
|
-
runner = Runner.new(queue)
|
16
|
-
|
17
|
-
if runner.run
|
18
|
-
success_message
|
19
|
-
else
|
20
|
-
failure_message
|
21
|
-
exit 1
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
8
|
+
class Start < Base
|
25
9
|
private
|
26
10
|
|
27
11
|
def queue
|
28
12
|
[
|
29
13
|
Command::Git::Fetch.new('origin'),
|
30
14
|
Command::Git::Checkout.new(@base_branch),
|
31
|
-
Command::Git::Branch.new(
|
32
|
-
Command::Git::Checkout.new(
|
33
|
-
Command::Git::Push.new('origin',
|
15
|
+
Command::Git::Branch.new(build_branch),
|
16
|
+
Command::Git::Checkout.new(build_branch),
|
17
|
+
Command::Git::Push.new('origin', build_branch)
|
34
18
|
]
|
35
19
|
end
|
36
20
|
|
37
21
|
def success_message
|
38
|
-
Helper::Output.success "Successfully started new #{@build_type} branch #{
|
22
|
+
Helper::Output.success "Successfully started new #{@build_type} branch #{build_branch}"
|
39
23
|
end
|
40
24
|
|
41
25
|
def failure_message
|
42
|
-
Helper::Output.failure "There was a problem starting #{@build_type} branch: #{
|
26
|
+
Helper::Output.failure "There was a problem starting #{@build_type} branch: #{build_branch}"
|
43
27
|
end
|
44
28
|
end
|
45
29
|
end
|
data/lib/papa/task/hotfix/add.rb
CHANGED
data/lib/papa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: papa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- boggs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -75,6 +75,7 @@ extensions: []
|
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
77
|
- ".gitignore"
|
78
|
+
- ".papa.config.yml.example"
|
78
79
|
- ".rspec"
|
79
80
|
- ".travis.yml"
|
80
81
|
- CHANGELOG.md
|
@@ -107,11 +108,15 @@ files:
|
|
107
108
|
- lib/papa/command/git/tag_push.rb
|
108
109
|
- lib/papa/command/larga/deploy.rb
|
109
110
|
- lib/papa/command/larga/type.rb
|
111
|
+
- lib/papa/command/slack/send_message.rb
|
112
|
+
- lib/papa/helper/config.rb
|
113
|
+
- lib/papa/helper/logger.rb
|
110
114
|
- lib/papa/helper/output.rb
|
111
115
|
- lib/papa/helper/path.rb
|
112
116
|
- lib/papa/helper/vi.rb
|
113
117
|
- lib/papa/runner.rb
|
114
118
|
- lib/papa/string.rb
|
119
|
+
- lib/papa/task/base.rb
|
115
120
|
- lib/papa/task/common/add.rb
|
116
121
|
- lib/papa/task/common/deploy.rb
|
117
122
|
- lib/papa/task/common/finish.rb
|
@@ -159,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
164
|
version: '0'
|
160
165
|
requirements: []
|
161
166
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.
|
167
|
+
rubygems_version: 2.7.3
|
163
168
|
signing_key:
|
164
169
|
specification_version: 4
|
165
170
|
summary: Helper gem for inDinero's git workflow
|