vidar 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/Gemfile.lock +4 -4
- data/README.md +1 -1
- data/lib/vidar/cli.rb +30 -24
- data/lib/vidar/config.rb +14 -8
- data/lib/vidar/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92d6a544dc40584459107ecd26b49864094730416330deb92f3f997f0513d9ed
|
4
|
+
data.tar.gz: 92432cdbfc04bacebb19f140aff90de48f0b91b32fe562177ffaa8d57736f1a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d5852644e22fdffd30e46656e2e479911aff7caa9c6da85351afcf552f5e1c0e46eb3f5c86cc87dc077b37e27d84e8018fd45dfb61b328bf22471885264ac8b
|
7
|
+
data.tar.gz: 883ce5d64ae39b1554eb1ccad46180420cc6d23c4c590aa90f488de580d7197f724086ae18fb5e6ee5c15a0fceb4afb616e8d89fe843cdfa319edb101799e7c4
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
vidar (0.
|
4
|
+
vidar (0.12.0)
|
5
5
|
colorize
|
6
6
|
faraday
|
7
7
|
thor (~> 0.20)
|
@@ -14,12 +14,12 @@ GEM
|
|
14
14
|
coderay (1.1.2)
|
15
15
|
colorize (0.8.1)
|
16
16
|
diff-lcs (1.3)
|
17
|
-
faraday (0.17.
|
17
|
+
faraday (0.17.1)
|
18
18
|
multipart-post (>= 1.2, < 3)
|
19
19
|
jaro_winkler (1.5.4)
|
20
20
|
method_source (0.9.2)
|
21
21
|
multipart-post (2.1.1)
|
22
|
-
parallel (1.19.
|
22
|
+
parallel (1.19.1)
|
23
23
|
parser (2.6.5.0)
|
24
24
|
ast (~> 2.4.0)
|
25
25
|
pry (0.12.2)
|
@@ -40,7 +40,7 @@ GEM
|
|
40
40
|
diff-lcs (>= 1.2.0, < 2.0)
|
41
41
|
rspec-support (~> 3.9.0)
|
42
42
|
rspec-support (3.9.0)
|
43
|
-
rubocop (0.
|
43
|
+
rubocop (0.77.0)
|
44
44
|
jaro_winkler (~> 1.5.1)
|
45
45
|
parallel (~> 1.10)
|
46
46
|
parser (>= 2.6)
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
#### Requirements :
|
26
26
|
|
27
|
-
* multistage `Dockerfile`, with at least 2 stages defined: `
|
27
|
+
* multistage `Dockerfile`, with at least 2 stages defined: `base`, `release`.
|
28
28
|
* `docker-compose.ci.yml` file with defined services for all mentioned stages
|
29
29
|
* `vidar.yml` file to the project root directory, which following content:
|
30
30
|
|
data/lib/vidar/cli.rb
CHANGED
@@ -6,55 +6,61 @@ module Vidar
|
|
6
6
|
true
|
7
7
|
end
|
8
8
|
|
9
|
-
desc "exec", "Run any command in given docker-compose target, default target is `
|
9
|
+
desc "exec", "Run any command in given docker-compose target, default target is `base`"
|
10
10
|
option :command
|
11
|
-
option :target,
|
11
|
+
option :target, required: false
|
12
12
|
def exec
|
13
|
-
|
13
|
+
target = options[:target] || Config.get!(:base_stage_name)
|
14
|
+
Run.docker_compose("run #{target} #{options[:command]}") || exit(1)
|
14
15
|
end
|
15
16
|
|
16
17
|
desc "pull", "Pull existing docker images to leverage docker caching"
|
17
18
|
def pull
|
18
19
|
Log.info "Pulling #{Config.get!(:image)} tags"
|
19
|
-
Run.docker "pull #{Config.get!(:image)}:
|
20
|
-
Run.docker "pull #{Config.get!(:image)}:
|
21
|
-
Run.docker "pull #{Config.get!(:image)}:
|
22
|
-
Run.docker "pull #{Config.get!(:image)}:
|
20
|
+
Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:current_branch)} 2> /dev/null || true"
|
21
|
+
Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:default_branch)} 2> /dev/null || true"
|
22
|
+
Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)} 2> /dev/null || true"
|
23
|
+
Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:release_stage_name)} 2> /dev/null || true"
|
23
24
|
Log.info "Docker images:"
|
24
25
|
Run.docker("images")
|
25
26
|
end
|
26
27
|
|
27
28
|
desc "build", "Build docker stages"
|
28
29
|
def build
|
29
|
-
Log.info "Building
|
30
|
-
Run.docker_compose "build
|
30
|
+
Log.info "Building #{Config.get!(:base_stage_name)} image"
|
31
|
+
Run.docker_compose "build #{Config.get!(:base_stage_name)}"
|
31
32
|
|
32
|
-
Log.info "Building
|
33
|
-
Run.docker_compose "build
|
33
|
+
Log.info "Building #{Config.get!(:release_stage_name)} image"
|
34
|
+
Run.docker_compose "build #{Config.get!(:release_stage_name)}"
|
34
35
|
end
|
35
36
|
|
36
37
|
desc "cache", "Caches intermediate docker stages"
|
37
38
|
def cache
|
38
|
-
Log.info "Publishing
|
39
|
-
Run.docker "push #{Config.get!(:image)}:
|
39
|
+
Log.info "Publishing #{Config.get!(:base_stage_name)} image"
|
40
|
+
Run.docker "push #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:current_branch)}"
|
40
41
|
end
|
41
42
|
|
42
43
|
desc "publish", "Publish docker images on docker registry"
|
43
44
|
def publish
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
base_image_tag = "#{Config.get!(:image)}:#{Config.get!(:base_stage_name)}"
|
46
|
+
revision_image_tag = "#{Config.get!(:image)}:#{Config.get!(:revision)}"
|
47
|
+
release_image_tag = "#{Config.get!(:image)}:#{Config.get!(:release_stage_name)}"
|
48
|
+
latest_image_tag = "#{Config.get!(:image)}:latest}"
|
47
49
|
|
48
|
-
|
50
|
+
Log.info "Publishing #{revision_image_tag}"
|
51
|
+
Run.docker "tag #{release_image_tag} #{revision_image_tag}"
|
52
|
+
Run.docker "push #{revision_image_tag}"
|
49
53
|
|
50
|
-
|
51
|
-
Run.docker "tag #{Config.get!(:image)}:runner-#{Config.get!(:current_branch)} #{Config.get!(:image)}:runner"
|
52
|
-
Run.docker "push #{Config.get!(:image)}:runner"
|
54
|
+
return unless Config.default_branch?
|
53
55
|
|
54
|
-
Log.info "Publishing #{
|
55
|
-
Run.docker "tag #{Config.get!(:
|
56
|
-
Run.docker "push #{
|
57
|
-
|
56
|
+
Log.info "Publishing #{base_image_tag}"
|
57
|
+
Run.docker "tag #{base_image_tag}-#{Config.get!(:current_branch)} #{base_image_tag}"
|
58
|
+
Run.docker "push #{base_image_tag}"
|
59
|
+
|
60
|
+
Log.info "Publishing #{release_image_tag}"
|
61
|
+
Run.docker "tag #{release_image_tag} #{latest_image_tag}"
|
62
|
+
Run.docker "push #{release_image_tag}"
|
63
|
+
Run.docker "push #{latest_image_tag}"
|
58
64
|
end
|
59
65
|
|
60
66
|
desc "deploy", "Perform k8s deployment with deploy hook"
|
data/lib/vidar/config.rb
CHANGED
@@ -3,14 +3,16 @@ module Vidar
|
|
3
3
|
DEFAULT_MANIFEST_FILE = "vidar.yml".freeze
|
4
4
|
|
5
5
|
DEFAULT_OPTIONS = {
|
6
|
-
compose_file:
|
7
|
-
default_branch:
|
8
|
-
current_branch:
|
9
|
-
revision:
|
10
|
-
revision_name:
|
11
|
-
kubectl_context:
|
12
|
-
shell_command:
|
13
|
-
console_command:
|
6
|
+
compose_file: -> { "docker-compose.ci.yml" },
|
7
|
+
default_branch: -> { "master" },
|
8
|
+
current_branch: -> { `git rev-parse --abbrev-ref HEAD`.strip.tr("/", "-") },
|
9
|
+
revision: -> { `git rev-parse HEAD`.strip },
|
10
|
+
revision_name: -> { `git show --pretty=format:"%s (%h)" -s HEAD`.strip },
|
11
|
+
kubectl_context: -> { `kubectl config current-context`.strip },
|
12
|
+
shell_command: -> { "/bin/sh" },
|
13
|
+
console_command: -> { "bin/console" },
|
14
|
+
base_stage_name: -> { "base" },
|
15
|
+
release_stage_name: -> { "release" },
|
14
16
|
}.freeze
|
15
17
|
|
16
18
|
class << self
|
@@ -58,6 +60,10 @@ module Vidar
|
|
58
60
|
|
59
61
|
DeployConfig.new(deployment)
|
60
62
|
end
|
63
|
+
|
64
|
+
def default_branch?
|
65
|
+
get!(:current_branch) == get!(:default_branch)
|
66
|
+
end
|
61
67
|
end
|
62
68
|
end
|
63
69
|
end
|
data/lib/vidar/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vidar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Knapik
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-11-
|
12
|
+
date: 2019-11-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|