takelage 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f66a9c3c1c62c23deef953a07c15ec08e90325ea20989461836d5fe9bb3827d7
4
- data.tar.gz: 312841983390a8fbcd11e8c51ab591d37b44bec0c745a6f83dd10fbed5dbe358
3
+ metadata.gz: ab8abe1d25c97442acec36bb9ab580d2c49efb64572ececd587f4caa7ab30892
4
+ data.tar.gz: 49253eba927e0091bcc151d6f20424df56436df23c97669f18654202a7d40257
5
5
  SHA512:
6
- metadata.gz: e969702e08c786cb712f9f804a16aa612760c8859faaa3e363eb354308351833369eb79bd2f58d3dac1f1f0301bb7eb9e70f9fdf658eb82289ddb448d85e315c
7
- data.tar.gz: 71f2c1baa7255ae59a0ba15e859db9c04dcde1a33c4f9e90fe58c978f28798b663432ca5018fe17eee1d3b9d44b9f3f3e602be8ece86be6eda018a710d43bd46
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['bit_scope_root']
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['bit_scope_root']
105
+ config.active['bit_root']
106
106
 
107
107
  cmd_bit_scope_new =
108
108
  config.active['cmd_bit_scope_new_bit_init'] % {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  bit_dev_user: 'takelage'
3
3
  bit_remote: ''
4
- bit_scope_root: '/bit'
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
- cmd_docker_create_container_docker_run: 'docker run --detach --env GEOSPIN_PROJECT_BASE_DIR=%{workdir} --env GOOGLE_APPLICATION_CREDENTIALS=/srv/google/default.json --env TAKELAGE_DAYNIGHT=%{daynight} --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_create_network_docker_network: 'docker network create %{network}'
28
- cmd_docker_enter_container_docker_exec: 'docker exec --interactive --tty %{container} %{loginpoint} --username %{username}'
29
- cmd_docker_get_container_name_by_id: 'docker ps --filter id=%{container} --format "{{.Names}}"'
30
- cmd_docker_get_containers: 'docker ps --all --filter name=^%{docker_repo}_ --quiet'
31
- cmd_docker_remove_network: 'docker network rm %{network}'
32
- cmd_docker_run_command_in_container: 'docker exec %{container} su %{username} -c "LANG=en_US.UTF-8 %{command}"'
33
- cmd_docker_stop_container: 'docker stop %{container}'
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
- cmd_docker_get_socket_start_commands_docker_socket_start: 'sudo socat TCP-LISTEN:%{port},bind=%{host},reuseaddr,fork UNIX-CLIENT:%{path}'
40
- cmd_docker_get_socket_paths_docker_socket_gpgconf: 'gpgconf --list-dirs'
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
- docker_tagsurl: 'https://hub.docker.com/v2/repositories/takelage/takelage/tags'
57
+ docker_user: 'takelage'
59
58
  info_project_main: 'project.yml'
60
59
  info_project_private: 'private/project.yml'
@@ -28,8 +28,6 @@ module Takelage
28
28
 
29
29
  @entrypoint_options = config.active['docker_entrypoint_options']
30
30
 
31
- @daynight = config.active['docker_daynight']
32
-
33
31
  @dockersock = '/var/run/docker.sock'
34
32
 
35
33
  @username = ENV['USER'] ? ENV['USER'] : 'username'
@@ -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['cmd_docker_create_container_docker_run'] % {
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['cmd_docker_create_network_docker_network'] % {
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['cmd_docker_enter_container_docker_exec'] % {
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['cmd_docker_get_container_name_by_id'] % {
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['cmd_docker_get_containers'] % {
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['cmd_docker_remove_network'] % {
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['cmd_docker_run_command_in_container'] % {
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['cmd_docker_stop_container'] % {
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
- @docker_tagsurl = config.active['docker_tagsurl']
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?
@@ -18,7 +18,7 @@ module Takelage
18
18
 
19
19
  @docker_user = config.active['docker_user']
20
20
  @docker_repo = config.active['docker_repo']
21
- @docker_tagsurl = config.active['docker_tagsurl']
21
+ @docker_registry = config.active['docker_registry']
22
22
  end
23
23
 
24
24
  #
@@ -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
@@ -18,7 +18,7 @@ module Takelage
18
18
 
19
19
  @docker_user = config.active['docker_user']
20
20
  @docker_repo = config.active['docker_repo']
21
- @docker_tagsurl = config.active['docker_tagsurl']
21
+ @docker_registry = config.active['docker_registry']
22
22
  end
23
23
 
24
24
  #
@@ -17,7 +17,7 @@ module Takelage
17
17
 
18
18
  @docker_user = config.active['docker_user']
19
19
  @docker_repo = config.active['docker_repo']
20
- @docker_tagsurl = config.active['docker_tagsurl']
20
+ @docker_registry = config.active['docker_registry']
21
21
  end
22
22
 
23
23
  #
@@ -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 from \"#{@docker_tagsurl}\""
26
-
27
- begin
28
- @res = Net::HTTP.get_response URI(@docker_tagsurl)
29
- unless @res.code.eql? '200'
30
- log.error "Unable to connect to \"#{@docker_tagsurl}\""
31
- return false
32
- end
33
- rescue SocketError => e
34
- log.debug e
35
- return false
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['cmd_docker_get_socket_start_commands_docker_socket_start'] % {
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['cmd_docker_get_socket_paths_docker_socket_gpgconf']
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.9.2
1
+ 0.10.0
data/lib/takelage.rb CHANGED
@@ -1,9 +1,9 @@
1
+ require 'docker_registry2'
1
2
  require 'etc'
2
3
  require 'fileutils'
3
4
  require 'fylla'
4
5
  require 'json'
5
6
  require 'logger'
6
- require 'net/http'
7
7
  require 'rake'
8
8
  require 'socket'
9
9
  require 'thor'
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.9.2
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