rops 1.0.2 → 1.0.6

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: 829dd8b1f5c11509c391c2cdbc8b712f76205bd70fbfef742e6207fa13b7511c
4
- data.tar.gz: 21f4dced40d80caf258fb7c4e7e03f52b3eee5841c8075477a3efb2fc45f7705
3
+ metadata.gz: 0b842710deb5849c4ee8342b766505a55c8e6778db4afbb79c6fa20768d6e43c
4
+ data.tar.gz: fe1df084466ab6019f9f85ba958ecda306f44757ff505ede0b8867f639e86706
5
5
  SHA512:
6
- metadata.gz: 0d15fd838d223d3603959358e75afd9eb7603f8ce77dd87e4f4be629b0a4872c62fc5c4507c7502cd641905176146d7f89777bfa66578f54094d5589bcc173ce
7
- data.tar.gz: 10235cd6c06c44271c0d63afdee05ac9964f6041dd73cd3065dd2c188098dc0d1101b59548a5c5326998bbd140c04c73c62d0751e4308f1b03dc452b33cf2da8
6
+ metadata.gz: 5039b8251bb501bd3ac8c4006ae82f23d998e2dc57c6a7c0e579c55d62140a2e9f517a3a3c61d373b30c5ed3211c90f035d86b91fca5d65fd765d883095d2ba0
7
+ data.tar.gz: 88fc34f86355c4c2917c916712ca1e3bbd7077c736e66a56081b4b9517d6ef646f022143732374d1fe1540110935f7fd8e7e6ff79f3c01d82dfc9d5ca57fed7f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rops (1.0.2)
4
+ rops (1.0.6)
5
5
  activesupport (~> 6.1.4)
6
6
  dry-cli (~> 0.7.0)
7
7
  git (~> 1.9.1)
data/README.md CHANGED
@@ -2,26 +2,23 @@
2
2
 
3
3
  The Record360 Operations tool - checkout, build, deploy
4
4
 
5
- ## Usage
5
+ ## Description
6
6
 
7
7
  This tool implements the Record360 Best Practices for building and deploying projects. It interfaces with Git (for source control), Docker/Podman (for container images), and Kubernetes (cluster deployments).
8
8
 
9
- ### Installation
9
+ ## Installation
10
10
 
11
- Add `rops` to your Gemfile and then run `bundle install`.
11
+ Download and install with:
12
12
 
13
- ```ruby
14
- # Gemfile
15
- group :development do
16
- gem 'rops', github: 'Record360/rops'
17
- end
13
+ ```shell
14
+ gem install rops
18
15
  ```
19
16
 
20
- ### Configuration
17
+ ## Configuration
21
18
 
22
19
  `rops` has several opinionated defaults, which can be overridden by command line options or a configuration file.
23
20
 
24
- #### Project Root Directory
21
+ ### Project Root Directory
25
22
  By default, the current working directory when `rops` runs. It can be overridden with the `--root=<DIR>` option.
26
23
 
27
24
  The project root directory must contain:
@@ -34,7 +31,7 @@ end
34
31
  * `./platform/rops.yaml`
35
32
  * `./config/rops.yaml`
36
33
 
37
- #### Docker Container Images
34
+ ### Docker Container Images
38
35
  By default, a single image named from the the Project root directory and built from `./Dockerfile`. May be overridden by setting the `images` array in the configuration file, e.g.:
39
36
 
40
37
  ```yaml
@@ -45,23 +42,22 @@ images:
45
42
  dockerfile: dockerfiles/second.Dockerfile
46
43
  ```
47
44
 
48
- #### Git Default Branch
45
+ ### Git Default Branch
49
46
  The Git branch to build, by default `master`. Overridden with the `default_branch` field in the configuration file.
50
47
 
51
- #### Docker Registry
48
+ ### Docker Registry
52
49
  The Docker registry to push container images. By default, `r360`, which is probably not what you want and should be overridden by setting the `registry` field in the configuration file.
53
50
 
54
- #### Kubernetes Context
51
+ ### Kubernetes Context
55
52
  The name of the Kubernetes context to deploy to (as listed in `~/.kube/config`). Defaults to `staging` and overridden with the `default_context` field in the configuration file.
56
53
 
57
54
  There are extra safety features when deploying to the production context, which defaults to `production` and may be overridden with the `production_context` field in the configuration file.
58
55
 
59
56
  Kubernetes configuration is organized by Kubernetes context name, under the `./platform` directory. For example, the Kubernetes configuration for the default contexts (`staging` and `production`) is stored under `./platform/staging` and `./platform/production` respectively.
60
57
 
61
- ### Operations
58
+ ## Operations
62
59
 
63
60
  ### Status
64
-
65
61
  Arguments:
66
62
  * `context`: Kubernetes context (default `staging`, or the value of `staging_context`)
67
63
 
@@ -80,7 +76,6 @@ Currently running (staging):
80
76
  ```
81
77
 
82
78
  ### Build
83
-
84
79
  Arguments:
85
80
  * `branch`: Git branch/commit (default `master`, or the value of `default_branch`)
86
81
 
@@ -105,7 +100,6 @@ Successfully tagged localhost/web:gfc50028b-feature
105
100
  ```
106
101
 
107
102
  ### Push
108
-
109
103
  Arguments:
110
104
  * `branch`: Git branch/commit (default `master`, or the value of `default_branch`)
111
105
 
@@ -120,7 +114,6 @@ Storing signatures
120
114
  ```
121
115
 
122
116
  ### Deploy
123
-
124
117
  Arguments:
125
118
  * `branch`: Git branch/commit (default `master`, or the value of `default_branch`)
126
119
  * `context`: Kubernetes context (default `staging`, or the value of `default_context`)
data/bin/rops CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  $: << __dir__+'/../lib'
3
3
 
4
- require 'bundler/setup'
5
4
  require 'dry/cli'
6
5
  require 'active_support'
7
6
  require 'active_support/core_ext'
data/lib/deployer.rb CHANGED
@@ -68,7 +68,7 @@ class Deployer
68
68
  end
69
69
 
70
70
  statuses, stderr, success = kubectl(context, cmd)
71
- unless success || stderr.match(/not found/)
71
+ unless (success || stderr.match(/not found/)) && statuses.present?
72
72
  puts stderr if stderr.present?
73
73
  return nil
74
74
  end
@@ -135,7 +135,7 @@ class Deployer
135
135
  cmd = "kubectl --context #{context} #{cmd}"
136
136
 
137
137
  if ssh_host.blank?
138
- stdout, stderr, cmd_status = Open3.capture3(cmd)
138
+ stdout, stderr, cmd_status = Open3.capture3(cmd, stdin_data: data)
139
139
  [ stdout, stderr, cmd_status.success? ]
140
140
  else
141
141
  require 'net/ssh'
data/lib/image.rb CHANGED
@@ -54,7 +54,9 @@ class Image
54
54
  end
55
55
 
56
56
  def local_exists?
57
- system("#{Deployer.docker} image exists #{local_image}")
57
+ if @local_exists.nil?
58
+ @local_exists = system("#{Deployer.docker} image exists #{local_image}")
59
+ end
58
60
  end
59
61
 
60
62
  def remote_image
@@ -68,7 +70,7 @@ class Image
68
70
  if status.success? || stderr.include?('error parsing manifest blob')
69
71
  @remote_exists = true
70
72
  else
71
- puts stderr if stderr.present? && !stderr.include?('manifest unknown')
73
+ puts stderr if stderr.present? && !stderr.include?('manifest unknown') && !stderr.include?('no such manifest')
72
74
  @remote_exists = false
73
75
  end
74
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rops
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Sloan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-27 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-cli