calevipoeg-zeus 0.1.3 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +33 -0
- data/lib/zeus/mina/docker_service.rb +41 -0
- data/lib/zeus/mina/make.rb +8 -0
- data/lib/zeus/mina/s3.rb +30 -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: 06de19880926c2b7c1790df9642cd54bdb714763945faaefde1b46d9d365ffbe
|
4
|
+
data.tar.gz: e302ac90287f2af764eb43528c72a37a1bb7d833b1a0f836e686d0229f15077e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42db57f833293e96ee1a893bd0d7ce13de8cbb37014b4405cb25db27c2e00ff044d247797c6c71ee03365a6a5278f6b6db68db3ce3e7ba10f4fc9c4b98efd6b3
|
7
|
+
data.tar.gz: e899c96427cfad3cbfa369154220de0f023040f9df10167cadbab1a2b71f5addf9c41f6aa9eca1136f983eb4cc0011b7940064175f5d52711e99de48cd1885f6
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -66,3 +66,36 @@ ensure
|
|
66
66
|
pg.unlink
|
67
67
|
end
|
68
68
|
```
|
69
|
+
|
70
|
+
## Mina tasks
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
require 'zeus'
|
74
|
+
require 'zeus/mina/make'
|
75
|
+
|
76
|
+
invoke :make, 'docker:push'
|
77
|
+
```
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
require 'zeus'
|
81
|
+
require 'zeus/mina/docker_service'
|
82
|
+
|
83
|
+
invoke :make, 'docker:push'
|
84
|
+
invoke :'docker_service:update', 'app', '--force --with-registry-auth --image http://example.com'
|
85
|
+
```
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
require 'zeus'
|
89
|
+
require 'zeus/mina/s3'
|
90
|
+
|
91
|
+
set :s3_client, -> do
|
92
|
+
Aws::S3::Client.new
|
93
|
+
end
|
94
|
+
|
95
|
+
set :s3_bucket, -> do
|
96
|
+
'hole'
|
97
|
+
end
|
98
|
+
|
99
|
+
invoke :'s3:upload', ["public/static"], "cdn/production/static"
|
100
|
+
invoke :'s3:clean', 'cdn/production/static', 14.days.ago
|
101
|
+
```
|
@@ -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,30 @@
|
|
1
|
+
require 'aws-sdk-s3'
|
2
|
+
|
3
|
+
set :s3_client, -> { raise }
|
4
|
+
set :s3_bucket, -> { raise }
|
5
|
+
|
6
|
+
namespace :s3 do
|
7
|
+
task :upload, %i[dirs destination] do |_t, argv|
|
8
|
+
Array(argv.dirs).each do |dir|
|
9
|
+
Dir.glob(Pathname.new(dir).join('**/**')).each do |file|
|
10
|
+
next if File.directory?(file)
|
11
|
+
|
12
|
+
path = Pathname.new(file).relative_path_from(dir)
|
13
|
+
key = Pathname.new(argv.destination).join(path)
|
14
|
+
io = Zeus::S3Io.new(File.open(file))
|
15
|
+
|
16
|
+
io.upload(fetch(:s3_client), bucket: fetch(:s3_bucket), acl: 'public-read', key: String(key)) do |progress|
|
17
|
+
puts "[#{progress}%] Uploading #{file} -> #{key}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
task :clean, %i[prefix last_mod] do |_t, argv|
|
24
|
+
Zeus::S3Iterate.new(fetch(:s3_client)).delete_if(bucket: fetch(:s3_bucket), prefix: argv.prefix) do |file|
|
25
|
+
break(false) unless argv.last_mod >= file.last_modified
|
26
|
+
|
27
|
+
puts "[-] removing (last mod #{file.last_modified}) #{file.key}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
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.8
|
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
|