cpflow 3.0.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem](https://badge.fury.io/rb/cpflow.svg)](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
|