cpflow 3.0.0 → 4.0.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 +4 -4
- data/.github/workflows/command_docs.yml +1 -1
- data/.github/workflows/rspec-shared.yml +12 -9
- data/.github/workflows/rspec-specific.yml +18 -0
- data/.github/workflows/rspec.yml +6 -6
- data/.github/workflows/rubocop.yml +1 -1
- data/.overcommit.yml +4 -4
- data/CHANGELOG.md +42 -14
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +10 -0
- data/Gemfile.lock +28 -27
- data/README.md +1 -1
- data/cpflow.gemspec +0 -11
- data/lib/command/apply_template.rb +1 -1
- data/lib/command/base.rb +16 -2
- data/lib/command/build_image.rb +5 -1
- data/lib/command/cleanup_stale_apps.rb +1 -1
- data/lib/command/deploy_image.rb +10 -1
- data/lib/command/doctor.rb +1 -1
- data/lib/command/generate.rb +1 -0
- data/lib/command/info.rb +2 -2
- data/lib/command/maintenance.rb +6 -18
- data/lib/command/maintenance_off.rb +6 -40
- data/lib/command/maintenance_on.rb +6 -40
- data/lib/command/no_command.rb +2 -2
- data/lib/command/promote_app_from_upstream.rb +2 -2
- data/lib/command/run.rb +3 -3
- data/lib/command/setup_app.rb +1 -1
- data/lib/command/test.rb +2 -2
- data/lib/core/controlplane.rb +3 -4
- data/lib/core/doctor_service.rb +6 -8
- data/lib/core/maintenance_mode.rb +111 -0
- data/lib/core/template_parser.rb +7 -7
- data/lib/cpflow/version.rb +2 -2
- data/lib/cpflow.rb +8 -23
- data/lib/patches/thor.rb +26 -0
- metadata +5 -142
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b703678fbaeb6b6300473a8f4529a7c9e62dcc2439ab22cae79abe1a01f83fad
|
4
|
+
data.tar.gz: 9a75cf47df352fce3efe005ebc283d1581befdc5185d8628de8eca0b3df70c5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26cff99f48b33180c93f3d90d1f726c766f7cf49ed983bb1079cc4260affa95f1e8d8596f21817f910f2abead651fca7856284245d2cb8ae936b100fde7507e9
|
7
|
+
data.tar.gz: aa7160f2cb036ccff1aa99484a5566102331f07cabf0afe6e5fe4f592a0a1de68cb1c205706a694a91e10bc5ff5f2104dd5edc9d235985fd67e136f3a4b2b1f7
|
@@ -3,19 +3,22 @@ name: RSpec Shared
|
|
3
3
|
on:
|
4
4
|
workflow_call:
|
5
5
|
inputs:
|
6
|
-
|
6
|
+
os_version:
|
7
7
|
required: true
|
8
8
|
type: string
|
9
|
-
|
9
|
+
ruby_version:
|
10
10
|
required: true
|
11
11
|
type: string
|
12
|
-
|
13
|
-
required:
|
12
|
+
test_tag:
|
13
|
+
required: false
|
14
|
+
type: string
|
15
|
+
spec_paths:
|
16
|
+
required: false
|
14
17
|
type: string
|
15
18
|
|
16
19
|
jobs:
|
17
20
|
rspec:
|
18
|
-
runs-on: ${{ inputs.
|
21
|
+
runs-on: ${{ inputs.os_version }}
|
19
22
|
env:
|
20
23
|
RAILS_ENV: test
|
21
24
|
# We have to add "_CI" to the end, otherwise it messes with tests where we switch profiles,
|
@@ -28,7 +31,7 @@ jobs:
|
|
28
31
|
- name: Set up Ruby
|
29
32
|
uses: ruby/setup-ruby@v1
|
30
33
|
with:
|
31
|
-
ruby-version: ${{ inputs.
|
34
|
+
ruby-version: ${{ inputs.ruby_version }}
|
32
35
|
bundler-cache: true
|
33
36
|
- name: Install dependencies
|
34
37
|
run: bundle install
|
@@ -41,16 +44,16 @@ jobs:
|
|
41
44
|
cpln profile create default --token $CPLN_TOKEN_CI --org $CPLN_ORG
|
42
45
|
cpln image docker-login
|
43
46
|
- name: Run tests
|
44
|
-
run: bundle exec rspec --format documentation --tag ${{ inputs.
|
47
|
+
run: bundle exec rspec --format documentation ${{ inputs.test_tag && format('--tag {0}', inputs.test_tag) }} ${{ inputs.spec_paths }}
|
45
48
|
- name: Upload spec log
|
46
49
|
uses: actions/upload-artifact@master
|
47
50
|
if: always()
|
48
51
|
with:
|
49
|
-
name: spec-${{ inputs.
|
52
|
+
name: spec-${{ inputs.test_tag }}-${{ github.run_id }}-${{ inputs.os_version }}-${{ inputs.ruby_version }}.log
|
50
53
|
path: spec.log
|
51
54
|
- name: Upload coverage results
|
52
55
|
uses: actions/upload-artifact@master
|
53
56
|
if: always()
|
54
57
|
with:
|
55
|
-
name: coverage-report-${{ inputs.
|
58
|
+
name: coverage-report-${{ inputs.test_tag }}-${{ github.run_id }}-${{ inputs.os_version }}-${{ inputs.ruby_version }}
|
56
59
|
path: coverage
|
@@ -0,0 +1,18 @@
|
|
1
|
+
name: RSpec Specific
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
inputs:
|
6
|
+
spec_paths:
|
7
|
+
description: "Test files or directories that should be run"
|
8
|
+
required: true
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
rspec-specific:
|
12
|
+
name: RSpec (Specific)
|
13
|
+
uses: ./.github/workflows/rspec-shared.yml
|
14
|
+
with:
|
15
|
+
os_version: ubuntu-latest
|
16
|
+
ruby_version: "3.2"
|
17
|
+
spec_paths: ${{ inputs.spec_paths }}
|
18
|
+
secrets: inherit
|
data/.github/workflows/rspec.yml
CHANGED
@@ -12,9 +12,9 @@ jobs:
|
|
12
12
|
name: RSpec (Fast)
|
13
13
|
uses: ./.github/workflows/rspec-shared.yml
|
14
14
|
with:
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
os_version: ubuntu-latest
|
16
|
+
ruby_version: "3.2"
|
17
|
+
test_tag: ~slow
|
18
18
|
secrets: inherit
|
19
19
|
|
20
20
|
rspec-slow:
|
@@ -22,7 +22,7 @@ jobs:
|
|
22
22
|
uses: ./.github/workflows/rspec-shared.yml
|
23
23
|
if: github.event_name == 'workflow_dispatch'
|
24
24
|
with:
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
os_version: ubuntu-latest
|
26
|
+
ruby_version: "3.2"
|
27
|
+
test_tag: slow
|
28
28
|
secrets: inherit
|
data/.overcommit.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -14,6 +14,30 @@ Changes since the last non-beta release.
|
|
14
14
|
|
15
15
|
_Please add entries here for your pull requests that have not yet been released._
|
16
16
|
|
17
|
+
|
18
|
+
## [4.0.0] - 2024-08-21
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
|
22
|
+
- Fixed issue where common options are not forwarded to other commands. [PR 207](https://github.com/shakacode/control-plane-flow/pull/207) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
23
|
+
- Fixed BYOK endpoint. [PR 209](https://github.com/shakacode/control-plane-flow/pull/209) by [Sergey Tarasov](https://github.com/dzirtusss).
|
24
|
+
- Fixed issue where `generate` command fails if no project config exists. [PR 219](https://github.com/shakacode/control-plane-flow/pull/219) by [Zakir Dzhamaliddinov](https://github.com/zzaakiirr).
|
25
|
+
- Bumped min `cpln` version to `3.1.0` and fixed `cpln workload exec` calls. [PR 226](https://github.com/shakacode/control-plane-flow/pull/226) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
26
|
+
|
27
|
+
## [3.0.1] - 2024-06-26
|
28
|
+
|
29
|
+
### Fixed
|
30
|
+
|
31
|
+
- Moved development dependencies to Gemfile and updated many of them. [PR 208](https://github.com/shakacode/control-plane-flow/pull/208) by [Justin Gordon](https://github.com/justin808).
|
32
|
+
|
33
|
+
## [3.0.0] - 2024-06-21
|
34
|
+
|
35
|
+
First release of `cpflow`.
|
36
|
+
|
37
|
+
## [2.2.4] - 2024-06-21
|
38
|
+
|
39
|
+
Deprecated `cpl` gem. New gem is `cpflow`.
|
40
|
+
|
17
41
|
## [2.2.1] - 2024-06-17
|
18
42
|
|
19
43
|
### Fixed
|
@@ -57,17 +81,17 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
57
81
|
- Specific validations are now run before commands, and the command will exit with a non-zero code if any validation fails. Can be disabled by setting `DISABLE_VALIDATIONS` env var to `true`. [PR 185](https://github.com/shakacode/control-plane-flow/pull/185) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
58
82
|
- Deprecated the `--skip-secret-access-binding` option in favor of `--skip-secrets-setup`. This can also now be configured through `skip_secrets_setup` in `controlplane.yml` [PR 190](https://github.com/shakacode/control-plane-flow/pull/190) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
59
83
|
|
60
|
-
## [2.0.2] - 2024-05-
|
84
|
+
## [2.0.2] - 2024-05-18
|
61
85
|
|
62
86
|
- Fixed issue with improper handling of job statuses. Fixed issue with interactive magic string showing and exit code. [PR 177](https://github.com/shakacode/control-plane-flow/pull/177) by [Sergey Tarasov](https://github.com/dzirtusss).
|
63
87
|
|
64
|
-
## [2.0.1] - 2024-05-
|
88
|
+
## [2.0.1] - 2024-05-16
|
65
89
|
|
66
90
|
### Fixed
|
67
91
|
|
68
92
|
- Fixed issue where `cleanup-stale-apps` command fails to delete apps with volumesets. [PR 175](https://github.com/shakacode/control-plane-flow/pull/175) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
69
93
|
|
70
|
-
## [2.0.0] - 2024-05-
|
94
|
+
## [2.0.0] - 2024-05-15
|
71
95
|
|
72
96
|
### BREAKING CHANGES
|
73
97
|
|
@@ -97,7 +121,7 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
97
121
|
- `deploy-image` command now raises an error if image does not exist. [PR 153](https://github.com/shakacode/control-plane-flow/pull/153) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
98
122
|
- `delete` command now unbinds identity from policy (if bound) when deleting app. [PR 170](https://github.com/shakacode/control-plane-flow/pull/170) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
99
123
|
|
100
|
-
## [1.4.0] - 2024-03-
|
124
|
+
## [1.4.0] - 2024-03-21
|
101
125
|
|
102
126
|
### Added
|
103
127
|
|
@@ -134,12 +158,12 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
134
158
|
- `info` command now lists workloads in the same order as `controlplane.yml`. [PR 139](https://github.com/shakacode/control-plane-flow/pull/139) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
135
159
|
- Improved domain workload matching for `maintenance`, `maintenance:on` and `maintenance:off` commands (instead of matching only by workload, it now matches by org + app + workload, which is more accurate). [PR 140](https://github.com/shakacode/control-plane-flow/pull/140) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
136
160
|
|
137
|
-
## [1.2.0] - 2024-01-
|
161
|
+
## [1.2.0] - 2024-01-04
|
138
162
|
|
139
163
|
### Fixed
|
140
164
|
|
141
165
|
- Fixed issue where `info` command does not respect `CPLN_ORG` env var. [PR 88](https://github.com/shakacode/control-plane-flow/pull/88) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
142
|
-
- Fixed issues with running `cpflow --version` and `cpflow --help` where no configuration file exists. [PR
|
166
|
+
- Fixed issues with running `cpflow --version` and `cpflow --help` where no configuration file exists. [PR 109](https://github.com/shakacode/control-plane-flow/pull/109) by [Mostafa Ahangarha](https://github.com/ahangarha).
|
143
167
|
- Fixed issue where `delete` command fails to delete apps with volumesets. [PR 123](https://github.com/shakacode/control-plane-flow/pull/123) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
144
168
|
|
145
169
|
### Added
|
@@ -150,19 +174,19 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
150
174
|
- Added option to only use `CPLN_ORG` and `CPLN_APP` env vars if `allow_org_override_by_env` and `allow_app_override_by_env` configs are set to `true` in `controlplane.yml`. [PR 109](https://github.com/shakacode/control-plane-flow/pull/109) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
151
175
|
- Added `CPLN_LOCATION` env variable and `--location` option for `apply-template`, `ps`, `run`, `run:detached`. [PR 105](https://github.com/shakacode/control-plane-flow/pull/105) by [Mostafa Ahangarha](https://github.com/ahangarha).
|
152
176
|
- Added `generate` command for creating basic Control Plane configuration directory. [PR 116](https://github.com/shakacode/control-plane-flow/pull/116) by [Mostafa Ahangarhga](https://github.com/ahangarha).
|
153
|
-
- Added `--trace` option to all commands for more detailed logs. [PR 124](https://github.com/shakacode/control-plane-flow/pull/124) by [
|
154
|
-
- Added better error message to check the org name in case of a 403 error. [PR 124](https://github.com/
|
177
|
+
- Added `--trace` option to all commands for more detailed logs. [PR 124](https://github.com/shakacode/control-plane-flow/pull/124) by [Justin Gordon](https://github.com/justin808).
|
178
|
+
- Added better error message to check the org name in case of a 403 error. [PR 124](https://github.com/shakacode/control-plane-flow/pull/124) by [Justin Gordon](https://github.com/justin808).
|
155
179
|
|
156
180
|
### Changed
|
157
181
|
|
158
182
|
- `--org` option now takes precedence over `CPLN_ORG` env var, which takes precedence over `cpln_org` from `controlplane.yml`. [PR 88](https://github.com/shakacode/control-plane-flow/pull/88) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
159
183
|
- Renamed `setup` config into `setup_app_templates`. [PR 112](https://github.com/shakacode/control-plane-flow/pull/112) by [Mostafa Ahangarha](https://github.com/ahangarha).
|
160
184
|
|
161
|
-
## [1.1.2] - 2023-10-
|
185
|
+
## [1.1.2] - 2023-10-25
|
162
186
|
|
163
187
|
### Fixed
|
164
188
|
|
165
|
-
- Fixed failed build on MacOS by adding platform flag and fixed multiple files in yaml document for template. [PR 81](https://github.com/shakacode/control-plane-flow/pull/81) by [
|
189
|
+
- Fixed failed build on MacOS by adding platform flag and fixed multiple files in yaml document for template. [PR 81](https://github.com/shakacode/control-plane-flow/pull/81) by [Justin Gordon](https://github.com/justin808).
|
166
190
|
|
167
191
|
### Added
|
168
192
|
|
@@ -174,7 +198,7 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
174
198
|
|
175
199
|
- Calling `cpflow` with no command now shows the help menu. [PR 83](https://github.com/shakacode/control-plane-flow/pull/83) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
176
200
|
|
177
|
-
## [1.1.1] - 2023-09-
|
201
|
+
## [1.1.1] - 2023-09-21
|
178
202
|
|
179
203
|
### Fixed
|
180
204
|
|
@@ -198,7 +222,7 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
198
222
|
- Renamed `cleanup-old-images` command to `cleanup-images`. [PR 72](https://github.com/shakacode/control-plane-flow/pull/72) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
199
223
|
- Renamed `old_image_retention_days` config to `image_retention_days`. [PR 72](https://github.com/shakacode/control-plane-flow/pull/72) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
|
200
224
|
|
201
|
-
## [1.0.4] - 2023-07-
|
225
|
+
## [1.0.4] - 2023-07-24
|
202
226
|
|
203
227
|
### Fixed
|
204
228
|
|
@@ -237,9 +261,13 @@ _Please add entries here for your pull requests that have not yet been released.
|
|
237
261
|
|
238
262
|
## [1.0.0] - 2023-05-29
|
239
263
|
|
240
|
-
|
264
|
+
First release.
|
241
265
|
|
242
|
-
[Unreleased]: https://github.com/shakacode/control-plane-flow/compare/
|
266
|
+
[Unreleased]: https://github.com/shakacode/control-plane-flow/compare/v4.0.0...HEAD
|
267
|
+
[4.0.0]: https://github.com/shakacode/control-plane-flow/compare/v3.0.1...v4.0.0
|
268
|
+
[3.0.1]: https://github.com/shakacode/control-plane-flow/compare/v3.0.0...v3.0.1
|
269
|
+
[3.0.0]: https://github.com/shakacode/control-plane-flow/compare/v2.2.4...v3.0.0
|
270
|
+
[2.2.4]: https://github.com/shakacode/control-plane-flow/compare/v2.2.1...v2.2.4
|
243
271
|
[2.2.1]: https://github.com/shakacode/control-plane-flow/compare/v2.2.0...v2.2.1
|
244
272
|
[2.2.0]: https://github.com/shakacode/control-plane-flow/compare/v2.1.0...v2.2.0
|
245
273
|
[2.1.0]: https://github.com/shakacode/control-plane-flow/compare/v2.0.2...v2.1.0
|
data/CONTRIBUTING.md
CHANGED
@@ -64,7 +64,7 @@ CPLN_ORG=your-org-for-tests bundle exec rspec --tag slow
|
|
64
64
|
2. Use the `--trace` option to see full logging of HTTP requests. Warning, this will display keys to your logs or console.
|
65
65
|
1. Add a breakpoint (`debugger`) to any line of code you want to debug.
|
66
66
|
2. Modify the `lib/command/test.rb` file to trigger the code you want to test. To simulate a command, you can use
|
67
|
-
`
|
67
|
+
`run_cpflow_command` (e.g., `run_cpflow_command("deploy-image", "-a", "my-app-name")` would be the same as running
|
68
68
|
`cpflow deploy-image -a my-app-name`).
|
69
69
|
3. Run the `test` command in your test app with a `.controlplane` directory.
|
70
70
|
|
data/Gemfile
CHANGED
@@ -4,4 +4,14 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gemspec
|
6
6
|
|
7
|
+
gem "debug", "~> 1"
|
8
|
+
gem "overcommit", "~> 0.60.0"
|
7
9
|
gem "rake", "~> 13.0"
|
10
|
+
gem "rspec", "~> 3.12.0"
|
11
|
+
gem "rspec-retry", "~> 0.6.2"
|
12
|
+
gem "rubocop", "~> 1.64.1"
|
13
|
+
gem "rubocop-rake", "~> 0.6.0"
|
14
|
+
gem "rubocop-rspec", "~> 3.0.1"
|
15
|
+
gem "simplecov", "~> 0.22.0"
|
16
|
+
gem "timecop", "~> 0.9.6"
|
17
|
+
gem "webmock", "~> 3.18.1"
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cpflow (
|
5
|
-
debug (~> 1.7.1)
|
4
|
+
cpflow (4.0.0)
|
6
5
|
dotenv (~> 2.8.1)
|
7
6
|
jwt (~> 2.8.1)
|
8
7
|
psych (~> 5.1.0)
|
@@ -11,18 +10,18 @@ PATH
|
|
11
10
|
GEM
|
12
11
|
remote: https://rubygems.org/
|
13
12
|
specs:
|
14
|
-
addressable (2.8.
|
15
|
-
public_suffix (>= 2.0.2, <
|
13
|
+
addressable (2.8.7)
|
14
|
+
public_suffix (>= 2.0.2, < 7.0)
|
16
15
|
ast (2.4.2)
|
17
16
|
base64 (0.2.0)
|
18
|
-
bigdecimal (3.1.
|
17
|
+
bigdecimal (3.1.8)
|
19
18
|
childprocess (4.1.0)
|
20
19
|
crack (1.0.0)
|
21
20
|
bigdecimal
|
22
21
|
rexml
|
23
|
-
debug (1.
|
24
|
-
irb (
|
25
|
-
reline (>= 0.3.
|
22
|
+
debug (1.9.2)
|
23
|
+
irb (~> 1.10)
|
24
|
+
reline (>= 0.3.8)
|
26
25
|
diff-lcs (1.5.1)
|
27
26
|
docile (1.4.0)
|
28
27
|
dotenv (2.8.1)
|
@@ -35,26 +34,28 @@ GEM
|
|
35
34
|
json (2.7.2)
|
36
35
|
jwt (2.8.2)
|
37
36
|
base64
|
37
|
+
language_server-protocol (3.17.0.3)
|
38
38
|
overcommit (0.60.0)
|
39
39
|
childprocess (>= 0.6.3, < 5)
|
40
40
|
iniparse (~> 1.4)
|
41
41
|
rexml (~> 3.2)
|
42
|
-
parallel (1.
|
43
|
-
parser (3.3.0
|
42
|
+
parallel (1.25.1)
|
43
|
+
parser (3.3.3.0)
|
44
44
|
ast (~> 2.4.1)
|
45
45
|
racc
|
46
46
|
psych (5.1.2)
|
47
47
|
stringio
|
48
|
-
public_suffix (
|
49
|
-
racc (1.
|
48
|
+
public_suffix (6.0.0)
|
49
|
+
racc (1.8.0)
|
50
50
|
rainbow (3.1.1)
|
51
51
|
rake (13.2.1)
|
52
52
|
rdoc (6.7.0)
|
53
53
|
psych (>= 4.0.0)
|
54
|
-
regexp_parser (2.9.
|
54
|
+
regexp_parser (2.9.2)
|
55
55
|
reline (0.5.9)
|
56
56
|
io-console (~> 0.5)
|
57
|
-
rexml (3.
|
57
|
+
rexml (3.3.1)
|
58
|
+
strscan
|
58
59
|
rspec (3.12.0)
|
59
60
|
rspec-core (~> 3.12.0)
|
60
61
|
rspec-expectations (~> 3.12.0)
|
@@ -70,25 +71,23 @@ GEM
|
|
70
71
|
rspec-retry (0.6.2)
|
71
72
|
rspec-core (> 3.3)
|
72
73
|
rspec-support (3.12.2)
|
73
|
-
rubocop (1.
|
74
|
+
rubocop (1.64.1)
|
74
75
|
json (~> 2.3)
|
76
|
+
language_server-protocol (>= 3.17.0)
|
75
77
|
parallel (~> 1.10)
|
76
|
-
parser (>= 3.
|
78
|
+
parser (>= 3.3.0.2)
|
77
79
|
rainbow (>= 2.2.2, < 4.0)
|
78
80
|
regexp_parser (>= 1.8, < 3.0)
|
79
81
|
rexml (>= 3.2.5, < 4.0)
|
80
|
-
rubocop-ast (>= 1.
|
82
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
81
83
|
ruby-progressbar (~> 1.7)
|
82
84
|
unicode-display_width (>= 2.4.0, < 3.0)
|
83
|
-
rubocop-ast (1.31.
|
84
|
-
parser (>= 3.3.0
|
85
|
-
rubocop-capybara (2.20.0)
|
86
|
-
rubocop (~> 1.41)
|
85
|
+
rubocop-ast (1.31.3)
|
86
|
+
parser (>= 3.3.1.0)
|
87
87
|
rubocop-rake (0.6.0)
|
88
88
|
rubocop (~> 1.0)
|
89
|
-
rubocop-rspec (
|
90
|
-
rubocop (~> 1.
|
91
|
-
rubocop-capybara (~> 2.17)
|
89
|
+
rubocop-rspec (3.0.1)
|
90
|
+
rubocop (~> 1.61)
|
92
91
|
ruby-progressbar (1.13.0)
|
93
92
|
simplecov (0.22.0)
|
94
93
|
docile (~> 1.1)
|
@@ -97,8 +96,9 @@ GEM
|
|
97
96
|
simplecov-html (0.12.3)
|
98
97
|
simplecov_json_formatter (0.1.4)
|
99
98
|
stringio (3.1.1)
|
99
|
+
strscan (3.1.0)
|
100
100
|
thor (1.2.2)
|
101
|
-
timecop (0.9.
|
101
|
+
timecop (0.9.10)
|
102
102
|
unicode-display_width (2.5.0)
|
103
103
|
webmock (3.18.1)
|
104
104
|
addressable (>= 2.8.0)
|
@@ -111,13 +111,14 @@ PLATFORMS
|
|
111
111
|
|
112
112
|
DEPENDENCIES
|
113
113
|
cpflow!
|
114
|
+
debug (~> 1)
|
114
115
|
overcommit (~> 0.60.0)
|
115
116
|
rake (~> 13.0)
|
116
117
|
rspec (~> 3.12.0)
|
117
118
|
rspec-retry (~> 0.6.2)
|
118
|
-
rubocop (~> 1.
|
119
|
+
rubocop (~> 1.64.1)
|
119
120
|
rubocop-rake (~> 0.6.0)
|
120
|
-
rubocop-rspec (~>
|
121
|
+
rubocop-rspec (~> 3.0.1)
|
121
122
|
simplecov (~> 0.22.0)
|
122
123
|
timecop (~> 0.9.6)
|
123
124
|
webmock (~> 3.18.1)
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
[](https://badge.fury.io/rb/cpflow)
|
13
13
|
|
14
14
|
|
15
|
-
|
15
|
+
Enable the [Heroku Flow](https://www.heroku.com/flow) deployment model with [Control Plane](https://shakacode.controlplane.com) using the `cpflow` gem.
|
16
16
|
|
17
17
|
----
|
18
18
|
|
data/cpflow.gemspec
CHANGED
@@ -15,22 +15,11 @@ Gem::Specification.new do |spec|
|
|
15
15
|
|
16
16
|
spec.required_ruby_version = ">= 2.7.0"
|
17
17
|
|
18
|
-
spec.add_dependency "debug", "~> 1.7.1"
|
19
18
|
spec.add_dependency "dotenv", "~> 2.8.1"
|
20
19
|
spec.add_dependency "jwt", "~> 2.8.1"
|
21
20
|
spec.add_dependency "psych", "~> 5.1.0"
|
22
21
|
spec.add_dependency "thor", "~> 1.2.1"
|
23
22
|
|
24
|
-
spec.add_development_dependency "overcommit", "~> 0.60.0"
|
25
|
-
spec.add_development_dependency "rspec", "~> 3.12.0"
|
26
|
-
spec.add_development_dependency "rspec-retry", "~> 0.6.2"
|
27
|
-
spec.add_development_dependency "rubocop", "~> 1.45.0"
|
28
|
-
spec.add_development_dependency "rubocop-rake", "~> 0.6.0"
|
29
|
-
spec.add_development_dependency "rubocop-rspec", "~> 2.18.1"
|
30
|
-
spec.add_development_dependency "simplecov", "~> 0.22.0"
|
31
|
-
spec.add_development_dependency "timecop", "~> 0.9.6"
|
32
|
-
spec.add_development_dependency "webmock", "~> 3.18.1"
|
33
|
-
|
34
23
|
spec.files = `git ls-files -z`.split("\x0").reject do |file|
|
35
24
|
file.match(%r{^(coverage|pkg|spec|tmp)/})
|
36
25
|
end
|
@@ -43,7 +43,7 @@ module Command
|
|
43
43
|
VALIDATIONS = %w[config templates].freeze
|
44
44
|
|
45
45
|
def call # rubocop:disable Metrics/MethodLength
|
46
|
-
@template_parser = TemplateParser.new(
|
46
|
+
@template_parser = TemplateParser.new(self)
|
47
47
|
@names_to_filenames = config.args.to_h do |name|
|
48
48
|
[name, @template_parser.template_filename(name)]
|
49
49
|
end
|
data/lib/command/base.rb
CHANGED
@@ -405,7 +405,7 @@ module Command
|
|
405
405
|
type: :string,
|
406
406
|
required: required,
|
407
407
|
default: VALIDATIONS_WITHOUT_ADDITIONAL_OPTIONS.join(","),
|
408
|
-
valid_regex: /^(#{ALL_VALIDATIONS.join(
|
408
|
+
valid_regex: /^(#{ALL_VALIDATIONS.join('|')})(,(#{ALL_VALIDATIONS.join('|')}))*$/
|
409
409
|
}
|
410
410
|
}
|
411
411
|
end
|
@@ -527,7 +527,7 @@ module Command
|
|
527
527
|
progress.puts("Running #{title}...\n\n")
|
528
528
|
|
529
529
|
begin
|
530
|
-
|
530
|
+
run_cpflow_command("run", "-a", config.app, "--image", "latest", "--", command)
|
531
531
|
rescue SystemExit => e
|
532
532
|
progress.puts
|
533
533
|
|
@@ -536,5 +536,19 @@ module Command
|
|
536
536
|
progress.puts("Finished running #{title}.\n\n")
|
537
537
|
end
|
538
538
|
end
|
539
|
+
|
540
|
+
def run_cpflow_command(command, *args)
|
541
|
+
common_args = []
|
542
|
+
|
543
|
+
self.class.common_options.each do |option|
|
544
|
+
value = config.options[option[:name]]
|
545
|
+
next if value.nil?
|
546
|
+
|
547
|
+
name = "--#{option[:name].to_s.tr('_', '-')}"
|
548
|
+
common_args.push(name, value)
|
549
|
+
end
|
550
|
+
|
551
|
+
Cpflow::Cli.start([command, *common_args, *args])
|
552
|
+
end
|
539
553
|
end
|
540
554
|
end
|
data/lib/command/build_image.rb
CHANGED
@@ -38,7 +38,11 @@ module Command
|
|
38
38
|
docker_args: config.args,
|
39
39
|
build_args: build_args)
|
40
40
|
|
41
|
-
|
41
|
+
push_path = "/org/#{config.org}/image/#{image_name}"
|
42
|
+
|
43
|
+
progress.puts("\nPushing image to '#{push_path}'...\n\n")
|
44
|
+
cp.image_push(image_url)
|
45
|
+
progress.puts("\nPushed image to '#{push_path}'.\n\n")
|
42
46
|
|
43
47
|
step("Waiting for image to be available", retry_on_failure: true) do
|
44
48
|
images = cp.query_images["items"]
|
data/lib/command/deploy_image.rb
CHANGED
@@ -35,7 +35,7 @@ module Command
|
|
35
35
|
container_name = container["name"]
|
36
36
|
step("Deploying image '#{image}' for workload '#{container_name}'") do
|
37
37
|
cp.workload_set_image_ref(workload, container: container_name, image: image)
|
38
|
-
deployed_endpoints[container_name] = workload_data
|
38
|
+
deployed_endpoints[container_name] = endpoint_for_workload(workload_data)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -48,6 +48,15 @@ module Command
|
|
48
48
|
|
49
49
|
private
|
50
50
|
|
51
|
+
def endpoint_for_workload(workload_data)
|
52
|
+
endpoint = workload_data.dig("status", "endpoint")
|
53
|
+
Resolv.getaddress(endpoint.split("/").last)
|
54
|
+
endpoint
|
55
|
+
rescue Resolv::ResolvError
|
56
|
+
deployments = cp.fetch_workload_deployments(workload_data["name"])
|
57
|
+
deployments.dig("items", 0, "status", "endpoint")
|
58
|
+
end
|
59
|
+
|
51
60
|
def run_release_script
|
52
61
|
release_script = config[:release_script]
|
53
62
|
run_command_in_latest_image(release_script, title: "release script")
|
data/lib/command/doctor.rb
CHANGED
@@ -29,7 +29,7 @@ module Command
|
|
29
29
|
validations = config.options[:validations].split(",")
|
30
30
|
ensure_required_options!(validations)
|
31
31
|
|
32
|
-
doctor_service = DoctorService.new(
|
32
|
+
doctor_service = DoctorService.new(self)
|
33
33
|
doctor_service.run_validations(validations)
|
34
34
|
end
|
35
35
|
|
data/lib/command/generate.rb
CHANGED
data/lib/command/info.rb
CHANGED
@@ -75,7 +75,7 @@ module Command
|
|
75
75
|
if config.org
|
76
76
|
result.push(config.org)
|
77
77
|
else
|
78
|
-
config.apps.
|
78
|
+
config.apps.each_value do |app_options|
|
79
79
|
org = app_org(app_options)
|
80
80
|
result.push(org) if org && !result.include?(org)
|
81
81
|
end
|
@@ -173,7 +173,7 @@ module Command
|
|
173
173
|
puts "\nThere are no apps starting with some names. If you wish to create any, do so with " \
|
174
174
|
"(replace 'whatever' with whatever suffix you want):"
|
175
175
|
|
176
|
-
@missing_apps_starting_with.
|
176
|
+
@missing_apps_starting_with.each_key do |app|
|
177
177
|
puts " - `cpflow setup-app -a #{app}-whatever`"
|
178
178
|
end
|
179
179
|
end
|
data/lib/command/maintenance.rb
CHANGED
@@ -17,26 +17,14 @@ module Command
|
|
17
17
|
DESC
|
18
18
|
WITH_INFO_HEADER = false
|
19
19
|
|
20
|
-
def call
|
21
|
-
|
22
|
-
|
20
|
+
def call
|
21
|
+
puts maintenance_mode.enabled? ? "on" : "off"
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
cp.fetch_domain(config.domain)
|
26
|
-
else
|
27
|
-
cp.find_domain_for([one_off_workload, maintenance_workload])
|
28
|
-
end
|
29
|
-
unless domain_data
|
30
|
-
raise "Can't find domain. " \
|
31
|
-
"Maintenance mode is only supported for domains that use path based routing mode " \
|
32
|
-
"and have a route configured for the prefix '/' on either port 80 or 443."
|
33
|
-
end
|
24
|
+
private
|
34
25
|
|
35
|
-
|
36
|
-
|
37
|
-
else
|
38
|
-
puts "off"
|
39
|
-
end
|
26
|
+
def maintenance_mode
|
27
|
+
@maintenance_mode ||= MaintenanceMode.new(self)
|
40
28
|
end
|
41
29
|
end
|
42
30
|
end
|