calevipoeg-zeus 0.1.3 → 0.1.4
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/Gemfile.lock +2 -2
- data/README.md +30 -0
- data/lib/zeus/mina/docker_service.rb +41 -0
- data/lib/zeus/mina/make.rb +8 -0
- data/lib/zeus/mina/s3.rb +39 -0
- data/lib/zeus/version.rb +1 -1
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2ff33fd8321399b29bb46764cf8e2d84f8d5b0a0b7e2d592589718a22ccece13
|
|
4
|
+
data.tar.gz: 9c29313d35752a2b1423bc0aee046a0a952a18b2b5ef3d1e0af7d250aaf8e7d2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 54c626d6fbfbc1986f47eee974872976b8a89c5962d78818f199333cb081460dfefc56c217456f58d04313e778c4222f583e35841854c404119136f614ddf59d
|
|
7
|
+
data.tar.gz: d48d3bdcdf7d9d77489290a649cad4f113d5dd9c29b8c7c995b9b35891b222ef7c725dda8e48d9c7cca9ac288d2329d4c56af6d1011ce7b7305ec8076a2d1b36
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -66,3 +66,33 @@ ensure
|
|
|
66
66
|
pg.unlink
|
|
67
67
|
end
|
|
68
68
|
```
|
|
69
|
+
|
|
70
|
+
## Mina tasks
|
|
71
|
+
|
|
72
|
+
```ruby
|
|
73
|
+
require 'zeus/mina/make'
|
|
74
|
+
|
|
75
|
+
invoke :make, 'docker:push'
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```ruby
|
|
79
|
+
require 'zeus/mina/docker_service'
|
|
80
|
+
|
|
81
|
+
invoke :make, 'docker:push'
|
|
82
|
+
invoke :'docker_service:update', 'app', '--force --with-registry-auth --image http://example.com'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
require 'zeus/mina/s3'
|
|
87
|
+
|
|
88
|
+
set :s3_client, -> do
|
|
89
|
+
Aws::S3::Client.new
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
set :s3_bucket, -> do
|
|
93
|
+
'hole'
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
invoke :'s3:upload', ["public/static"], "cdn/production/static"
|
|
97
|
+
invoke :'s3:clean', "cdn/production/static"
|
|
98
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
namespace :docker_service do
|
|
4
|
+
desc 'Update a service'
|
|
5
|
+
task :update, %i[application arguments] do |_t, argv|
|
|
6
|
+
command "docker service update #{argv.application} #{argv.arguments}"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
desc 'Create docker container'
|
|
10
|
+
task :create, %i[arguments] do |_t, argv|
|
|
11
|
+
command "docker service create #{argv.arguments.tr("\n", ' ')}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# The <command> should have:
|
|
15
|
+
# 1) "--restart-condition none" and "--detach" arguments for docker-create
|
|
16
|
+
# 2) "--name $SHOT_NAME"
|
|
17
|
+
desc 'Execute one-time container task'
|
|
18
|
+
task :shot, %i[name command] do |_t, argv|
|
|
19
|
+
command <<~CMD
|
|
20
|
+
bash << "EOF"
|
|
21
|
+
export SHOT_NAME=#{argv.name}
|
|
22
|
+
|
|
23
|
+
docker service rm $SHOT_NAME 2>/dev/null
|
|
24
|
+
|
|
25
|
+
TASK_ID=$(#{argv.command})
|
|
26
|
+
|
|
27
|
+
echo "Waiting ${SHOT_NAME} with ID <${TASK_ID}> for being finished"
|
|
28
|
+
|
|
29
|
+
while : ; do
|
|
30
|
+
STOPPED_TASK=$(docker service ps --filter 'desired-state=shutdown' ${TASK_ID} -q)
|
|
31
|
+
[[ ${STOPPED_TASK} != "" ]] && break
|
|
32
|
+
echo "not finished yet $(date)"
|
|
33
|
+
sleep 1
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
docker service logs --raw ${TASK_ID}
|
|
37
|
+
docker service rm ${TASK_ID} > /dev/null
|
|
38
|
+
EOF
|
|
39
|
+
CMD
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# @example invoke :make, 'docker:push'
|
|
4
|
+
# @example invoke :make, 'docker:push', 'APP_ENV=staging'
|
|
5
|
+
desc 'Execute a Make file command'
|
|
6
|
+
task :make, %i[command env] do |_t, argv|
|
|
7
|
+
system "#{argv.env} make #{argv.command}", exception: true
|
|
8
|
+
end
|
data/lib/zeus/mina/s3.rb
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'aws-sdk-s3'
|
|
2
|
+
|
|
3
|
+
set :s3_client, -> { raise }
|
|
4
|
+
set :s3_bucket, -> { raise }
|
|
5
|
+
|
|
6
|
+
namespace :aws do
|
|
7
|
+
namespace :s3 do
|
|
8
|
+
task :upload, %i[dirs destination] do |_t, argv|
|
|
9
|
+
Array(argv.dirs).each do |dir|
|
|
10
|
+
Dir.glob(Pathname.new(dir).join('**/**')).each do |file|
|
|
11
|
+
next if File.directory?(file)
|
|
12
|
+
|
|
13
|
+
path = Pathname.new(file).relative_path_from(dir)
|
|
14
|
+
key = Pathname.new(argv.destination).join(path)
|
|
15
|
+
|
|
16
|
+
io = Zeus::S3Io.new(File.open(file))
|
|
17
|
+
io.upload(fetch(:s3_client), bucket: fetch(:s3_bucket), key: key) do |progress|
|
|
18
|
+
puts "[#{progress}%] Uploading #{file} -> #{key}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# task :clean, %i[destination] => :client do |_t, argv|
|
|
25
|
+
# files = @s3.list_objects_v2(bucket: fetch(:s3_bucket_name), prefix: argv.destination).each_with_object([]) do |list, object|
|
|
26
|
+
# list.contents.each do |file|
|
|
27
|
+
# next if file.last_modified > fetch(:s3_clean_after)
|
|
28
|
+
#
|
|
29
|
+
# object << file
|
|
30
|
+
# end
|
|
31
|
+
# end
|
|
32
|
+
#
|
|
33
|
+
# files.each do |file|
|
|
34
|
+
# puts "[-] removing (last mod #{file.last_modified}) #{file.key}"
|
|
35
|
+
# @s3.delete_object(bucket: fetch(:s3_bucket_name), key: file.key)
|
|
36
|
+
# end
|
|
37
|
+
# end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/zeus/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: calevipoeg-zeus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aliaksandr Shylau
|
|
@@ -30,6 +30,9 @@ files:
|
|
|
30
30
|
- bin/setup
|
|
31
31
|
- exe/zeus:copy
|
|
32
32
|
- lib/zeus.rb
|
|
33
|
+
- lib/zeus/mina/docker_service.rb
|
|
34
|
+
- lib/zeus/mina/make.rb
|
|
35
|
+
- lib/zeus/mina/s3.rb
|
|
33
36
|
- lib/zeus/pg_base_backup.rb
|
|
34
37
|
- lib/zeus/s3_io.rb
|
|
35
38
|
- lib/zeus/s3_iterate.rb
|