vidar 0.11.0 → 0.12.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/.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
|