Nuon supports several different Component types that allow you to connect your existing DevOps automation, infrastructure as code, and containers to your app.

What is a Component?

A Component represents a part of your App. Nuon supports the following Component types:

How do you configure a Component?

A Component is configured in an individual <component name>.toml file inside a directory called components in the root of your App Config directory. e.g., a Helm chart Component named whoami would be defined in a file named whoami.toml inside a directory named components. Alternatively, you can nest individual Component files inside directories inside the components directory. For example, you could have a directory named infra inside the components directory, and define an S3 Bucket Component named buckets.toml. Additional Component configuration files can be added to the components directory or another directory in the App Config directory like src, and referenced in the Component’s config file. e.g., you can have a values.yaml file for a Helm chart Component located the root of the components directory. You can configure Components to use either a public repo (using a public_repo block) or a private GitHub repo (using a connected_repo block). Read more about VCS configuration here.
#:schema https://api.nuon.co/v1/general/config-schema?source=helm
name           = "whoami"
type           = "helm_chart"
chart_name     = "whoami"
namespace      = "whoami"
storage_driver = "configmap"

[public_repo]
repo      = "nuonco/demo"
directory = "eks-simple/src/components/whoami"
branch    = "main"

[[values_file]]
contents = "./values/whoami.yaml"
By default, every Component must have a git repository to store its source files, but you can include them in the App Config directory and reference the same App Config repo in the Component TOML file. e.g., a Terraform Component named lamdba that uses a variables.tf file and Python code can be located in the App Config directory’s src directory and referenced as the Public Repo in the Component’s config file:
[public_repo]
repo      = "acme-co/my-app"
directory = "src/components/lamdba"
branch    = "main"

Component Management

The CLI exposes many operational commands to manage components. To see all available commands, run: nuon components --help.
Make sure to select an App using nuon apps select before using the nuon components commands, or pass the -a flag to each nuon component command.

Pinning a Component

You can pin a Component, which will set its ID as a default argument to all nuon component commands. This is helpful to avoid having to pass -c to each command.
nuon components select
Each example below assumes you have run nuon components select first.
To show the currently pinned Component:
nuon components current

Component Management Commands

Commands for working with Components:
Components can only be created using a configuration file.
Get a Component
nuon components get 
List Components - List Components for an App.
nuon components list
Delete a Component - Delete a Component.
It is not recommended to delete Components using the CLI. Instead, manage them using config files.
nuon components delete -c component_id
Print a Component config - Print the latest configuration for a Component.
nuon components latest-config

Component Builds

All Components must be built before releasing. The release commands support an -auto-build flag which will trigger a Build. Create a Build - Create a Build using the latest Component configuration.
nuon builds create -c component_id
List Builds - List Builds for a Component.
nuon builds list
Get a Build - Print out Build details.
nuon builds get -b <build-id>
Logs - Show logs for a Build.
nuon builds logs -b <build-id>
Print Plan - Print a Build plan with configuration for the Build.
nuon builds print-plan -b <build-id>