takelage 0.9.0 → 0.9.1

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: 8c4557b8751329204617243e1549062dce48e11853d1d395f60df6699125cc9b
4
- data.tar.gz: c997a19ee1a62f314116f8afc8ae81f0547336ecb8e96fd523d41509777aeb44
3
+ metadata.gz: 0d4e9f1786e7e4c7d21e9cada3ed8f29b332aba1e9a4c9d6ad9883aad14aa643
4
+ data.tar.gz: 73028ac09504b53a127cc8c02d9b7d912e1e24962513955f08fe401f2ab2931f
5
5
  SHA512:
6
- metadata.gz: ed0c0f46b791f03bb63d97f6e447a9e012dec93f940827ddbf6acb661c8e8a51494ebc3a27f8452bcd2746aa82db25af2d0d927af431939010cff468d4732a7e
7
- data.tar.gz: '0848f94cea6016d8ae9020564fe56805927600c7b7778310b10ab824a68b69141769de52e89c83d1d16087bb4907116b3e1db7c281403093eb4b83c3ea692f63'
6
+ metadata.gz: ff27f4263162d199b3aa7f9f54ee01b8eb537e3dc6f9a260689fa499f9fdc6e700483657d5d2b72198d431a3ca454c8a4cbc07e256c354bc538fe7bb5395bf86
7
+ data.tar.gz: 49dd92f06b1ad60f87f1af59ac96b6ad3fbc17005de3eaf29c748e396fd88d2232a1db4e0b7bd2e3400e6fb6fae8acba82c49b15ae15aa450a0c823f8840f386
data/README.md CHANGED
@@ -16,6 +16,7 @@ The takelage devops framework consists of these projects:
16
16
 
17
17
  | App | Description |
18
18
  | --- | ----------- |
19
+ | *[takelage-doc](https://github.com/geospin-takelage/takelage-doc)* | takelage documentation |
19
20
  | *[takelage-dev](https://github.com/geospin-takelage/takelage-dev)* | takelage development environment |
20
21
  | *[takelage-var](https://github.com/geospin-takelage/takelage-var)* | takelage test plugin |
21
22
  | *[takelage-cli](https://github.com/geospin-takelage/takelage-cli)* | takelage command line interface |
@@ -30,7 +31,7 @@ through the [gem](https://github.com/rubygems/rubygems)
30
31
  command line tool:
31
32
 
32
33
  ```bash
33
- gem install takelage fylla json version_sorter thor
34
+ gem install takelage
34
35
  ```
35
36
 
36
37
  ## Commands
@@ -140,7 +141,7 @@ to overwrite defaults like:
140
141
 
141
142
  ```yaml
142
143
  ---
143
- docker_image: takelage-mock
144
+ docker_repo: takelage-mock
144
145
  ```
145
146
 
146
147
  ### Project Files
@@ -5,22 +5,34 @@ bit_dev: 'takelage'
5
5
  bit_export_to_scope: 'bit export --skip-update %{scope}'
6
6
  bit_export_all: 'bit export --skip-update --all'
7
7
  bit_import_all: 'bit import --ignore-package-json --ignore-dist --skip-update'
8
- bit_import_cid: 'bit import --ignore-package-json --ignore-dist -p %{dir} %{cid}'
8
+ bit_import_cid: 'bit import --ignore-package-json --ignore-dist --skip-update --path %{dir} %{cid}'
9
9
  bit_list_remotes: 'bit remote --skip-update'
10
10
  bit_list_scope: 'bit list --skip-update --json %{scope}'
11
11
  bit_remote: ''
12
12
  bit_repo: 'bit list'
13
13
  bit_scope_root: '/bit'
14
14
  bit_scope_list: 'find -L %{root} -name scope.json'
15
- bit_scope_new: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init -b'
16
- bit_scope_remove: 'rm -fr %{root}/%{scope}'
15
+ bit_scope_new: 'mkdir -p %{root}/%{scope} && cd %{root}/%{scope} && bit init --bare'
16
+ bit_scope_remove: 'rm --force --recursive %{root}/%{scope}'
17
17
  bit_ssh: ''
18
18
  bit_tag_id: 'bit tag --skip-update --skip-tests %{id}'
19
19
  bit_tag_all: 'bit tag --skip-update --skip-tests --all'
20
+ docker_create: 'docker run --detach --env GEOSPIN_PROJECT_BASE_DIR=%{workdir} --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}'
21
+ docker_create_network: 'docker network create %{network}'
20
22
  docker_debug: 'ansible/roles/takel-takelage/files/pyscripts'
21
- docker_image: 'takelage'
22
- docker_info: 'docker info'
23
+ docker_enter: 'docker exec --interactive --tty %{container} %{loginpoint} --username %{username}'
24
+ docker_existing: 'docker ps --filter name=^%{container}$ --quiet'
25
+ docker_get: 'docker ps --all --filter name=^%{docker_repo}_ --quiet'
26
+ docker_get_container_name_by_id: 'docker ps --filter id=%{container} --format "{{.Names}}"'
23
27
  docker_repo: 'takelage'
28
+ docker_images: 'docker images --quiet %{image}'
29
+ docker_info: 'docker info'
30
+ docker_network: 'docker network ls --quiet --filter name=^%{network}$'
31
+ docker_orphaned: 'docker exec --interactive %{container} ps a'
32
+ docker_pull_latest: 'docker pull %{docker_user}/%{docker_repo}:%{tag_latest_remote}'
33
+ docker_remove_network: 'docker network rm %{network}'
34
+ docker_user: 'takelage'
35
+ docker_run_command: 'docker exec %{container} su %{username} -c "LANG=en_US.UTF-8 %{command}"'
24
36
  docker_socket_agent_port: 20000
25
37
  docker_socket_agent_ssh_port: 20001
26
38
  docker_socket_agent_extra_port: 20002
@@ -29,7 +41,9 @@ docker_socket_ps: 'sudo ps a -o pid,command'
29
41
  docker_socket_gpgconf: 'gpgconf --list-dirs'
30
42
  docker_socket_kill: 'sudo kill -SIGTERM %{pid}'
31
43
  docker_socket_start: 'sudo socat TCP-LISTEN:%{port},bind=%{host},reuseaddr,fork UNIX-CLIENT:%{path}'
44
+ docker_stop: 'docker stop %{container}'
32
45
  docker_tag: 'latest'
46
+ docker_tags: 'docker images %{docker_user}\/%{docker_repo} --format "{{.Tag}}"'
33
47
  docker_tagsurl: 'https://hub.docker.com/v2/repositories/takelage/takelage/tags'
34
48
  git_branch: 'git symbolic-ref HEAD'
35
49
  git_repo: 'git -C . rev-parse'
@@ -8,9 +8,8 @@ module DockerContainerCheckModule
8
8
 
9
9
  return false unless docker_check_running
10
10
 
11
- cmd_docker_existing = 'docker ps ' +
12
- "--filter name=^#{container}$ " +
13
- '--quiet'
11
+ cmd_docker_existing =
12
+ config.active['docker_existing'] % {container: container}
14
13
 
15
14
  stdout_str = run cmd_docker_existing
16
15
 
@@ -30,9 +29,8 @@ module DockerContainerCheckModule
30
29
 
31
30
  return false unless docker_check_running
32
31
 
33
- cmd_docker_network = 'docker network ls ' +
34
- '--quiet ' +
35
- "--filter name=^#{network}$"
32
+ cmd_docker_network =
33
+ config.active['docker_network'] % {network: network}
36
34
 
37
35
  stdout_str = run cmd_docker_network
38
36
 
@@ -52,10 +50,8 @@ module DockerContainerCheckModule
52
50
 
53
51
  return false unless docker_check_running
54
52
 
55
- cmd_docker_orphaned = 'docker exec ' +
56
- '--interactive ' +
57
- "#{container} " +
58
- 'ps a'
53
+ cmd_docker_orphaned =
54
+ config.active['docker_orphaned'] % {container: container}
59
55
 
60
56
  stdout_str = run cmd_docker_orphaned
61
57
 
@@ -22,8 +22,8 @@ module Takelage
22
22
 
23
23
  @docker_debug = config.active['docker_debug']
24
24
 
25
+ @docker_user = config.active['docker_user']
25
26
  @docker_repo = config.active['docker_repo']
26
- @docker_image = config.active['docker_image']
27
27
  @docker_tag = config.active['docker_tag']
28
28
 
29
29
  @dockersock = '/var/run/docker.sock'
@@ -34,7 +34,7 @@ module Takelage
34
34
 
35
35
  @homedir = ENV['HOME'] ? ENV['HOME'] : '/tmp'
36
36
  @workdir = Dir.getwd
37
- @hostname = "#{@docker_image}_#{File.basename(@workdir)}"
37
+ @hostname = "#{@docker_repo}_#{File.basename(@workdir)}"
38
38
 
39
39
  @timezone = 'Europe/Berlin'
40
40
 
@@ -7,7 +7,7 @@ module DockerContainerModule
7
7
 
8
8
  return false unless docker_check_running
9
9
 
10
- return false unless configured? %w(docker_repo docker_image docker_tag)
10
+ return false unless configured? %w(docker_user docker_repo docker_tag)
11
11
 
12
12
  docker_socket_start
13
13
 
@@ -22,7 +22,7 @@ module DockerContainerModule
22
22
 
23
23
  return false unless docker_check_running
24
24
 
25
- return false unless configured? %w(docker_repo docker_image docker_tag)
25
+ return false unless configured? %w(docker_user docker_repo docker_tag)
26
26
 
27
27
  _create_network @hostname unless docker_container_check_network @hostname
28
28
  _create_container @hostname unless docker_container_check_existing @hostname
@@ -34,7 +34,7 @@ module DockerContainerModule
34
34
 
35
35
  return false unless docker_check_running
36
36
 
37
- return false unless configured? %w(docker_repo docker_image docker_tag)
37
+ return false unless configured? %w(docker_user docker_repo docker_tag)
38
38
 
39
39
  docker_socket_start
40
40
 
@@ -49,7 +49,7 @@ module DockerContainerModule
49
49
 
50
50
  return false unless docker_check_running
51
51
 
52
- return false unless configured? %w(docker_image)
52
+ return false unless configured? %w(docker_repo)
53
53
 
54
54
  networks = []
55
55
 
@@ -70,7 +70,7 @@ module DockerContainerModule
70
70
 
71
71
  return false unless docker_check_running
72
72
 
73
- return false unless configured? %w(docker_image)
73
+ return false unless configured? %w(docker_repo)
74
74
 
75
75
  networks = []
76
76
 
@@ -97,7 +97,7 @@ module DockerContainerModule
97
97
  tag = docker_image_tag_latest_local
98
98
  end
99
99
 
100
- image = "#{@docker_repo}/#{@docker_image}:#{tag}"
100
+ image = "#{@docker_user}/#{@docker_repo}:#{tag}"
101
101
 
102
102
  log.debug "Using docker image \"#{image}\""
103
103
 
@@ -113,31 +113,20 @@ module DockerContainerModule
113
113
  volume_dev = "--volume #{@workdir}/#{@docker_debug}:/debug "
114
114
  end
115
115
 
116
- cmd_docker_create = 'docker run ' +
117
- '--detach ' +
118
- "--env GEOSPIN_PROJECT_BASE_DIR=#{@workdir} " +
119
- '--env GOOGLE_APPLICATION_CREDENTIALS=/srv/google/default.json ' +
120
- "--env TAKELAGE_PROJECT_BASE_DIR=#{@workdir} " +
121
- "--env TZ=#{@timezone} " +
122
- "--hostname #{container} " +
123
- "--name #{container} " +
124
- "--network #{container} " +
125
- '--privileged ' +
126
- '--rm ' +
127
- '--tty ' +
128
- "--volume #{@dockersock}:/var/run/docker.sock " +
129
- "--volume #{@homedir}/.config/gcloud:/srv/gcloud " +
130
- "--volume #{@homedir}/.google:/srv/google " +
131
- "--volume #{@homedir}:/homedir " +
132
- "--volume #{@workdir}:/project " +
133
- volume_dev +
134
- '--workdir /project ' +
135
- "#{image} " +
136
- entrypoint +
137
- "--gid #{@gid} " +
138
- "--home #{@homedir} " +
139
- "--uid #{@uid} " +
140
- "--username #{@username}"
116
+ cmd_docker_create =
117
+ config.active['docker_create'] % {
118
+ workdir: @workdir,
119
+ timezone: @timezone,
120
+ container: container,
121
+ dockersock: @dockersock,
122
+ homedir: @homedir,
123
+ volume_dev: volume_dev,
124
+ image: image,
125
+ entrypoint: entrypoint,
126
+ gid: @gid,
127
+ uid: @uid,
128
+ username: @username
129
+ }
141
130
 
142
131
  run cmd_docker_create
143
132
  end
@@ -146,8 +135,10 @@ module DockerContainerModule
146
135
  def _create_network(network)
147
136
  log.debug "Create network \"#{network}\""
148
137
 
149
- cmd_create_network = 'docker network create ' +
150
- "#{network}"
138
+ cmd_create_network =
139
+ config.active['docker_create_network'] % {
140
+ network: network
141
+ }
151
142
 
152
143
  run cmd_create_network
153
144
  end
@@ -161,12 +152,12 @@ module DockerContainerModule
161
152
  loginpoint = '/loginpoint.py --debug '
162
153
  end
163
154
 
164
- cmd_docker_enter = 'docker exec ' +
165
- '--interactive ' +
166
- '--tty ' +
167
- "#{container} " +
168
- loginpoint +
169
- "--username #{@username}"
155
+ cmd_docker_enter =
156
+ config.active['docker_enter'] % {
157
+ container: container,
158
+ loginpoint: loginpoint,
159
+ username: @username
160
+ }
170
161
 
171
162
  run_and_exit cmd_docker_enter
172
163
  end
@@ -175,9 +166,10 @@ module DockerContainerModule
175
166
  def _get_container_name_by_id container
176
167
  log.debug "Getting name of container \"#{container}\""
177
168
 
178
- cmd_get_container_name_by_id = 'docker ps ' +
179
- "--filter id=#{container} " +
180
- '--format "{{.Names}}"'
169
+ cmd_get_container_name_by_id =
170
+ config.active['docker_get_container_name_by_id'] % {
171
+ container: container
172
+ }
181
173
 
182
174
  stdout_str = run cmd_get_container_name_by_id
183
175
 
@@ -191,12 +183,12 @@ module DockerContainerModule
191
183
  # Get all docker containers.
192
184
  # @return [Array] list of docker containers
193
185
  def _get_containers
194
- log.debug "Getting all containers of image \"#{@docker_image}\""
186
+ log.debug "Getting all containers of image \"#{@docker_repo}\""
195
187
 
196
- cmd_docker_get = 'docker ps ' +
197
- '--all ' +
198
- "--filter name=^#{@docker_image}_ " +
199
- '--quiet'
188
+ cmd_docker_get =
189
+ config.active['docker_get'] % {
190
+ docker_repo: @docker_repo
191
+ }
200
192
 
201
193
  stdout_str = run cmd_docker_get
202
194
 
@@ -208,8 +200,10 @@ module DockerContainerModule
208
200
  def _remove_network network
209
201
  log.debug "Remove network \"#{network}\""
210
202
 
211
- cmd_remove_network = 'docker network rm ' +
212
- "#{network}"
203
+ cmd_remove_network =
204
+ config.active['docker_remove_network'] % {
205
+ network: network
206
+ }
213
207
 
214
208
  run cmd_remove_network
215
209
  end
@@ -218,10 +212,12 @@ module DockerContainerModule
218
212
  def _run_command_in_container(container, command)
219
213
  log.debug "Running command \"#{command}\" in container \"#{container}\""
220
214
 
221
- cmd_docker_run_command = 'docker exec ' +
222
- "#{container} " +
223
- "su #{@username} " +
224
- "-c 'LANG=en_US.UTF-8 #{command}'"
215
+ cmd_docker_run_command =
216
+ config.active['docker_run_command'] % {
217
+ container: container,
218
+ username: @username,
219
+ command: command
220
+ }
225
221
 
226
222
  run_and_exit cmd_docker_run_command
227
223
  end
@@ -230,8 +226,10 @@ module DockerContainerModule
230
226
  def _stop_container(container)
231
227
  log.debug "Stopping container \"#{container}\""
232
228
 
233
- cmd_docker_stop = 'docker stop ' +
234
- "#{container}"
229
+ cmd_docker_stop =
230
+ config.active['docker_stop'] % {
231
+ container: container
232
+ }
235
233
 
236
234
  run cmd_docker_stop
237
235
  end
@@ -17,8 +17,8 @@ module Takelage
17
17
  # initialize thor parent class
18
18
  super args, local_options, configuration
19
19
 
20
+ @docker_user = config.active['docker_user']
20
21
  @docker_repo = config.active['docker_repo']
21
- @docker_image = config.active['docker_image']
22
22
  @docker_tagsurl = config.active['docker_tagsurl']
23
23
  end
24
24
 
@@ -5,7 +5,7 @@ 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_repo docker_image docker_tagsurl)
8
+ return false unless configured? %w(docker_user docker_repo docker_tagsurl)
9
9
 
10
10
  tag_latest_remote = docker_image_tag_latest_remote
11
11
 
@@ -23,9 +23,15 @@ module DockerImageModule
23
23
  end
24
24
  end
25
25
 
26
- log.info "Updating to docker image \"#{@docker_repo}/#{@docker_image}:#{tag_latest_remote}\""
26
+ log.info "Updating to docker image \"#{@docker_user}/#{@docker_repo}:#{tag_latest_remote}\""
27
+
28
+ cmd_docker_pull_latest =
29
+ config.active['docker_pull_latest'] % {
30
+ docker_user: @docker_user,
31
+ docker_repo: @docker_repo,
32
+ tag_latest_remote: tag_latest_remote
33
+ }
27
34
 
28
- cmd_docker_pull_latest = "docker pull #{@docker_repo}/#{@docker_image}:#{tag_latest_remote}"
29
35
  run_and_exit cmd_docker_pull_latest
30
36
  end
31
37
  end
@@ -16,8 +16,8 @@ module Takelage
16
16
  # initialize thor parent class
17
17
  super args, local_options, configuration
18
18
 
19
+ @docker_user = config.active['docker_user']
19
20
  @docker_repo = config.active['docker_repo']
20
- @docker_image = config.active['docker_image']
21
21
  @docker_tagsurl = config.active['docker_tagsurl']
22
22
  end
23
23
 
@@ -8,17 +8,19 @@ module DockerImageTagCheckModule
8
8
 
9
9
  return false unless docker_check_running
10
10
 
11
- return false unless configured? %w(docker_repo docker_image)
11
+ return false unless configured? %w(docker_user docker_repo)
12
12
 
13
13
  if tag.to_s.strip.empty?
14
14
  log.warn "No local docker image tag specified"
15
15
  return false
16
16
  end
17
17
 
18
- image = "#{@docker_repo}/#{@docker_image}:#{tag}"
18
+ image = "#{@docker_user}/#{@docker_repo}:#{tag}"
19
19
 
20
- cmd_docker_images = 'docker images --quiet ' +
21
- image
20
+ cmd_docker_images =
21
+ config.active['docker_images'] % {
22
+ image: image
23
+ }
22
24
 
23
25
  stdout_str = run cmd_docker_images
24
26
 
@@ -38,14 +40,14 @@ module DockerImageTagCheckModule
38
40
 
39
41
  return false unless docker_check_running
40
42
 
41
- return false unless configured? %w(docker_repo docker_image docker_tagsurl)
43
+ return false unless configured? %w(docker_user docker_repo docker_tagsurl)
42
44
 
43
45
  if tag .to_s.strip.empty?
44
46
  log.warn "No remote docker image tag specified"
45
47
  return false
46
48
  end
47
49
 
48
- image = "#{@docker_repo}/#{@docker_image}:#{tag}"
50
+ image = "#{@docker_user}/#{@docker_repo}:#{tag}"
49
51
 
50
52
  tags = docker_image_tag_list_remote
51
53
 
@@ -16,8 +16,8 @@ module Takelage
16
16
  # initialize thor parent class
17
17
  super args, local_options, configuration
18
18
 
19
+ @docker_user = config.active['docker_user']
19
20
  @docker_repo = config.active['docker_repo']
20
- @docker_image = config.active['docker_image']
21
21
  @docker_tagsurl = config.active['docker_tagsurl']
22
22
  end
23
23
 
@@ -15,8 +15,8 @@ module Takelage
15
15
  # initialize thor parent class
16
16
  super args, local_options, configuration
17
17
 
18
+ @docker_user = config.active['docker_user']
18
19
  @docker_repo = config.active['docker_repo']
19
- @docker_image = config.active['docker_image']
20
20
  @docker_tagsurl = config.active['docker_tagsurl']
21
21
  end
22
22
 
@@ -6,11 +6,13 @@ module DockerImageTagListModule
6
6
  def docker_image_tag_list_local
7
7
  tags = []
8
8
 
9
- cmd_docker_images = 'docker images ' +
10
- "#{@docker_repo}\/#{@docker_image} " +
11
- ' --format "{{.Tag}}"'
9
+ cmd_docker_tags =
10
+ config.active['docker_tags'] % {
11
+ docker_user: @docker_user,
12
+ docker_repo: @docker_repo
13
+ }
12
14
 
13
- stdout_str = run cmd_docker_images
15
+ stdout_str = run cmd_docker_tags
14
16
 
15
17
  tags = stdout_str.split("\n")
16
18
 
@@ -11,7 +11,7 @@ module SystemModule
11
11
  if hash == {}
12
12
  return nil.to_yaml
13
13
  end
14
- return hash.to_yaml
14
+ return hash.to_yaml(options = {:line_width => -1})
15
15
  end
16
16
 
17
17
  # @return [Hash] content of yaml file
data/lib/takelage/version CHANGED
@@ -1 +1 @@
1
- 0.9.0
1
+ 0.9.1
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.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geospin