capistrano-semver-git-tags 0.0.2 → 0.1.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/README.md +6 -1
- data/lib/capistrano/tasks/semver-tag.rake +46 -47
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46395cedc303ac36ec8b07c5278d8c225fbca33d
|
4
|
+
data.tar.gz: 06af0ef0b6e68fc46a5f6502589ef05d1608a65c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 686cc158a38677694573ab3dbb61b662735b1e10bb429d22c32bad50a2ecbc6377dcbe1cb356cadba9492a04cfe88da5f3282e8f2868230775e71b066fec9dca
|
7
|
+
data.tar.gz: ac6d18c4f1de4356f7d97ff38c09f2762a9bbb20c1620c8dcd97c776e427bb1969d604ce3f5436603b7d87d6533f79f7a496337be284285327570a24715d1eda
|
data/README.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
A Capistrano tasks for generating a semantic version Git tag at each deployment.
|
4
4
|
|
5
|
+
### Prerequisite
|
6
|
+
|
7
|
+
- Capistrano 3
|
8
|
+
- Git 2.1+
|
9
|
+
|
5
10
|
### Usage
|
6
11
|
|
7
12
|
capistrano-semver-git-tags is available on [rubygems.org](https://rubygems.org/gems/capistrano-semver-git-tags).
|
@@ -11,7 +16,7 @@ to the `development` group of your Gemfile with `require: false`:
|
|
11
16
|
```ruby
|
12
17
|
# Gemfile
|
13
18
|
group :development do
|
14
|
-
gem 'capistrano-semver-git-tags', require: false
|
19
|
+
gem 'capistrano-semver-git-tags', '~> 0.1.0', require: false
|
15
20
|
end
|
16
21
|
```
|
17
22
|
|
@@ -1,62 +1,61 @@
|
|
1
1
|
require 'capistrano'
|
2
2
|
|
3
|
-
|
3
|
+
namespace :deploy do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
5
|
+
before :set_current_revision, :semver_tag do
|
6
|
+
invoke 'git:tags:push_deploy_tag' unless fetch(:semantic_version).nil?
|
7
|
+
end
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
task :major do
|
10
|
+
set :semantic_version, :major
|
11
|
+
invoke :deploy
|
12
|
+
end
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
task :minor do
|
15
|
+
set :semantic_version, :minor
|
16
|
+
invoke :deploy
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
19
|
+
task :patch do
|
20
|
+
set :semantic_version, :patch
|
21
|
+
invoke :deploy
|
24
22
|
end
|
25
23
|
|
26
|
-
|
24
|
+
end
|
25
|
+
|
26
|
+
namespace :git do
|
27
27
|
|
28
|
-
|
28
|
+
namespace :tags do
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
exit
|
39
|
-
end
|
40
|
-
major, minor, patch = old_tag.split('.')
|
41
|
-
case fetch(:semantic_version)
|
42
|
-
when :major
|
43
|
-
major = major.to_i + 1
|
44
|
-
minor = 0
|
45
|
-
patch = 0
|
46
|
-
when :minor
|
47
|
-
minor = minor.to_i + 1
|
48
|
-
patch = 0
|
49
|
-
when :patch
|
50
|
-
patch = patch.to_i + 1
|
51
|
-
end
|
52
|
-
new_tag = "#{major}.#{minor}.#{patch}"
|
53
|
-
user = `git config --get user.name`.chomp
|
54
|
-
email = `git config --get user.email`.chomp
|
55
|
-
puts `git tag #{new_tag} -m "Deployed by #{user} <#{email}>"`
|
56
|
-
puts `git push --tags origin`
|
30
|
+
desc "Place semantic version tag into Git and push it to server."
|
31
|
+
task :push_deploy_tag do
|
32
|
+
puts `git fetch --tags`
|
33
|
+
last_commit_tag = `git describe --exact-match --tags HEAD`.chomp
|
34
|
+
if last_commit_tag.empty?
|
35
|
+
old_tag = `git tag --sort version:refname | tail -n1`.chomp
|
36
|
+
if old_tag.nil? || old_tag.empty?
|
37
|
+
old_tag = '0.0.0'
|
57
38
|
end
|
39
|
+
major, minor, patch = old_tag.split('.')
|
40
|
+
case fetch(:semantic_version)
|
41
|
+
when :major
|
42
|
+
major = major.to_i + 1
|
43
|
+
minor = 0
|
44
|
+
patch = 0
|
45
|
+
when :minor
|
46
|
+
minor = minor.to_i + 1
|
47
|
+
patch = 0
|
48
|
+
when :patch
|
49
|
+
patch = patch.to_i + 1
|
50
|
+
end
|
51
|
+
new_tag = "#{major}.#{minor}.#{patch}"
|
52
|
+
user = `git config --get user.name`.chomp
|
53
|
+
email = `git config --get user.email`.chomp
|
54
|
+
puts `git tag #{new_tag} -m "Deployed by #{user} <#{email}>"`
|
55
|
+
puts `git push --tags origin`
|
56
|
+
else
|
57
|
+
puts "The release you are trying to deploy already has semantic version (#{last_commit_tag})"
|
58
58
|
end
|
59
|
-
|
60
59
|
end
|
61
60
|
|
62
61
|
end
|