takelage 0.9.2 → 0.10.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 +13 -2
- data/lib/takelage/bit/scope/module.rb +2 -2
- data/lib/takelage/default.yml +13 -14
- data/lib/takelage/docker/container/cli.rb +0 -2
- data/lib/takelage/docker/container/module.rb +8 -19
- data/lib/takelage/docker/image/cli.rb +1 -1
- data/lib/takelage/docker/image/module.rb +0 -2
- data/lib/takelage/docker/image/tag/check/cli.rb +1 -1
- data/lib/takelage/docker/image/tag/check/module.rb +0 -4
- data/lib/takelage/docker/image/tag/latest/cli.rb +1 -1
- data/lib/takelage/docker/image/tag/list/cli.rb +1 -1
- data/lib/takelage/docker/image/tag/list/module.rb +11 -19
- data/lib/takelage/docker/socket/module.rb +2 -2
- data/lib/takelage/version +1 -1
- data/lib/takelage.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab8abe1d25c97442acec36bb9ab580d2c49efb64572ececd587f4caa7ab30892
|
4
|
+
data.tar.gz: 49253eba927e0091bcc151d6f20424df56436df23c97669f18654202a7d40257
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8c69a6cbe268b971f2eb07b786cf3b6f4ea8d333dd0e8c047bbdc5394727fc3a6e3b35cbb03bac3676c3b1ce5d4eda64d71c990ffff2d49c43d95967d4cdd8d
|
7
|
+
data.tar.gz: f643e564fe3db829fad180f9948cc2381782c5410efa9d2386e05f7bc9cc0d45ff50ff24c7a4586a838e8f3e6c369eac445a2aa6db4bb97609371347060d8bdd
|
data/README.md
CHANGED
@@ -118,8 +118,8 @@ or *tau config*.
|
|
118
118
|
| *takelage.yml* | highest | Project-specific configuration file next to your main Rakefile. Some projects need special configuration. |
|
119
119
|
|
120
120
|
### Configuration Examples
|
121
|
-
|
122
|
-
- You should the following configuration items in your *~/.takelage.yml*
|
121
|
+
|
122
|
+
- You should add the following configuration items in your *~/.takelage.yml*
|
123
123
|
if you want to use a private bit remote server:
|
124
124
|
|
125
125
|
```yaml
|
@@ -128,6 +128,15 @@ bit_remote: 'ssh://bit@bit.example.com:222:/bit'
|
|
128
128
|
bit_ssh: 'ssh -p 222 bit@bit.example.com'
|
129
129
|
```
|
130
130
|
|
131
|
+
- By default, takelage uses bright prompt colors which are best viewed on a
|
132
|
+
dark background. If you prefer a light background (or want less bright colors)
|
133
|
+
you can add an option to your *~/.takelage.yml*:
|
134
|
+
|
135
|
+
```yaml
|
136
|
+
---
|
137
|
+
docker_daynight: 'day'
|
138
|
+
```
|
139
|
+
|
131
140
|
- If you want to pin a specific docker tag for one of your projects
|
132
141
|
then create an *takelage.yml* file with:
|
133
142
|
|
@@ -144,6 +153,8 @@ to overwrite defaults like:
|
|
144
153
|
docker_repo: takelage-mock
|
145
154
|
```
|
146
155
|
|
156
|
+
Furthermore, every external command can be reconfigured.
|
157
|
+
|
147
158
|
### Project Files
|
148
159
|
|
149
160
|
*tau* reads two different YAML project files
|
@@ -63,7 +63,7 @@ module BitScopeModule
|
|
63
63
|
|
64
64
|
# prepare scope list command
|
65
65
|
root =
|
66
|
-
config.active['
|
66
|
+
config.active['bit_root']
|
67
67
|
|
68
68
|
cmd_bit_scope_list =
|
69
69
|
config.active['cmd_bit_scope_list_find_scopes'] % {
|
@@ -102,7 +102,7 @@ module BitScopeModule
|
|
102
102
|
|
103
103
|
# prepare scope list command
|
104
104
|
root =
|
105
|
-
config.active['
|
105
|
+
config.active['bit_root']
|
106
106
|
|
107
107
|
cmd_bit_scope_new =
|
108
108
|
config.active['cmd_bit_scope_new_bit_init'] % {
|
data/lib/takelage/default.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
bit_dev_user: 'takelage'
|
3
3
|
bit_remote: ''
|
4
|
-
|
4
|
+
bit_root: '/bit'
|
5
5
|
bit_ssh: ''
|
6
6
|
cmd_bit_check_workspace_bit_list: 'bit list'
|
7
7
|
cmd_bit_check_workspace_pwd: 'pwd'
|
@@ -23,21 +23,21 @@ cmd_docker_check_running_docker_info: 'docker info'
|
|
23
23
|
cmd_docker_container_check_existing_docker_ps: 'docker ps --filter name=^%{container}$ --quiet'
|
24
24
|
cmd_docker_container_check_network_docker_network: 'docker network ls --quiet --filter name=^%{network}$'
|
25
25
|
cmd_docker_container_check_orphaned_docker_exec: 'docker exec --interactive %{container} ps a'
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
cmd_docker_container_create: 'docker run --detach --env GOOGLE_APPLICATION_CREDENTIALS=/srv/google/default.json --env TAKELAGE_PROJECT_BASE_DIR=%{workdir} --env TZ=%{timezone} --hostname %{container} --name %{container} --network %{container} --privileged --rm --tty --volume %{dockersock}:/var/run/docker.sock --volume %{homedir}/.config/gcloud:/srv/gcloud --volume %{homedir}/.google:/srv/google --volume %{homedir}:/homedir --volume %{workdir}:/project %{volume_dev} --workdir /project %{image} %{entrypoint} --gid %{gid} --home %{homedir} --uid %{uid} --username %{username} %{entrypoint_options}'
|
27
|
+
cmd_docker_container_create_network: 'docker network create %{network}'
|
28
|
+
cmd_docker_container_enter_container: 'docker exec --interactive --tty %{container} %{loginpoint} --username %{username}'
|
29
|
+
cmd_docker_container_get_container_name: 'docker ps --filter id=%{container} --format "{{.Names}}"'
|
30
|
+
cmd_docker_container_get_containers: 'docker ps --all --filter name=^%{docker_repo}_ --quiet'
|
31
|
+
cmd_docker_container_remove_network: 'docker network rm %{network}'
|
32
|
+
cmd_docker_container_docker_exec: 'docker exec %{container} su %{username} -c "LANG=en_US.UTF-8 %{command}"'
|
33
|
+
cmd_docker_container_stop_container: 'docker stop %{container}'
|
34
34
|
cmd_docker_image_tag_check_local_docker_images: 'docker images --quiet %{image}'
|
35
35
|
cmd_docker_image_tag_list_local_docker_images: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
|
36
36
|
cmd_docker_image_update_docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:%{tag_latest_remote}'
|
37
37
|
cmd_docker_socket_stop_docker_socket_ps: 'sudo ps a -o pid,command'
|
38
38
|
cmd_docker_socket_stop_docker_socket_kill: 'sudo kill -SIGTERM %{pid}'
|
39
|
-
|
40
|
-
|
39
|
+
cmd_docker_socket_get_socket_socat: 'sudo socat TCP-LISTEN:%{port},bind=%{host},reuseaddr,fork UNIX-CLIENT:%{path}'
|
40
|
+
cmd_docker_socket_get_socket_gpgconf: 'gpgconf --list-dirs'
|
41
41
|
cmd_docker_socket_start_sudo_true: 'sudo true'
|
42
42
|
cmd_git_check_clean_git_unstaged: 'git diff --exit-code'
|
43
43
|
cmd_git_check_clean_git_uncommitted: 'git diff --cached --exit-code'
|
@@ -45,16 +45,15 @@ cmd_git_check_clean_git_status: 'git status --porcelain'
|
|
45
45
|
cmd_git_check_master_git_branch: 'git symbolic-ref HEAD'
|
46
46
|
cmd_git_check_workspace_git_repo: 'git -C . rev-parse'
|
47
47
|
cmd_git_check_workspace_pwd: 'pwd'
|
48
|
-
docker_daynight: 'night'
|
49
48
|
docker_debug: 'ansible/roles/takel-takelage/files/pyscripts'
|
50
49
|
docker_entrypoint_options: ''
|
50
|
+
docker_registry: 'https://registry.hub.docker.com'
|
51
51
|
docker_repo: 'takelage'
|
52
|
-
docker_user: 'takelage'
|
53
52
|
docker_socket_agent_port: 20000
|
54
53
|
docker_socket_agent_ssh_port: 20001
|
55
54
|
docker_socket_agent_extra_port: 20002
|
56
55
|
docker_socket_agent_browser_port: 20003
|
57
56
|
docker_tag: 'latest'
|
58
|
-
|
57
|
+
docker_user: 'takelage'
|
59
58
|
info_project_main: 'project.yml'
|
60
59
|
info_project_private: 'private/project.yml'
|
@@ -7,8 +7,6 @@ module DockerContainerModule
|
|
7
7
|
|
8
8
|
return false unless docker_check_running
|
9
9
|
|
10
|
-
return false unless configured? %w(docker_user docker_repo docker_tag)
|
11
|
-
|
12
10
|
docker_socket_start
|
13
11
|
|
14
12
|
_create_network @hostname unless docker_container_check_network @hostname
|
@@ -22,8 +20,6 @@ module DockerContainerModule
|
|
22
20
|
|
23
21
|
return false unless docker_check_running
|
24
22
|
|
25
|
-
return false unless configured? %w(docker_user docker_repo docker_tag)
|
26
|
-
|
27
23
|
_create_network @hostname unless docker_container_check_network @hostname
|
28
24
|
_create_container @hostname unless docker_container_check_existing @hostname
|
29
25
|
end
|
@@ -34,8 +30,6 @@ module DockerContainerModule
|
|
34
30
|
|
35
31
|
return false unless docker_check_running
|
36
32
|
|
37
|
-
return false unless configured? %w(docker_user docker_repo docker_tag)
|
38
|
-
|
39
33
|
docker_socket_start
|
40
34
|
|
41
35
|
_create_network @hostname unless docker_container_check_network @hostname
|
@@ -49,8 +43,6 @@ module DockerContainerModule
|
|
49
43
|
|
50
44
|
return false unless docker_check_running
|
51
45
|
|
52
|
-
return false unless configured? %w(docker_repo)
|
53
|
-
|
54
46
|
networks = []
|
55
47
|
|
56
48
|
_get_containers.each do |container|
|
@@ -70,8 +62,6 @@ module DockerContainerModule
|
|
70
62
|
|
71
63
|
return false unless docker_check_running
|
72
64
|
|
73
|
-
return false unless configured? %w(docker_repo)
|
74
|
-
|
75
65
|
networks = []
|
76
66
|
|
77
67
|
_get_containers.each do |container|
|
@@ -114,9 +104,8 @@ module DockerContainerModule
|
|
114
104
|
end
|
115
105
|
|
116
106
|
cmd_docker_create =
|
117
|
-
config.active['
|
107
|
+
config.active['cmd_docker_container_create'] % {
|
118
108
|
workdir: @workdir,
|
119
|
-
daynight: @daynight,
|
120
109
|
timezone: @timezone,
|
121
110
|
container: container,
|
122
111
|
dockersock: @dockersock,
|
@@ -138,7 +127,7 @@ module DockerContainerModule
|
|
138
127
|
log.debug "Create network \"#{network}\""
|
139
128
|
|
140
129
|
cmd_create_network =
|
141
|
-
config.active['
|
130
|
+
config.active['cmd_docker_container_create_network'] % {
|
142
131
|
network: network
|
143
132
|
}
|
144
133
|
|
@@ -155,7 +144,7 @@ module DockerContainerModule
|
|
155
144
|
end
|
156
145
|
|
157
146
|
cmd_docker_enter =
|
158
|
-
config.active['
|
147
|
+
config.active['cmd_docker_container_enter_container'] % {
|
159
148
|
container: container,
|
160
149
|
loginpoint: loginpoint,
|
161
150
|
username: @username
|
@@ -169,7 +158,7 @@ module DockerContainerModule
|
|
169
158
|
log.debug "Getting name of container \"#{container}\""
|
170
159
|
|
171
160
|
cmd_get_container_name_by_id =
|
172
|
-
config.active['
|
161
|
+
config.active['cmd_docker_container_get_container_name'] % {
|
173
162
|
container: container
|
174
163
|
}
|
175
164
|
|
@@ -188,7 +177,7 @@ module DockerContainerModule
|
|
188
177
|
log.debug "Getting all containers of image \"#{@docker_repo}\""
|
189
178
|
|
190
179
|
cmd_docker_get =
|
191
|
-
config.active['
|
180
|
+
config.active['cmd_docker_container_get_containers'] % {
|
192
181
|
docker_repo: @docker_repo
|
193
182
|
}
|
194
183
|
|
@@ -203,7 +192,7 @@ module DockerContainerModule
|
|
203
192
|
log.debug "Remove network \"#{network}\""
|
204
193
|
|
205
194
|
cmd_remove_network =
|
206
|
-
config.active['
|
195
|
+
config.active['cmd_docker_container_remove_network'] % {
|
207
196
|
network: network
|
208
197
|
}
|
209
198
|
|
@@ -215,7 +204,7 @@ module DockerContainerModule
|
|
215
204
|
log.debug "Running command \"#{command}\" in container \"#{container}\""
|
216
205
|
|
217
206
|
cmd_docker_run_command =
|
218
|
-
config.active['
|
207
|
+
config.active['cmd_docker_container_docker_exec'] % {
|
219
208
|
container: container,
|
220
209
|
username: @username,
|
221
210
|
command: command
|
@@ -229,7 +218,7 @@ module DockerContainerModule
|
|
229
218
|
log.debug "Stopping container \"#{container}\""
|
230
219
|
|
231
220
|
cmd_docker_stop =
|
232
|
-
config.active['
|
221
|
+
config.active['cmd_docker_container_stop_container'] % {
|
233
222
|
container: container
|
234
223
|
}
|
235
224
|
|
@@ -19,7 +19,7 @@ module Takelage
|
|
19
19
|
|
20
20
|
@docker_user = config.active['docker_user']
|
21
21
|
@docker_repo = config.active['docker_repo']
|
22
|
-
@
|
22
|
+
@docker_registry = config.active['docker_registry']
|
23
23
|
end
|
24
24
|
|
25
25
|
desc 'tag [COMMAND]', 'Handle docker image tags'
|
@@ -5,8 +5,6 @@ module DockerImageModule
|
|
5
5
|
def docker_image_update
|
6
6
|
return false unless docker_check_running
|
7
7
|
|
8
|
-
return false unless configured? %w(docker_user docker_repo docker_tagsurl)
|
9
|
-
|
10
8
|
tag_latest_remote = docker_image_tag_latest_remote
|
11
9
|
|
12
10
|
if tag_latest_remote.to_s.strip.empty?
|
@@ -8,8 +8,6 @@ module DockerImageTagCheckModule
|
|
8
8
|
|
9
9
|
return false unless docker_check_running
|
10
10
|
|
11
|
-
return false unless configured? %w(docker_user docker_repo)
|
12
|
-
|
13
11
|
if tag.to_s.strip.empty?
|
14
12
|
log.warn "No local docker image tag specified"
|
15
13
|
return false
|
@@ -40,8 +38,6 @@ module DockerImageTagCheckModule
|
|
40
38
|
|
41
39
|
return false unless docker_check_running
|
42
40
|
|
43
|
-
return false unless configured? %w(docker_user docker_repo docker_tagsurl)
|
44
|
-
|
45
41
|
if tag .to_s.strip.empty?
|
46
42
|
log.warn "No remote docker image tag specified"
|
47
43
|
return false
|
@@ -22,25 +22,17 @@ module DockerImageTagListModule
|
|
22
22
|
# Backend method for docker image tag list remote.
|
23
23
|
# @return [Array] remote docker image tags
|
24
24
|
def docker_image_tag_list_remote
|
25
|
-
log.debug "Getting docker remote tags
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
begin
|
39
|
-
tags = JSON.parse @res.body
|
40
|
-
rescue JSON::ParserError
|
41
|
-
log.error 'Unable to parse JSON'
|
42
|
-
return false
|
43
|
-
end
|
25
|
+
log.debug "Getting docker remote tags " +
|
26
|
+
"of \"#{@docker_user}/#{@docker_repo}\" " +
|
27
|
+
"from \"#{@docker_registry}\""
|
28
|
+
|
29
|
+
registry = DockerRegistry2.connect(@docker_registry)
|
30
|
+
|
31
|
+
log.debug ("Connected to registry \"#{@docker_registry}\"")
|
32
|
+
|
33
|
+
user = File.basename @docker_user
|
34
|
+
|
35
|
+
tags = registry.tags("#{user}/#{@docker_repo}")
|
44
36
|
|
45
37
|
VersionSorter.sort(tags['tags'])
|
46
38
|
end
|
@@ -76,7 +76,7 @@ module DockerSocketModule
|
|
76
76
|
# loop over sockets
|
77
77
|
@sockets.each do |socket, socket_config|
|
78
78
|
cmd_start_socket =
|
79
|
-
config.active['
|
79
|
+
config.active['cmd_docker_socket_get_socket_socat'] % {
|
80
80
|
host: socket_config[:host],
|
81
81
|
port: socket_config[:port],
|
82
82
|
path: socket_config[:path],
|
@@ -99,7 +99,7 @@ module DockerSocketModule
|
|
99
99
|
# get socket paths
|
100
100
|
def _get_socket_paths
|
101
101
|
cmd_gpgconf_listdirs =
|
102
|
-
config.active['
|
102
|
+
config.active['cmd_docker_socket_get_socket_gpgconf']
|
103
103
|
|
104
104
|
stdout_str = run cmd_gpgconf_listdirs
|
105
105
|
|
data/lib/takelage/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.10.0
|
data/lib/takelage.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: takelage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geospin
|
@@ -10,6 +10,20 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2019-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: docker_registry2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.9'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.9'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: fylla
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|