Step 8: Create a New Version
In this step, you make an edit to the Replicated Config custom resource manifest file in the replicated-cli-tutorial/manifests directory for the cli-tutorial application to create a new field on the Configure App Name page in the admin console.
You then create and promote a new release to the Unstable channel with your changes.
To create and promote a new version of the application:
In your local directory, go to the the
replicated-cli-tutorial/manifestsfolder and open thekots-config.yamlfile in a text editor.Copy and paste the following YAML into the file under the
example_default_valuefield to create a new text field on the Configure App Name page:- name: more_text
title: Another Text Example
type: text
value: ""
when: repl{{ ConfigOptionEquals "show_text_inputs" "1" }}The following shows the full YAML for the
kots-config.yamlfile after you add the new field:---
apiVersion: kots.io/v1beta1
kind: Config
metadata:
name: config-sample
spec:
groups:
- name: example_settings
title: My Example Config
description: Configuration to serve as an example for creating your own. See [https://kots.io/reference/v1beta1/config/](https://kots.io/reference/v1beta1/config/) for configuration docs. In this case, we provide example fields for configuring an Nginx welcome page.
items:
- name: show_text_inputs
title: Customize Text Inputs
help_text: "Show custom user text inputs"
type: bool
default: "0"
recommended: true
- name: example_default_value
title: Text Example (with default value)
type: text
value: ""
default: please change this value
when: repl{{ ConfigOptionEquals "show_text_inputs" "1" }}
# Add the new more_text field here
- name: more_text
title: Another Text Example
type: text
value: ""
when: repl{{ ConfigOptionEquals "show_text_inputs" "1" }}
- name: api_token
title: API token
type: password
props:
rows: 5
when: repl{{ ConfigOptionEquals "show_text_inputs" "1" }}
- name: readonly_text_left
title: Readonly Text
type: text
value: "{{repl RandomString 10}}"
readonly: true
when: repl{{ ConfigOptionEquals "show_text_inputs" "1" }}
- name: hidden_text
title: Secret Key
type: password
hidden: true
value: "{{repl RandomString 40}}"Open the
example-configmap.yamlfile.In the
example-configmap.yamlfile, copy and paste the following HTML to replace the<body>section:<body>
This is an example KOTS application.
<p>This is text from a user config value: '{{repl ConfigOption "example_default_value"}}' </p>
<p>This is more text from a user config value: '{{repl ConfigOption "more_text"}}' </p>
<p>This is a hidden value: '{{repl ConfigOption "hidden_text"}}'</p>
</body>This creates a reference to the
more_textfield using a Replicated template function. The ConfigOption template function renders the user input from the configuration item that you specify. For more information, see Config Context in Reference.Save the changes to both YAML files.
Change to the root
replicated-cli-tutorialdirectory, then run the following command to verify that there are no errors in the YAML:replicated release lint --yaml-dir=manifestsCreate a new release and promote it to the Unstable channel:
replicated release create --autoExample output:
• Reading manifests from ./manifests ✓
• Creating Release ✓
• SEQUENCE: 2
• Promoting ✓
• Channel 2GxpUm7lyB2g0ramqUXqjpLHzK0 successfully set to release 2Type
yand press Enter to continue with the defaults.Example output:
RULE TYPE FILENAME LINE MESSAGE
• Reading manifests from ./manifests ✓
• Creating Release ✓
• SEQUENCE: 2
• Promoting ✓
• Channel 2GmYFUFzj8JOSLYw0jAKKJKFua8 successfully set to release 2The release is created and promoted to the Unstable channel with
SEQUENCE: 2.Verify that the release was promoted to the Unstable channel:
replicated release lsExample output:
SEQUENCE CREATED EDITED ACTIVE_CHANNELS
2 2022-11-03T19:16:24Z 0001-01-01T00:00:00Z Unstable
1 2022-11-03T18:49:13Z 0001-01-01T00:00:00Z
Next Step
Continue to Step 9: Update the Application to return to the admin console and update the application to the new version that you promoted.