cpl 1.1.2.rc.0 → 1.2.0

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: bd0eff627240313d5202ff74368af8fff67483bcf0769f52f9c923a0839bfd73
4
- data.tar.gz: a31c430587ecfce5cc1e7ede82ce31a0c91aec07de401fa849d18f75035dc4f1
3
+ metadata.gz: 711286ef49686f6c51df2a94c533b3df94f4d71d3fb6018b6ed61c210593dd47
4
+ data.tar.gz: '085357faac6b5b27e493049b34c27debab21fa19950af21548fe11889140b557'
5
5
  SHA512:
6
- metadata.gz: 770a3ab110f7b5b7049103c50350044805ed74c1ffedf61249d9696c94877fba43cd2bef031f6d9fd2dd70f2e29e2f970cd2d32cecadd6d7a2eaa3048bd493eb
7
- data.tar.gz: ec006511deb5b41610f9d4780e02c1265eddfde523f95e3c7c373ef787039c3f5cb9a99c0132da020cd649029ea6e355b37f51fb3d4035381b10724c2ac4a4d4
6
+ metadata.gz: ac229234f4919d8e1b3485095476ef0fddac04573d8dd03aba6a3737fd5e90b319538e04c51d98e5f33f244fe304c519d949a624a377bbc9ee9067754a0c71dd
7
+ data.tar.gz: 0ba5203d4f8539dde89a2eb5a52dc92c2098d11bb1914002cd57628081465d08e9842f47546da563bc18edda17fbf12101bfefca8fdcee4088825c0e56ee0fa0
@@ -36,5 +36,5 @@ jobs:
36
36
  uses: actions/upload-artifact@master
37
37
  if: always()
38
38
  with:
39
- name: coverage-report
39
+ name: coverage-report-${{ github.run_id }}-${{ matrix.os }}-${{ matrix.ruby }}
40
40
  path: coverage
data/CHANGELOG.md CHANGED
@@ -14,11 +14,44 @@ Changes since the last non-beta release.
14
14
 
15
15
  _Please add entries here for your pull requests that are not yet released._
16
16
 
17
+ ### Fixed
18
+
19
+ - Fixed issue where `info` command does not respect `CPLN_ORG` env var. [PR 88](https://github.com/shakacode/heroku-to-control-plane/pull/88) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
20
+ - Fixed issues with running `cpl --version` and `cpl --help` where no configuration file exists. [PR 100](https://github.com/shakacode/heroku-to-control-plane/pull/100) by [Mostafa Ahangarha](https://github.com/ahangarha).
21
+ - Fixed issue where `delete` command fails to delete apps with volumesets. [PR 123](https://github.com/shakacode/heroku-to-control-plane/pull/123) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
22
+
23
+ ### Added
24
+
25
+ - Added `--org` option to all commands. [PR 88](https://github.com/shakacode/heroku-to-control-plane/pull/88) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
26
+ - Added option to set the app with a `CPLN_APP` env var. [PR 88](https://github.com/shakacode/heroku-to-control-plane/pull/88) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
27
+ - Show `org` and `app` on every command excluding `info`, `version`, `maintenance`, `env`, `ps`, and `latest_image`. [PR 94](https://github.com/shakacode/heroku-to-control-plane/pull/94) by [Mostafa Ahangarha](https://github.com/ahangarha).
28
+ - 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/heroku-to-control-plane/pull/109) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
29
+ - Added `CPLN_LOCATION` env variable and `--location` option for `apply-template`, `ps`, `run`, `run:detached`. [PR 105](https://github.com/shakacode/heroku-to-control-plane/pull/105) by [Mostafa Ahangarha](https://github.com/ahangarha).
30
+ - Added `generate` command for creating basic Control Plane configuration directory. [PR 116](https://github.com/shakacode/heroku-to-control-plane/pull/116) by [Mostafa Ahangarhga](https://github.com/ahangarha).
31
+ - Added `--trace` option to all commands for more detailed logs. [PR 124](https://github.com/shakacode/heroku-to-control-plane/pull/124) by [justin808](https://github.com/justin808)
32
+ - Added better error message to check the org name in case of a 403 error. [PR 124](https://github.com/justin808) by [justin808](https://github.com/justin808)
33
+
34
+ ### Changed
35
+
36
+ - `--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/heroku-to-control-plane/pull/88) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
37
+ - Renamed `setup` config into `setup_app_templates`. [PR 112](https://github.com/shakacode/heroku-to-control-plane/pull/112) by [Mostafa Ahangarha](https://github.com/ahangarha).
38
+
17
39
  ## [1.1.2] - 2023-10-17
40
+
18
41
  ### Fixed
19
42
 
20
43
  - Fixed failed build on MacOS by adding platform flag and fixed multiple files in yaml document for template. [PR 81](https://github.com/shakacode/heroku-to-control-plane/pull/81) by [justin808](https://github.com/justin808).
21
44
 
45
+ ### Added
46
+
47
+ - Added `open-console` command to open the app console on Control Plane. [PR 83](https://github.com/shakacode/heroku-to-control-plane/pull/83) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
48
+ - Added option to set the org with a `CPLN_ORG`/`CPLN_ORG_UPSTREAM` env var. [PR 83](https://github.com/shakacode/heroku-to-control-plane/pull/83) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
49
+ - Added `--verbose` option to all commands for more detailed logs. [PR 83](https://github.com/shakacode/heroku-to-control-plane/pull/83) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
50
+
51
+ ### Changed
52
+
53
+ - Calling `cpl` with no command now shows the help menu. [PR 83](https://github.com/shakacode/heroku-to-control-plane/pull/83) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
54
+
22
55
  ## [1.1.1] - 2023-09-23
23
56
 
24
57
  ### Fixed
@@ -84,7 +117,9 @@ _Please add entries here for your pull requests that are not yet released._
84
117
 
85
118
  - Initial release
86
119
 
87
- [Unreleased]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.1.0...HEAD
120
+ [Unreleased]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.1.2...HEAD
121
+ [1.1.2]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.1.1...v1.1.2
122
+ [1.1.1]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.1.0...v1.1.1
88
123
  [1.1.0]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.0.4...v1.1.0
89
124
  [1.0.4]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.0.3...v1.0.4
90
125
  [1.0.3]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.0.2...v1.0.3
data/CONTRIBUTING.md CHANGED
@@ -12,12 +12,6 @@ git clone https://github.com/shakacode/heroku-to-control-plane
12
12
  alias cpl="~/projects/heroku-to-control-plane/bin/cpl"
13
13
  ```
14
14
 
15
- Or set the path of the Ruby gem in your Gemfile.
16
-
17
- ```ruby
18
- gem 'cpl', path: '~/projects/heroku-to-control-plane'
19
- ```
20
-
21
15
  ## Linting/Testing
22
16
 
23
17
  Before committing or pushing code, be sure to:
@@ -36,6 +30,8 @@ overcommit --install
36
30
 
37
31
  ## Debugging
38
32
 
33
+ 1. Use the `--verbose` option to see more detailed logs.
34
+ 2. Use the `--trace` option to see full logging of HTTP requests. Warning, this will display keys to your logs or console.
39
35
  1. Add a breakpoint (`debugger`) to any line of code you want to debug.
40
36
  2. Modify the `lib/command/test.rb` file to trigger the code you want to test. To simulate a command, you can use
41
37
  `Cpl::Cli.start` (e.g., `Cpl::Cli.start(["deploy-image", "-a", "my-app-name"])` would be the same as running
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cpl (1.1.2.rc.0)
4
+ cpl (1.2.0)
5
5
  debug (~> 1.7.1)
6
6
  dotenv (~> 2.8.1)
7
7
  psych (~> 5.1.0)
@@ -24,8 +24,8 @@ GEM
24
24
  dotenv (2.8.1)
25
25
  hashdiff (1.0.1)
26
26
  iniparse (1.5.0)
27
- io-console (0.6.0)
28
- irb (1.8.3)
27
+ io-console (0.7.1)
28
+ irb (1.11.0)
29
29
  rdoc
30
30
  reline (>= 0.3.8)
31
31
  json (2.6.3)
@@ -36,15 +36,15 @@ GEM
36
36
  parallel (1.22.1)
37
37
  parser (3.2.0.0)
38
38
  ast (~> 2.4.1)
39
- psych (5.1.1.1)
39
+ psych (5.1.2)
40
40
  stringio
41
41
  public_suffix (5.0.1)
42
42
  rainbow (3.1.1)
43
43
  rake (13.0.6)
44
- rdoc (6.5.0)
44
+ rdoc (6.6.2)
45
45
  psych (>= 4.0.0)
46
46
  regexp_parser (2.6.2)
47
- reline (0.3.9)
47
+ reline (0.4.1)
48
48
  io-console (~> 0.5)
49
49
  rexml (3.2.5)
50
50
  rspec (3.12.0)
@@ -86,7 +86,7 @@ GEM
86
86
  simplecov_json_formatter (~> 0.1)
87
87
  simplecov-html (0.12.3)
88
88
  simplecov_json_formatter (0.1.4)
89
- stringio (3.0.8)
89
+ stringio (3.1.0)
90
90
  thor (1.2.2)
91
91
  timecop (0.9.6)
92
92
  unicode-display_width (2.4.2)
data/README.md CHANGED
@@ -6,13 +6,19 @@
6
6
  <meta name="keywords" content="Control Plane, Heroku, Kubernetes, K8, Infrastructure">
7
7
  <meta name="google-site-verification" content="dIV4nMplcYl6YOKOaZMqgvdKXhLJ4cdYY6pS6e_YrPU" />
8
8
 
9
- _A gem that provides **Heroku Flow** functionality on Control Plane, including docs for migrating from [Heroku](https://heroku.com) to [Control Plane](https://controlplane.com)_
9
+ _A gem that provides **Heroku Flow** functionality on Control Plane, including docs for migrating from [Heroku](https://heroku.com) to [Control Plane](https://shakacode.controlplane.com/)._
10
10
 
11
11
  [![RSpec](https://github.com/shakacode/heroku-to-control-plane/actions/workflows/rspec.yml/badge.svg)](https://github.com/shakacode/heroku-to-control-plane/actions/workflows/rspec.yml)
12
12
  [![Rubocop](https://github.com/shakacode/heroku-to-control-plane/actions/workflows/rubocop.yml/badge.svg)](https://github.com/shakacode/heroku-to-control-plane/actions/workflows/rubocop.yml)
13
13
 
14
14
  [![Gem](https://badge.fury.io/rb/cpl.svg)](https://badge.fury.io/rb/cpl)
15
15
 
16
+ ---
17
+
18
+ _If you need a free demo account for Control Plane (no CC required), you can contact [controlplane@shakacode.com](mailto:controlplane@shakacode.com)._
19
+
20
+ ---
21
+
16
22
  This playbook shows how to move "Heroku apps" to "Control Plane workloads" via an open-source `cpl` CLI on top of
17
23
  Control Plane's `cpln` CLI.
18
24
 
@@ -29,17 +35,18 @@ a **helper CLI** based on templates to save lots of day-to-day typing (and human
29
35
  2. [Concept Mapping](#concept-mapping)
30
36
  3. [Installation](#installation)
31
37
  4. [Steps to Migrate](#steps-to-migrate)
32
- 5. [Config](#config)
33
- 6. [Environment](#environment)
34
- 7. [Database](#database)
35
- 8. [In-memory Databases](#in-memory-databases)
36
- 9. [Scheduled Jobs](#scheduled-jobs)
37
- 10. [CLI Commands Reference](#cli-commands-reference)
38
- 11. [Mapping of Heroku Commands to `cpl` and `cpln`](#mapping-of-heroku-commands-to-cpl-and-cpln)
39
- 12. [Examples](#examples)
40
- 13. [Migrating Postgres Database from Heroku Infrastructure](/docs/postgres.md)
41
- 14. [Migrating Redis Database from Heroku Infrastructure](/docs/redis.md)
42
- 15. [Tips](/docs/tips.md)
38
+ 5. [Configuration Files](#configuration-files)
39
+ 6. [Workflow](#workflow)
40
+ 7. [Environment](#environment)
41
+ 8. [Database](#database)
42
+ 9. [In-memory Databases](#in-memory-databases)
43
+ 10. [Scheduled Jobs](#scheduled-jobs)
44
+ 11. [CLI Commands Reference](#cli-commands-reference)
45
+ 12. [Mapping of Heroku Commands to `cpl` and `cpln`](#mapping-of-heroku-commands-to-cpl-and-cpln)
46
+ 13. [Examples](#examples)
47
+ 14. [Migrating Postgres Database from Heroku Infrastructure](/docs/postgres.md)
48
+ 15. [Migrating Redis Database from Heroku Infrastructure](/docs/redis.md)
49
+ 16. [Tips](/docs/tips.md)
43
50
 
44
51
  ## Key Features
45
52
 
@@ -89,23 +96,30 @@ For the typical Rails app, this means:
89
96
 
90
97
  ## Installation
91
98
 
92
- 1. Ensure your [Control Plane](https://controlplane.com) account is set up. Set up an `organization` <your-org> for testing in that account and modify value for `aliases.common.cpln_org` in `.controlplane/controlplane.yml`. If you need an organization, please [contact Shakcode](mailto:controlplane@shkacode.com).
93
- 1. Install [Node.js](https://nodejs.org/en) (required for Control Plane CLI).
99
+ 1. Ensure your [Control Plane](https://shakacode.controlplane.com/) account is set up. Set up an `organization` `<your-org>` for testing in that account and modify the value for `aliases.common.cpln_org` in `.controlplane/controlplane.yml`, or you can also set it with the `CPLN_ORG` environment variable. If you need an organization, please [contact Shakacode](mailto:controlplane@shakacode.com).
100
+
101
+ 2. Install [Node.js](https://nodejs.org/en) (required for Control Plane CLI).
102
+
103
+ 3. Install [Ruby](https://www.ruby-lang.org/en/) (required for these helpers).
94
104
 
95
- 1. Install [Ruby](https://www.ruby-lang.org/en/) (required for these helpers).
105
+ 4. Install Control Plane CLI, and configure access ([docs here](https://docs.controlplane.com/quickstart/quick-start-3-cli#getting-started-with-the-cli)).
96
106
 
97
- 1. Install Control Plane CLI (and configure access) [docs here](https://docs.controlplane.com/quickstart/quick-start-3-cli#getting-started-with-the-cli), `npm install -g @controlplane/cli`. You can update the `cpln` command line with `npm update -g @controlplane/cli`. Then run `cpln login` to ensure access.
98
107
  ```sh
108
+ # Install CLI
99
109
  npm install -g @controlplane/cli
110
+
111
+ # Configure access
100
112
  cpln login
113
+
114
+ # Update CLI
115
+ npm update -g @controlplane/cli
101
116
  ```
102
117
 
103
- 1. Run `cpln image docker-login --org <your-org>` to ensure that you have access to the Control Plane Docker registry.
118
+ 5. Run `cpln image docker-login --org <your-org>` to ensure that you have access to the Control Plane Docker registry.
104
119
 
105
- 1. Install Heroku to Control Plane `cpl` CLI, either as a [Ruby gem](https://rubygems.org/gems/cpl) or a local clone.
106
- For information on the latter, see [CONTRIBUTING.md](CONTRIBUTING.md). You may also install `cpl` in your project's Gemfile.
120
+ 6. Install Heroku to Control Plane `cpl` CLI as a [Ruby gem](https://rubygems.org/gems/cpl): `gem install cpl`. If you want to hack on the source code, see [CONTRIBUTING.md](CONTRIBUTING.md).
107
121
 
108
- 1. This project has a `Dockerfile` for Control Plane in this directory. You can use it as an example for your project. Ensure that you have Docker running.
122
+ 7. You can use [this Dockerfile](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/Dockerfile) as an example for your project. Ensure that you have Docker running.
109
123
 
110
124
  **Note:** Do not confuse the `cpl` CLI with the `cpln` CLI. The `cpl` CLI is the Heroku to Control Plane playbook CLI.
111
125
  The `cpln` CLI is the Control Plane CLI.
@@ -116,7 +130,7 @@ Click [here](/docs/migrating.md) to see the steps to migrate.
116
130
 
117
131
  ## Configuration Files
118
132
 
119
- The `cpl` gem is based on several configuration files within a `/.controlplane` top-level directory in your Rails project.
133
+ The `cpl` gem is based on several configuration files within a `/.controlplane` top-level directory in your project.
120
134
 
121
135
  ```
122
136
  .controlplane/
@@ -129,32 +143,46 @@ The `cpl` gem is based on several configuration files within a `/.controlplane`
129
143
  ├─ entrypoint.sh
130
144
  ```
131
145
 
132
- 1. `controlplane.yml` describes the overall application. Be sure to have <your-org> as the value for `aliases.common.cpln_org`.
146
+ 1. `controlplane.yml` describes the overall application. Be sure to have `<your-org>` as the value for `aliases.common.cpln_org`, or set it with the `CPLN_ORG` environment variable.
133
147
  2. `Dockerfile` builds the production application. `entrypoint.sh` is an _example_ entrypoint script for the production application, referenced in your Dockerfile.
134
148
  3. `templates` directory contains the templates for the various workloads, such as `rails.yml` and `postgres.yml`.
135
- 4. `templates/gvc.yml` defines your project's GVC (like a Heroku app). Most importantly, it contains ENV values for app.
136
- 5. `templates/rails.yml` defines your Rails workload. It may inherit ENV values from the parent GVC, which is populated from the `templates/gvc.yml`. This file also configures scaling, sizing, firewalls, and other workload specific values.
137
- 6. For other workloads (like lines in a Heroku Procfile), you create additional template files. For example, you can base a `templates/sidekiq.yml` on the `templates/rails.yml` file.
138
- 7. You can have other files in the `templates` directory, such as `redis.yml` and `postgres.yml` which could setup Redis and Postgres for a testing application.
149
+ 4. `templates/gvc.yml` defines your project's GVC (like a Heroku app). More importantly, it contains ENV values for the app.
150
+ 5. `templates/rails.yml` defines your Rails workload. It may inherit ENV values from the parent GVC, which is populated from the `templates/gvc.yml`. This file also configures scaling, sizing, firewalls, and other workload-specific values.
151
+ 6. For other workloads (like lines in a Heroku `Procfile`), you create additional template files. For example, you can base a `templates/sidekiq.yml` on the `templates/rails.yml` file.
152
+ 7. You can have other files in the `templates` directory, such as `redis.yml` and `postgres.yml`, which could setup Redis and Postgres for a testing application.
139
153
 
140
154
  Here's a complete example of all supported config keys explained for the `controlplane.yml` file:
141
-
155
+
142
156
  ### `controlplane.yml`
157
+
143
158
  ```yaml
144
159
  # Keys beginning with "cpln_" correspond to your settings in Control Plane.
145
160
 
161
+ # Global settings that apply to `cpl` usage.
162
+ # You can opt out of allowing the use of CPLN_ORG and CPLN_APP env vars
163
+ # to avoid any accidents with the wrong org / app.
164
+ allow_org_override_by_env: true
165
+ allow_app_override_by_env: true
166
+
146
167
  aliases:
147
168
  common: &common
148
- # Organization name for staging (customize to your needs).
149
- # Production apps will use a different organization, specified below, for security.
169
+ # Organization for staging and QA apps is typically set as an alias.
170
+ # Production apps will use a different organization, specified in `apps`, for security.
171
+ # Change this value to your organization name
172
+ # or set the CPLN_ORG env var and it will override this for all `cpl` commands
173
+ # (provided that `allow_org_override_by_env` is set to `true`).
150
174
  cpln_org: my-org-staging
151
175
 
152
- # Example apps use only one location. Control Plane offers the ability to use multiple locations.
176
+ # Control Plane offers the ability to use multiple locations.
177
+ # default_location is used for commands that require a location
178
+ # including `ps`, `run`, `run:detached`, `apply-template`.
179
+ # This can be overridden with option --location=<location> and
180
+ # CPLN_LOCATION environment variable.
153
181
  default_location: aws-us-east-2
154
182
 
155
183
  # Allows running the command `cpl setup-app`
156
184
  # instead of `cpl apply-template gvc redis postgres memcached rails sidekiq`.
157
- setup:
185
+ setup_app_templates:
158
186
  - gvc
159
187
  - redis
160
188
  - postgres
@@ -214,6 +242,11 @@ apps:
214
242
  my-app-production:
215
243
  <<: *common
216
244
 
245
+ # You can also opt out of allowing the use of CPLN_ORG and CPLN_APP env vars per app.
246
+ # It's recommended to leave this off for production, to avoid any accidents.
247
+ allow_org_override_by_env: false
248
+ allow_app_override_by_env: false
249
+
217
250
  # Use a different organization for production.
218
251
  cpln_org: my-org-production
219
252
 
@@ -234,58 +267,64 @@ apps:
234
267
 
235
268
  ## Workflow
236
269
 
237
- For a live example, see the [react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/readme.md).
270
+ For a live example, see the [react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/readme.md) repository.
271
+
238
272
  This example should closely match the below example.
239
273
 
240
274
  Suppose your app is called `tutorial-app`. You can run the following commands.
241
275
 
242
276
  ### Setup Commands
277
+
243
278
  ```sh
244
279
  # Provision all infrastructure on Control Plane.
245
- # app tutorial-app will be created per definition in .controlplane/controlplane.yml
246
- cpl apply-template gvc postgres redis rails -a tutorial-app
280
+ # `tutorial-app` will be created per definition in .controlplane/controlplane.yml.
281
+ cpl apply-template gvc postgres redis rails daily-task -a tutorial-app
247
282
 
248
- # Build and push docker image to Control Plane repository
249
- # Note, may take many minutes. Be patient. Check for error messages, such as forgetting to run `cpln image docker-login --org <your-org>`
283
+ # Build and push the Docker image to the Control Plane repository.
284
+ # Note, it may take many minutes. Be patient.
285
+ # Check for error messages, such as forgetting to run `cpln image docker-login --org <your-org>`.
250
286
  cpl build-image -a tutorial-app
251
287
 
252
- # Promote image to app after running `cpl build-image command`
253
- # Note, the UX of images may not show the image for up to 5 minutes. However, it's ready.
288
+ # Promote the image to the app after running the `cpl build-image` command.
289
+ # Note, the UX of the images may not show the image for up to 5 minutes. However, it's ready.
254
290
  cpl deploy-image -a tutorial-app
255
291
 
256
- # See how app is starting up
292
+ # See how the app is starting up.
257
293
  cpl logs -a tutorial-app
258
294
 
259
- # Open app in browser (once it has started up)
295
+ # Open the app in browser (once it has started up).
260
296
  cpl open -a tutorial-app
261
297
  ```
262
298
 
263
- ### Promoting code updates
299
+ ### Promoting Code Updates
264
300
 
265
301
  After committing code, you will update your deployment of `tutorial-app` with the following commands:
266
302
 
267
303
  ```sh
268
- # Build and push new image with sequential image tagging, e.g. 'tutorial-app:1', then 'tutorial-app:2', etc.
304
+ # Build and push a new image with sequential image tagging, e.g. 'tutorial-app:1', then 'tutorial-app:2', etc.
269
305
  cpl build-image -a tutorial-app
270
306
 
271
- # Run database migrations (or other release tasks) with latest image,
272
- # while app is still running on previous image.
307
+ # Run database migrations (or other release tasks) with the latest image,
308
+ # while the app is still running on the previous image.
273
309
  # This is analogous to the release phase.
274
- cpl runner rails db:migrate -a tutorial-app --image latest
310
+ cpl run:detached rails db:migrate -a tutorial-app --image latest
275
311
 
276
- # Pomote latest image to app
312
+ # Pomote the latest image to the app.
277
313
  cpl deploy-image -a tutorial-app
278
314
  ```
279
315
 
280
316
  If you needed to push a new image with a specific commit SHA, you can run the following command:
281
317
 
282
318
  ```sh
283
- # Build and push with sequential image tagging and commit SHA, e.g. 'tutorial-app:123_ABCD'
319
+ # Build and push with sequential image tagging and commit SHA, e.g. 'tutorial-app:123_ABCD', etc.
284
320
  cpl build-image -a tutorial-app --commit ABCD
285
321
  ```
286
322
 
287
323
  ### Real World
288
- Most companies will configure their CI system to handle the above steps. Please [contact Shakcode](mailto:controlplane@shkacode.com) for examples of how to do this, jump on [**React+Rails Slack channel**] (https://reactrails.slack.com/join/shared_invite/enQtNjY3NTczMjczNzYxLTlmYjdiZmY3MTVlMzU2YWE0OWM0MzNiZDI0MzdkZGFiZTFkYTFkOGVjODBmOWEyYWQ3MzA2NGE1YWJjNmVlMGE).
324
+
325
+ Most companies will configure their CI system to handle the above steps. Please [contact Shakacode](mailto:controlplane@shakacode.com) for examples of how to do this.
326
+
327
+ You can also join our [**Slack channel**](https://reactrails.slack.com/join/shared_invite/enQtNjY3NTczMjczNzYxLTlmYjdiZmY3MTVlMzU2YWE0OWM0MzNiZDI0MzdkZGFiZTFkYTFkOGVjODBmOWEyYWQ3MzA2NGE1YWJjNmVlMGE) for ShakaCode open source projects.
289
328
 
290
329
  ## Environment
291
330
 
@@ -307,25 +346,27 @@ It is also possible to set up a Secret store (of type `Dictionary`), which we ca
307
346
  Policy to access the secret.
308
347
 
309
348
  In `templates/gvc.yml`:
349
+
310
350
  ```yaml
311
351
  spec:
312
352
  env:
313
353
  - name: MY_GLOBAL_VAR
314
- value: 'value'
354
+ value: "value"
315
355
  - name: MY_SECRET_GLOBAL_VAR
316
- value: 'cpln://secret/MY_SECRET_STORE_NAME/MY_SECRET_GLOBAL_VAR'
356
+ value: "cpln://secret/MY_SECRET_STORE_NAME/MY_SECRET_GLOBAL_VAR"
317
357
  ```
318
358
 
319
359
  In `templates/rails.yml`:
360
+
320
361
  ```yaml
321
362
  spec:
322
363
  containers:
323
364
  - name: rails
324
365
  env:
325
366
  - name: MY_LOCAL_VAR
326
- value: 'value'
367
+ value: "value"
327
368
  - name: MY_SECRET_LOCAL_VAR
328
- value: 'cpln://secret/MY_SECRET_STORE_NAME/MY_SECRET_LOCAL_VAR'
369
+ value: "cpln://secret/MY_SECRET_STORE_NAME/MY_SECRET_LOCAL_VAR"
329
370
  inheritEnv: true # To enable global env inheritance.
330
371
  ```
331
372
 
@@ -387,7 +428,7 @@ spec:
387
428
  type: cron
388
429
  job:
389
430
  # Run daily job at 2am.
390
- schedule: 0 2 * * *
431
+ schedule: "0 2 * * *"
391
432
  # "Never" or "OnFailure"
392
433
  restartPolicy: Never
393
434
  containers:
data/docs/commands.md CHANGED
@@ -100,7 +100,7 @@ cpl copy-image-from-upstream -a $APP_NAME --upstream-token $UPSTREAM_TOKEN --ima
100
100
 
101
101
  ### `delete`
102
102
 
103
- - Deletes the whole app (GVC with all workloads and all images)
103
+ - Deletes the whole app (GVC with all workloads, all volumesets and all images)
104
104
  - Will ask for explicit user confirmation
105
105
 
106
106
  ```sh
@@ -131,6 +131,15 @@ cpl env -a $APP_NAME
131
131
  if [ cpl exists -a $APP_NAME ]; ...
132
132
  ```
133
133
 
134
+ ### `generate`
135
+
136
+ Creates base Control Plane config and template files
137
+
138
+ ```sh
139
+ # Creates .controlplane directory with Control Plane config and other templates
140
+ cpl generate
141
+ ```
142
+
134
143
  ### `info`
135
144
 
136
145
  - Displays the diff between defined/available apps/workloads (apps equal GVCs)
@@ -140,7 +149,7 @@ if [ cpl exists -a $APP_NAME ]; ...
140
149
  - The diff is based on what's defined in the `.controlplane/controlplane.yml` file
141
150
 
142
151
  ```sh
143
- # Shows diff for all apps in all orgs.
152
+ # Shows diff for all apps in all orgs (based on `.controlplane/controlplane.yml`).
144
153
  cpl info
145
154
 
146
155
  # Shows diff for all apps in a specific org.
@@ -227,6 +236,15 @@ cpl open -a $APP_NAME
227
236
  cpl open -a $APP_NAME -w $WORKLOAD_NAME
228
237
  ```
229
238
 
239
+ ### `open-console`
240
+
241
+ - Opens the app console on Control Plane in the default browser
242
+ - Can also go directly to a workload page if `--workload` is provided
243
+
244
+ ```sh
245
+ cpl open-console -a $APP_NAME
246
+ ```
247
+
230
248
  ### `promote-app-from-upstream`
231
249
 
232
250
  - Copies the latest image from upstream, runs a release script (optional), and deploys the image
@@ -303,7 +321,6 @@ cpl ps:swait -a $APP_NAME -w $WORKLOAD_NAME
303
321
 
304
322
  - Runs one-off **_interactive_** replicas (analog of `heroku run`)
305
323
  - Uses `Standard` workload type and `cpln exec` as the execution method, with CLI streaming
306
- - May not work correctly with tasks that last over 5 minutes (there's a Control Plane scaling bug at the moment)
307
324
  - If `fix_terminal_size` is `true` in the `.controlplane/controlplane.yml` file, the remote terminal size will be fixed to match the local terminal size (may also be overriden through `--terminal-size`)
308
325
 
309
326
  > **IMPORTANT:** Useful for development where it's needed for interaction, and where network connection drops and
@@ -382,8 +399,8 @@ cpl run:detached rails db:migrate:status -a $APP_NAME --use-local-token
382
399
  ### `setup-app`
383
400
 
384
401
  - Creates an app and all its workloads
385
- - Specify the templates for the app and workloads through `setup` in the `.controlplane/controlplane.yml` file
386
- - This should should only be used for temporary apps like review apps, never for persistent apps like production (to update workloads for those, use 'cpl apply-template' instead)
402
+ - Specify the templates for the app and workloads through `setup_app_templates` in the `.controlplane/controlplane.yml` file
403
+ - This should only be used for temporary apps like review apps, never for persistent apps like production (to update workloads for those, use 'cpl apply-template' instead)
387
404
 
388
405
  ```sh
389
406
  cpl setup-app -a $APP_NAME
data/docs/migrating.md CHANGED
@@ -29,13 +29,13 @@ Edit the `.controlplane/controlplane.yml` file as needed. Note that the `my-app-
29
29
  is defined in this file. See
30
30
  [this example](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/controlplane.yml).
31
31
 
32
- Before the initial setup, add the templates for the app to the `.controlplane/controlplane.yml` file, using the `setup`
32
+ Before the initial setup, add the templates for the app to the `.controlplane/controlplane.yml` file, using the `setup_app_templates`
33
33
  key, e.g.:
34
34
 
35
35
  ```yaml
36
36
  my-app-staging:
37
37
  <<: *common
38
- setup:
38
+ setup_app_templates:
39
39
  - gvc
40
40
  - redis
41
41
  - memcached
@@ -191,7 +191,7 @@ configure an entry for, e.g., `my-app-review`, and then create review apps start
191
191
  my-app-review:
192
192
  <<: *common
193
193
  match_if_app_name_starts_with: true
194
- setup:
194
+ setup_app_templates:
195
195
  - gvc
196
196
  - redis
197
197
  - memcached
@@ -1,15 +1,38 @@
1
1
  # Keys beginning with "cpln_" correspond to your settings in Control Plane.
2
2
 
3
+ # Global settings that apply to `cpl` usage.
4
+ # You can opt out of allowing the use of CPLN_ORG and CPLN_APP env vars
5
+ # to avoid any accidents with the wrong org / app.
6
+ allow_org_override_by_env: true
7
+ allow_app_override_by_env: true
8
+
3
9
  aliases:
4
10
  common: &common
5
- # Organization name for staging (customize to your needs).
6
- # Production apps will use a different organization, specified below, for security.
11
+ # Organization for staging and QA apps is typically set as an alias.
12
+ # Production apps will use a different organization, specified in `apps`, for security.
13
+ # Change this value to your organization name
14
+ # or set the CPLN_ORG env var and it will override this for all `cpl` commands
15
+ # (provided that `allow_org_override_by_env` is set to `true`).
7
16
  cpln_org: my-org-staging
8
17
 
9
- # Example apps use only one location. Control Plane offers the ability to use multiple locations.
18
+ # Control Plane offers the ability to use multiple locations.
19
+ # default_location is used for commands that require a location
20
+ # including `ps`, `run`, `run:detached`, `apply-template`.
21
+ # This can be overridden with option --location=<location> and
22
+ # CPLN_LOCATION environment variable.
10
23
  # TODO: Allow specification of multiple locations.
11
24
  default_location: aws-us-east-2
12
25
 
26
+ # Allows running the command `cpl setup-app`
27
+ # instead of `cpl apply-template gvc redis postgres memcached rails sidekiq`.
28
+ setup:
29
+ - gvc
30
+ - redis
31
+ - postgres
32
+ - memcached
33
+ - rails
34
+ - sidekiq
35
+
13
36
  # Configure the workload name used as a template for one-off scripts, like a Heroku one-off dyno.
14
37
  one_off_workload: rails
15
38
 
@@ -24,26 +47,62 @@ aliases:
24
47
  - postgres
25
48
  - memcached
26
49
 
27
- # Configure the workload name used when maintenance mode is on (defaults to "maintenance")
50
+ # Configure the workload name used when maintenance mode is on (defaults to "maintenance").
28
51
  maintenance_workload: maintenance
29
52
 
53
+ # Fixes the remote terminal size to match the local terminal size
54
+ # when running the commands `cpl run` or `cpl run:detached`.
55
+ fix_terminal_size: true
56
+
57
+ # Apps with a deployed image created before this amount of days will be listed for deletion
58
+ # when running the command `cpl cleanup-stale-apps`.
59
+ stale_app_image_deployed_days: 5
60
+
61
+ # Images that exceed this quantity will be listed for deletion
62
+ # when running the command `cpl cleanup-images`.
63
+ image_retention_max_qty: 20
64
+
65
+ # Images created before this amount of days will be listed for deletion
66
+ # when running the command `cpl cleanup-images` (`image_retention_max_qty` takes precedence).
67
+ image_retention_days: 5
68
+
69
+ # Run workloads created before this amount of days will be listed for deletion
70
+ # when running the command `cpl run:cleanup`.
71
+ stale_run_workload_created_days: 2
72
+
30
73
  apps:
31
74
  my-app-staging:
32
75
  # Use the values from the common section above.
33
76
  <<: *common
77
+
34
78
  my-app-review:
35
79
  <<: *common
80
+
36
81
  # If `match_if_app_name_starts_with` is `true`, then use this config for app names starting with this name,
37
82
  # e.g., "my-app-review-pr123", "my-app-review-anything-goes", etc.
38
83
  match_if_app_name_starts_with: true
84
+
39
85
  my-app-production:
40
86
  <<: *common
87
+
88
+ # You can also opt out of allowing the use of CPLN_ORG and CPLN_APP env vars per app.
89
+ # It's recommended to leave this off for production, to avoid any accidents.
90
+ allow_org_override_by_env: false
91
+ allow_app_override_by_env: false
92
+
41
93
  # Use a different organization for production.
42
94
  cpln_org: my-org-production
95
+
43
96
  # Allows running the command `cpl promote-app-from-upstream -a my-app-production`
44
97
  # to promote the staging app to production.
45
98
  upstream: my-app-staging
99
+
100
+ # Used by the command `cpl promote-app-from-upstream` to run a release script before deploying.
101
+ # This is relative to the `.controlplane/` directory.
102
+ release_script: release_script
103
+
46
104
  my-app-other:
47
105
  <<: *common
106
+
48
107
  # You can specify a different `Dockerfile` relative to the `.controlplane/` directory (defaults to "Dockerfile").
49
108
  dockerfile: ../some_other/Dockerfile