PNMDigiDockerizer 0.1.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 +7 -0
- data/lib/pnmd_dockerizer.rb +43 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 54dd6cc680960966c152d31e011e0a1ad12a72692f10abce88340f8e7ec4b0c3
|
4
|
+
data.tar.gz: 7fdfe73dd78eab0254e55c2705ad43cb955eb4d43beff521dab1692d211feade
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0103d9f8f343506ce1319692de30a420117f3439b807613ff4cd4c738b485e779fce05e240faa75c1c6ff1a0dff28f51fc1dc1f907424b3be9d297268cc767b3
|
7
|
+
data.tar.gz: f5af17b9530ac84bc88e14d524acfcf306b270660bc3e6658dcd789f355943e536e957d8b59e3d1267aafef2ead45f68848d175fd9e929694658a4c52b14f5e7
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'net/ssh'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module PNMDigiDockerizer
|
5
|
+
class Deployer
|
6
|
+
def initialize(credentials_file)
|
7
|
+
credentials = JSON.parse(File.read(credentials_file))
|
8
|
+
@server = credentials['server']
|
9
|
+
@username = credentials['username']
|
10
|
+
@ssh_key_path = credentials['ssh_key_path']
|
11
|
+
@image_name = credentials['image_name']
|
12
|
+
@container_name = credentials['container_name']
|
13
|
+
@port_mappings = credentials['port_mappings'] || ""
|
14
|
+
end
|
15
|
+
|
16
|
+
def deploy
|
17
|
+
Net::SSH.start(@server, @username, keys: [@ssh_key_path]) do |ssh|
|
18
|
+
# Hentikan dan hapus container yang sudah ada (jika ada)
|
19
|
+
ssh.exec!("docker stop #{@container_name} || true")
|
20
|
+
ssh.exec!("docker rm #{@container_name} || true")
|
21
|
+
|
22
|
+
# Tarik image terbaru dari registry
|
23
|
+
ssh.exec!("docker pull #{@image_name}")
|
24
|
+
|
25
|
+
# Jalankan container baru dengan port mapping (jika ada)
|
26
|
+
run_command = "docker run -d --name #{@container_name} #{@port_mappings} #{@image_name}"
|
27
|
+
ssh.exec!(run_command)
|
28
|
+
|
29
|
+
puts "Deployment successful!"
|
30
|
+
end
|
31
|
+
rescue Net::SSH::AuthenticationFailed
|
32
|
+
raise AuthenticationError, "Authentication failed. Please check your SSH key and permissions."
|
33
|
+
rescue Net::SSH::ConnectionTimeout
|
34
|
+
raise ConnectionTimeoutError, "Connection to server timed out."
|
35
|
+
rescue StandardError => e
|
36
|
+
raise DeploymentError, "Deployment failed: #{e.message}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class AuthenticationError < StandardError; end
|
41
|
+
class ConnectionTimeoutError < StandardError; end
|
42
|
+
class DeploymentError < StandardError; end
|
43
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: PNMDigiDockerizer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Babar
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-07-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: net-ssh
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '6.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '6.1'
|
27
|
+
description: Sebuah wrapper Ruby yang memudahkan deployment Docker ke server menggunakan
|
28
|
+
SSH.
|
29
|
+
email:
|
30
|
+
- babar@pnmdigi.co.id
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- lib/pnmd_dockerizer.rb
|
36
|
+
homepage:
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubygems_version: 3.5.3
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: Gem untuk deployment Docker otomatis.
|
59
|
+
test_files: []
|