cpl 1.0.0 → 1.0.2
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/.gitignore +1 -0
- data/CHANGELOG.md +32 -3
- data/Gemfile.lock +4 -4
- data/README.md +140 -178
- data/docs/assets/grafana-alert.png +0 -0
- data/docs/assets/memcached.png +0 -0
- data/docs/assets/sidekiq-pre-stop-hook.png +0 -0
- data/docs/commands.md +14 -2
- data/docs/migrating.md +262 -0
- data/docs/tips.md +177 -0
- data/examples/circleci.yml +8 -9
- data/examples/controlplane.yml +16 -14
- data/lib/command/base.rb +1 -1
- data/lib/command/cleanup_stale_apps.rb +1 -0
- data/lib/command/ps_start.rb +1 -3
- data/lib/command/ps_stop.rb +3 -5
- data/lib/command/ps_wait.rb +35 -0
- data/lib/core/controlplane.rb +20 -0
- data/lib/cpl/version.rb +2 -1
- data/lib/cpl.rb +42 -1
- data/script/update_command_docs +2 -2
- data/templates/daily-task.yml +5 -4
- data/templates/maintenance.yml +4 -3
- data/templates/memcached.yml +3 -2
- data/templates/postgres.yml +3 -2
- data/templates/rails.yml +3 -2
- data/templates/redis.yml +2 -1
- data/templates/sidekiq.yml +13 -4
- metadata +8 -2
data/lib/cpl/version.rb
CHANGED
data/lib/cpl.rb
CHANGED
@@ -40,16 +40,57 @@ end
|
|
40
40
|
module Cpl
|
41
41
|
class Error < StandardError; end
|
42
42
|
|
43
|
-
class Cli < Thor
|
43
|
+
class Cli < Thor # rubocop:disable Metrics/ClassLength
|
44
44
|
package_name "cpl"
|
45
45
|
default_task :no_command
|
46
46
|
|
47
47
|
def self.start(*args)
|
48
|
+
check_cpln_version
|
49
|
+
check_cpl_version
|
48
50
|
fix_help_option
|
49
51
|
|
50
52
|
super(*args)
|
51
53
|
end
|
52
54
|
|
55
|
+
def self.check_cpln_version # rubocop:disable Metrics/MethodLength
|
56
|
+
return if @checked_cpln_version
|
57
|
+
|
58
|
+
@checked_cpln_version = true
|
59
|
+
|
60
|
+
result = `cpln --version 2>/dev/null`
|
61
|
+
if $CHILD_STATUS.success?
|
62
|
+
data = JSON.parse(result)
|
63
|
+
|
64
|
+
version = data["npm"]
|
65
|
+
min_version = Cpl::MIN_CPLN_VERSION
|
66
|
+
if Gem::Version.new(version) < Gem::Version.new(min_version)
|
67
|
+
::Shell.abort("Current 'cpln' version: #{version}. Minimum supported version: #{min_version}. " \
|
68
|
+
"Please update it with 'npm update -g @controlplane/cli'.")
|
69
|
+
end
|
70
|
+
else
|
71
|
+
::Shell.abort("Can't find 'cpln' executable. Please install it with 'npm install -g @controlplane/cli'.")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.check_cpl_version # rubocop:disable Metrics/MethodLength
|
76
|
+
return if @checked_cpl_version
|
77
|
+
|
78
|
+
@checked_cpl_version = true
|
79
|
+
|
80
|
+
result = `gem search ^cpl$ --remote 2>/dev/null`
|
81
|
+
return unless $CHILD_STATUS.success?
|
82
|
+
|
83
|
+
matches = result.match(/cpl \((.+)\)/)
|
84
|
+
return unless matches
|
85
|
+
|
86
|
+
version = Cpl::VERSION
|
87
|
+
latest_version = matches[1]
|
88
|
+
return unless Gem::Version.new(version) < Gem::Version.new(latest_version)
|
89
|
+
|
90
|
+
::Shell.warn("You are not using the latest 'cpl' version. Please update it with 'gem update cpl'.")
|
91
|
+
$stderr.puts
|
92
|
+
end
|
93
|
+
|
53
94
|
# This is so that we're able to run `cpl COMMAND --help` to print the help
|
54
95
|
# (it basically changes it to `cpl --help COMMAND`, which Thor recognizes)
|
55
96
|
# Based on https://stackoverflow.com/questions/49042591/how-to-add-help-h-flag-to-thor-command
|
data/script/update_command_docs
CHANGED
@@ -46,7 +46,7 @@ file_data =
|
|
46
46
|
<<~DATA
|
47
47
|
<!-- NOTE: This file is automatically generated by running `script/generate_commands_docs`. Do NOT edit it manually. -->
|
48
48
|
|
49
|
-
|
49
|
+
## Common Options
|
50
50
|
|
51
51
|
```
|
52
52
|
-a XXX, --app XXX app ref on Control Plane (GVC)
|
@@ -55,7 +55,7 @@ file_data =
|
|
55
55
|
This `-a` option is used in most of the commands and will pick all other app configurations from the project-specific
|
56
56
|
`.controlplane/controlplane.yml` file.
|
57
57
|
|
58
|
-
|
58
|
+
## Commands
|
59
59
|
|
60
60
|
#{commands_str}
|
61
61
|
DATA
|
data/templates/daily-task.yml
CHANGED
@@ -4,23 +4,24 @@ spec:
|
|
4
4
|
# https://docs.controlplane.com/reference/workload#cron-configuration
|
5
5
|
type: cron
|
6
6
|
job:
|
7
|
-
# Run daily job at 2am
|
7
|
+
# Run daily job at 2am (see cron docs)
|
8
8
|
schedule: 0 2 * * *
|
9
9
|
# Never or OnFailure
|
10
10
|
restartPolicy: Never
|
11
11
|
containers:
|
12
12
|
- name: daily-task
|
13
|
+
cpu: 50m
|
14
|
+
memory: 256Mi
|
13
15
|
args:
|
14
16
|
- bundle
|
15
17
|
- exec
|
16
18
|
- rails
|
17
19
|
- db:prepare
|
18
|
-
cpu: 50m
|
19
20
|
inheritEnv: true
|
20
|
-
image:
|
21
|
-
memory: 256Mi
|
21
|
+
image: "/org/APP_ORG/image/APP_IMAGE"
|
22
22
|
defaultOptions:
|
23
23
|
autoscaling:
|
24
|
+
minScale: 1
|
24
25
|
maxScale: 1
|
25
26
|
capacityAI: false
|
26
27
|
firewallConfig:
|
data/templates/maintenance.yml
CHANGED
@@ -6,15 +6,16 @@ spec:
|
|
6
6
|
- name: maintenance
|
7
7
|
env:
|
8
8
|
- name: PORT
|
9
|
-
value:
|
9
|
+
value: "3000"
|
10
10
|
- name: PAGE_URL
|
11
|
-
value:
|
12
|
-
image:
|
11
|
+
value: ""
|
12
|
+
image: "shakacode/maintenance-mode"
|
13
13
|
ports:
|
14
14
|
- number: 3000
|
15
15
|
protocol: http
|
16
16
|
defaultOptions:
|
17
17
|
autoscaling:
|
18
|
+
minScale: 1
|
18
19
|
maxScale: 1
|
19
20
|
capacityAI: false
|
20
21
|
timeoutSeconds: 60
|
data/templates/memcached.yml
CHANGED
@@ -7,15 +7,16 @@ spec:
|
|
7
7
|
cpu: 3m
|
8
8
|
memory: 10Mi
|
9
9
|
args:
|
10
|
-
-
|
10
|
+
- "-l"
|
11
11
|
- 0.0.0.0
|
12
|
-
image:
|
12
|
+
image: "memcached:alpine"
|
13
13
|
ports:
|
14
14
|
- number: 11211
|
15
15
|
protocol: tcp
|
16
16
|
defaultOptions:
|
17
17
|
autoscaling:
|
18
18
|
metric: latency
|
19
|
+
minScale: 1
|
19
20
|
maxScale: 1
|
20
21
|
capacityAI: false
|
21
22
|
firewallConfig:
|
data/templates/postgres.yml
CHANGED
@@ -13,17 +13,18 @@ spec:
|
|
13
13
|
value: password123
|
14
14
|
- name: POSTGRES_USER
|
15
15
|
value: postgres
|
16
|
-
image:
|
16
|
+
image: "postgres:13.8-alpine"
|
17
17
|
ports:
|
18
18
|
- number: 5432
|
19
19
|
protocol: tcp
|
20
20
|
volumes:
|
21
21
|
- path: /var/lib/postgresql/data
|
22
22
|
recoveryPolicy: retain
|
23
|
-
uri:
|
23
|
+
uri: "scratch://postgres-vol"
|
24
24
|
defaultOptions:
|
25
25
|
autoscaling:
|
26
26
|
metric: latency
|
27
|
+
minScale: 1
|
27
28
|
maxScale: 1
|
28
29
|
capacityAI: false
|
29
30
|
firewallConfig:
|
data/templates/rails.yml
CHANGED
@@ -5,14 +5,15 @@ spec:
|
|
5
5
|
containers:
|
6
6
|
- name: rails
|
7
7
|
cpu: 512m
|
8
|
-
inheritEnv: true
|
9
|
-
image: '/org/APP_ORG/image/APP_IMAGE'
|
10
8
|
memory: 1Gi
|
9
|
+
inheritEnv: true
|
10
|
+
image: "/org/APP_ORG/image/APP_IMAGE"
|
11
11
|
ports:
|
12
12
|
- number: 3000
|
13
13
|
protocol: http
|
14
14
|
defaultOptions:
|
15
15
|
autoscaling:
|
16
|
+
minScale: 1
|
16
17
|
maxScale: 1
|
17
18
|
capacityAI: false
|
18
19
|
timeoutSeconds: 60
|
data/templates/redis.yml
CHANGED
@@ -6,13 +6,14 @@ spec:
|
|
6
6
|
- name: redis
|
7
7
|
cpu: 3m
|
8
8
|
memory: 20Mi
|
9
|
-
image:
|
9
|
+
image: "redis:latest"
|
10
10
|
ports:
|
11
11
|
- number: 6379
|
12
12
|
protocol: tcp
|
13
13
|
defaultOptions:
|
14
14
|
autoscaling:
|
15
15
|
metric: latency
|
16
|
+
minScale: 1
|
16
17
|
maxScale: 1
|
17
18
|
capacityAI: false
|
18
19
|
firewallConfig:
|
data/templates/sidekiq.yml
CHANGED
@@ -4,21 +4,30 @@ spec:
|
|
4
4
|
type: standard
|
5
5
|
containers:
|
6
6
|
- name: sidekiq
|
7
|
+
cpu: 50m
|
8
|
+
memory: 256Mi
|
7
9
|
args:
|
8
10
|
- bundle
|
9
11
|
- exec
|
10
12
|
- sidekiq
|
11
|
-
-
|
13
|
+
- "-C"
|
12
14
|
- config/sidekiq.yml
|
13
|
-
cpu: 50m
|
14
15
|
inheritEnv: true
|
15
|
-
image:
|
16
|
-
memory: 256Mi
|
16
|
+
image: "/org/APP_ORG/image/APP_IMAGE"
|
17
17
|
ports:
|
18
18
|
- number: 7433
|
19
19
|
protocol: http
|
20
|
+
lifecycle:
|
21
|
+
preStop:
|
22
|
+
exec:
|
23
|
+
command:
|
24
|
+
- pkill
|
25
|
+
- "-TSTP"
|
26
|
+
- "-f"
|
27
|
+
- ^sidekiq\s
|
20
28
|
defaultOptions:
|
21
29
|
autoscaling:
|
30
|
+
minScale: 1
|
22
31
|
maxScale: 1
|
23
32
|
capacityAI: false
|
24
33
|
firewallConfig:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Gordon
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: debug
|
@@ -219,9 +219,14 @@ files:
|
|
219
219
|
- bin/cpl
|
220
220
|
- cpl
|
221
221
|
- cpl.gemspec
|
222
|
+
- docs/assets/grafana-alert.png
|
223
|
+
- docs/assets/memcached.png
|
224
|
+
- docs/assets/sidekiq-pre-stop-hook.png
|
222
225
|
- docs/commands.md
|
226
|
+
- docs/migrating.md
|
223
227
|
- docs/postgres.md
|
224
228
|
- docs/redis.md
|
229
|
+
- docs/tips.md
|
225
230
|
- docs/troubleshooting.md
|
226
231
|
- examples/circleci.yml
|
227
232
|
- examples/controlplane.yml
|
@@ -251,6 +256,7 @@ files:
|
|
251
256
|
- lib/command/ps_restart.rb
|
252
257
|
- lib/command/ps_start.rb
|
253
258
|
- lib/command/ps_stop.rb
|
259
|
+
- lib/command/ps_wait.rb
|
254
260
|
- lib/command/run.rb
|
255
261
|
- lib/command/run_cleanup.rb
|
256
262
|
- lib/command/run_detached.rb
|