cargoship schema
Writes out a JSON Schema for one of cargoship’s own file formats
Synopsis
Writes out the JSON Schema for KIND – ‘inventory’ for a cluster file, ‘package’ for a distro.yaml, ‘config’ for a cargoship config file – so that an editor can complete and check those files without reaching out to GitHub for a hosted copy. The schema comes out of the binary, so it is the schema this build of cargoship validates against, which a hosted one pinned to the default branch is not, and it is available on a network that has never seen the internet. The output goes to stdout, or to –output. Point an editor at a written file with a ‘# yaml-language-server: $schema=PATH’ comment on the first line. With –package, the package’s own values schema is grafted onto spec.config.values, which is the one block of an inventory whose vocabulary belongs to the package rather than to cargoship – so the addon names, chart settings, and everything else that package accepts complete in the editor too. That composed schema describes the overrides on their own, while cargoship validates them merged with the values the package ships; it catches an unknown key, a wrong type, or a name outside an enum, and does not reproduce install-time validation.
cargoship schema KIND [flags]
Examples
# Write the inventory schema next to an inventory file, for an editor to read
$ cargoship schema inventory -o ./cluster-v1alpha1-schema.json
# Then point the inventory at it, as its first line
$ head -1 ./inventory.yaml
# yaml-language-server: $schema=./cluster-v1alpha1-schema.json
# Compose in a package's own values, so spec.config.values completes too
$ cargoship schema inventory --package ./package.tar.zst -o ./inventory.schema.json
# The same, straight from a package source directory, before it is built
$ cargoship schema inventory --package ./example/rke2-cilium-vsphere/v1_37/v1.37.0-rke2r1
# The schema for a distro.yaml, and for a cargoship config file
$ cargoship schema package -o ./distro.schema.json
$ cargoship schema config -o ./cargoship.schema.json
Options
-a, --architecture string Architecture for OCI images and Zarf packages
-h, --help help for schema
--insecure-skip-tls-verify Skip checking server's certificate for validity. This flag should only be used if you have a specific reason and accept the reduced security posture.
-k, --key string Path to public key file for validating signed packages
-o, --output string Path to write the schema to. Omit it to write to stdout.
--package string Graft a package's own values schema onto spec.config.values. Takes anything 'cargoship apply' takes -- a tarball, an oci:// or https:// reference -- or a package source directory or distro.yaml, so it works before the package is built. Only valid for the 'inventory' schema.
--plain-http Allow OCI registry connections over HTTP instead of HTTPS. This flag should only be used if you have a specific reason and accept the reduced security posture.
--tmpdir string Specify the temporary directory to use for intermediate files (default "/tmp")
--verify verifyMode Verify the Cargoship package signature. (default if-possible)
--zarf-cache string Specify the location of the Zarf cache directory (default "$HOME/.cache/cargoship")
Options inherited from parent commands
--log-file Always write a full-verbosity debug log to a file, regardless of --log-level.
-L, --log-format string Select a logging format. Defaults to 'console'. Valid options are: 'console', 'json', 'dev'. (default "console")
-l, --log-level string Log level when running cargoship. Valid options are: warn, info, debug, trace (default "info")
--no-color Disable terminal color codes in logging and stdout prints.
SEE ALSO
- cargoship - CLI for cargoship installs