cpl 1.1.2.rc.0 → 1.2.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 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