dapp 0.0.3 → 0.0.4
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 +8 -8
- data/lib/dapp.rb +3 -0
- data/lib/dapp/builder.rb +9 -2
- data/lib/dapp/builder/ci_tagging.rb +53 -0
- data/lib/dapp/builder/git_tagging.rb +25 -0
- data/lib/dapp/builder/manual_tagging.rb +22 -0
- data/lib/dapp/cli/build.rb +36 -6
- data/lib/dapp/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTNlMjdkNDQxZTM1ZmMxZTA3NzU4MTIyMGRmZWUwMWFmZmE1MDgwOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDdmYmNhYjc4ZjQxMzBhZTE1MzBkN2Y2YjVjOTRlNmNmYTRmNWI2MA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjM2ODRiZmRlNzM3NTQ2OGE0NjY0OGQzYjlkODIwNjBkNGI3MTYyYTQwZWUy
|
10
|
+
YTVmZWViZjVmNmVhNWFjOWU1ZWQwNGY1ZGJjNGZmNjA2OTc4NGVjYjcwMGUx
|
11
|
+
YmZjMTI3MDgwYmY2YzQ1YWJmODZkYThlNTZiMWE5NGIyYjNmMDM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Y2VhMTRlYzg4MGY2ODJkYzU5YjIyNWNjOGIzN2NiMDhhMmUxZDA4MTBmNjI2
|
14
|
+
NGE0MzBhMDM1OWJlNTBmZTdjNDczZDdmODljZTkwMDdiNzE0NWM3YTQzMGMz
|
15
|
+
ZjA2ZTRlZjAzZjBmYTg2ZWQ3MTBmOGRiYmIzMWQ5ZDE1MWU1NDA=
|
data/lib/dapp.rb
CHANGED
@@ -11,6 +11,9 @@ require 'dapp/cli'
|
|
11
11
|
require 'dapp/cli/build'
|
12
12
|
require 'dapp/builder/chefify'
|
13
13
|
require 'dapp/builder/centos7'
|
14
|
+
require 'dapp/builder/ci_tagging'
|
15
|
+
require 'dapp/builder/manual_tagging'
|
16
|
+
require 'dapp/builder/git_tagging'
|
14
17
|
require 'dapp/builder/cascade_tagging'
|
15
18
|
require 'dapp/filelock'
|
16
19
|
require 'dapp/builder'
|
data/lib/dapp/builder.rb
CHANGED
@@ -3,6 +3,9 @@ module Dapp
|
|
3
3
|
class Builder
|
4
4
|
include Chefify
|
5
5
|
include Centos7
|
6
|
+
include CiTagging
|
7
|
+
include ManualTagging
|
8
|
+
include GitTagging
|
6
9
|
include CascadeTagging
|
7
10
|
include Filelock
|
8
11
|
|
@@ -153,6 +156,7 @@ module Dapp
|
|
153
156
|
artifact.add_multilayer!
|
154
157
|
end
|
155
158
|
|
159
|
+
# rubocop:disable Metrics/AbcSize
|
156
160
|
def build(**_kwargs)
|
157
161
|
# check app name
|
158
162
|
unless !opts[:app_filter] || File.fnmatch("#{opts[:app_filter]}*", name)
|
@@ -164,8 +168,10 @@ module Dapp
|
|
164
168
|
log 'Building'
|
165
169
|
image_id = docker.build
|
166
170
|
|
167
|
-
# apply
|
168
|
-
|
171
|
+
# apply tagging
|
172
|
+
%w(ci manual git cascade).each do |strategy|
|
173
|
+
send "tag_#{strategy}", image_id
|
174
|
+
end
|
169
175
|
|
170
176
|
# push to registry
|
171
177
|
if opts[:docker_registry]
|
@@ -178,6 +184,7 @@ module Dapp
|
|
178
184
|
|
179
185
|
image_id
|
180
186
|
end
|
187
|
+
# rubocop:enable Metrics/AbcSize
|
181
188
|
|
182
189
|
def tag(image_id, name: nil, tag: nil, registry: nil)
|
183
190
|
return unless name && tag
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Dapp
|
2
|
+
class Builder
|
3
|
+
# CI tagging strategy
|
4
|
+
module CiTagging
|
5
|
+
def tag_ci(image_id)
|
6
|
+
return unless opts[:tag_ci] || opts[:tag_build_id]
|
7
|
+
|
8
|
+
raise 'CI environment required (Travis or GitLab CI)' unless ENV['GITLAB_CI'] || ENV['TRAVIS']
|
9
|
+
|
10
|
+
spec = {
|
11
|
+
name: name,
|
12
|
+
registry: opts[:docker_registry]
|
13
|
+
}
|
14
|
+
|
15
|
+
tag_ci_branch_and_tag image_id, spec
|
16
|
+
tag_ci_build_id image_id, spec
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def tag_ci_branch_and_tag(image_id, spec)
|
22
|
+
return unless opts[:tag_ci]
|
23
|
+
|
24
|
+
log 'Applying CI tagging strategy'
|
25
|
+
|
26
|
+
if ENV['GITLAB_CI']
|
27
|
+
branch = ENV['CI_BUILD_REF_NAME']
|
28
|
+
tag = ENV['CI_BUILD_TAG']
|
29
|
+
elsif ENV['TRAVIS']
|
30
|
+
branch = ENV['TRAVIS_BRANCH']
|
31
|
+
tag = ENV['TRAVIS_TAG']
|
32
|
+
end
|
33
|
+
|
34
|
+
docker.tag image_id, spec.merge(tag: tag) if tag
|
35
|
+
docker.tag image_id, spec.merge(tag: branch) if branch
|
36
|
+
end
|
37
|
+
|
38
|
+
def tag_ci_build_id(image_id, spec)
|
39
|
+
return unless opts[:tag_build_id]
|
40
|
+
|
41
|
+
log 'Applying CI build id tag'
|
42
|
+
|
43
|
+
if ENV['GITLAB_CI']
|
44
|
+
build_id = ENV['CI_BUILD_ID']
|
45
|
+
elsif ENV['TRAVIS']
|
46
|
+
build_id = ENV['TRAVIS_BUILD_NUMBER']
|
47
|
+
end
|
48
|
+
|
49
|
+
docker.tag image_id, spec.merge(tag: build_id) if build_id
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Dapp
|
2
|
+
class Builder
|
3
|
+
# Git tagging strategy
|
4
|
+
module GitTagging
|
5
|
+
def tag_git(image_id)
|
6
|
+
spec = {
|
7
|
+
name: name,
|
8
|
+
registry: opts[:docker_registry]
|
9
|
+
}
|
10
|
+
|
11
|
+
if opts[:tag_commit]
|
12
|
+
log 'Applying git commit tag'
|
13
|
+
|
14
|
+
docker.tag image_id, spec.merge(tag: shellout("git -C #{home_path} rev-parse HEAD").stdout.strip)
|
15
|
+
end
|
16
|
+
|
17
|
+
if opts[:tag_branch]
|
18
|
+
log 'Applying git branch tag'
|
19
|
+
|
20
|
+
docker.tag image_id, spec.merge(tag: shellout("git -C #{home_path} rev-parse --abbrev-ref HEAD").stdout.strip)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Dapp
|
2
|
+
class Builder
|
3
|
+
# Manual tagging strategy
|
4
|
+
module ManualTagging
|
5
|
+
def tag_manual(image_id)
|
6
|
+
return unless opts[:tags]
|
7
|
+
|
8
|
+
log 'Applying manual tags'
|
9
|
+
|
10
|
+
opts[:tags].each do |tag|
|
11
|
+
spec = {
|
12
|
+
name: name,
|
13
|
+
tag: tag,
|
14
|
+
registry: opts[:docker_registry]
|
15
|
+
}
|
16
|
+
|
17
|
+
docker.tag image_id, spec
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/dapp/cli/build.rb
CHANGED
@@ -20,11 +20,11 @@ BANNER
|
|
20
20
|
class << self
|
21
21
|
def option(name, args)
|
22
22
|
if args.delete :builder_opt
|
23
|
-
args[:proc]
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
args[:proc] ||= if args[:boolean]
|
24
|
+
proc { Dapp::Builder.default_opts[name] = true }
|
25
|
+
else
|
26
|
+
proc { |v| Dapp::Builder.default_opts[name] = v }
|
27
|
+
end
|
28
28
|
end
|
29
29
|
|
30
30
|
super(name, args)
|
@@ -83,11 +83,41 @@ BANNER
|
|
83
83
|
builder_opt: true
|
84
84
|
|
85
85
|
option :cascade_tagging,
|
86
|
-
long: '--
|
86
|
+
long: '--cascade-tagging',
|
87
87
|
description: 'Use cascade tagging',
|
88
88
|
boolean: true,
|
89
89
|
builder_opt: true
|
90
90
|
|
91
|
+
option :tag_ci,
|
92
|
+
long: '--tag-ci',
|
93
|
+
description: 'Tag by CI branch and tag',
|
94
|
+
boolean: true,
|
95
|
+
builder_opt: true
|
96
|
+
|
97
|
+
option :tag_build_id,
|
98
|
+
long: '--tag-build-id',
|
99
|
+
description: 'Tag by CI build id',
|
100
|
+
boolean: true,
|
101
|
+
builder_opt: true
|
102
|
+
|
103
|
+
option :tag,
|
104
|
+
long: '--tag TAG',
|
105
|
+
description: 'Add tag (can be used one or more times)',
|
106
|
+
on: :tail,
|
107
|
+
proc: proc { |v| (Dapp::Builder.default_opts[:tags] ||= []) << v }
|
108
|
+
|
109
|
+
option :tag_commit,
|
110
|
+
long: '--tag-commit',
|
111
|
+
description: 'Tag by git commit',
|
112
|
+
boolean: true,
|
113
|
+
builder_opt: true
|
114
|
+
|
115
|
+
option :tag_branch,
|
116
|
+
long: '--tag-branch',
|
117
|
+
description: 'Tag by git branch',
|
118
|
+
boolean: true,
|
119
|
+
builder_opt: true
|
120
|
+
|
91
121
|
option :git_artifact_branch,
|
92
122
|
long: '--git-artifact-branch BRANCH',
|
93
123
|
description: 'Default branch to archive artifacts from',
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-04-
|
12
|
+
date: 2016-04-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mixlib-shellout
|
@@ -217,6 +217,9 @@ files:
|
|
217
217
|
- lib/dapp/builder/cascade_tagging.rb
|
218
218
|
- lib/dapp/builder/centos7.rb
|
219
219
|
- lib/dapp/builder/chefify.rb
|
220
|
+
- lib/dapp/builder/ci_tagging.rb
|
221
|
+
- lib/dapp/builder/git_tagging.rb
|
222
|
+
- lib/dapp/builder/manual_tagging.rb
|
220
223
|
- lib/dapp/cli.rb
|
221
224
|
- lib/dapp/cli/build.rb
|
222
225
|
- lib/dapp/docker.rb
|