apiVersion: argoproj.io/v1alpha1 kind: ConfigManagementPlugin metadata: name: helm-kustomize-cmp spec: # version: v1.2 # The init command runs in the Application source directory at the beginning of each manifest generation. The init # command can output anything. A non-zero status code will fail manifest generation. init: # Init always happens immediately before generate, but its output is not treated as manifests. # This is a good place to, for example, download chart dependencies. command: [ /bin/sh ] args: - /plugin/init.sh # The generate command runs in the Application source directory each time manifests are generated. Standard output # must be ONLY valid Kubernetes Objects in either YAML or JSON. A non-zero exit code will fail manifest generation. # To write log messages from the command, write them to stderr, it will always be displayed. # Error output will be sent to the UI, so avoid printing sensitive information (such as secrets). generate: command: [ /bin/sh ] args: - /plugin/generate.sh # The discovery config is applied to a repository. If every configured discovery tool matches, then the plugin may be # used to generate manifests for Applications using the repository. If the discovery config is omitted then the plugin # will not match any application but can still be invoked explicitly by specifying the plugin name in the app spec. # Only one of fileName, find.glob, or find.command should be specified. If multiple are specified then only the # first (in that order) is evaluated. # discover: # fileName is a glob pattern (https://pkg.go.dev/path/filepath#Glob) that is applied to the Application's source # directory. If there is a match, this plugin may be used for the Application. # fileName: "./subdir/s*.yaml" # find: # This does the same thing as fileName, but it supports double-start (nested directory) glob patterns. # glob: "**/Chart.yaml" # The find command runs in the repository's root directory. To match, it must exit with status code 0 _and_ # produce non-empty output to standard out. # command: [sh, -c, find . -name env.yaml] # The parameters config describes what parameters the UI should display for an Application. It is up to the user to # actually set parameters in the Application manifest (in spec.source.plugin.parameters). The announcements _only_ # inform the "Parameters" tab in the App Details page of the UI. parameters: # Static parameter announcements are sent to the UI for _all_ Applications handled by this plugin. # Think of the `string`, `array`, and `map` values set here as "defaults". It is up to the plugin author to make # sure that these default values actually reflect the plugin's behavior if the user doesn't explicitly set different # values for those parameters. static: - name: env title: Environment tooltip: Kustomization env (directory in manifest folder) required: true itemType: string collectionType: string string: "staging" - name: chart title: Chart tooltip: Name or path of helm chart required: false itemType: string collectionType: string string: "." - name: flags title: Helm flags tooltip: Extra helm flags required: false itemType: string collectionType: string string: "" # All the fields above besides "string" apply to both the array and map type parameter announcements. # - name: array-param # # This field communicates the parameter's default value to the UI. Setting this field is optional. # array: [default, items] # collectionType: array # - name: map-param # # This field communicates the parameter's default value to the UI. Setting this field is optional. # map: # some: value # collectionType: map # dynamic: # The command is run in an Application's source directory. Standard output must be JSON matching the schema of the # static parameter announcements list. # command: [ /bin/sh, /plugin/get-values.sh ] # If set to `true` then the plugin receives repository files with original file mode. Dangerous since the repository # might have executable files. Set to true only if you trust the CMP plugin authors. preserveFileMode: false