Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: refactor Zarf Component composition #2058

Merged
merged 79 commits into from
Nov 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
e19fe1b
something to build off of
Noxsios Oct 7, 2023
d1f9046
naming
Noxsios Oct 8, 2023
3342ad2
revive
Noxsios Oct 8, 2023
d17a6e7
slightly better
Noxsios Oct 8, 2023
d47874a
progress
Noxsios Oct 11, 2023
bedc0e2
progress
Noxsios Oct 12, 2023
f035195
merging vars and consts
Noxsios Oct 12, 2023
c2cb820
start using for real
Noxsios Oct 12, 2023
f7cd2b1
runtime validation of import definitions
Noxsios Oct 12, 2023
b32bfa2
more progress
Noxsios Oct 13, 2023
cb4f324
progress on oci compose
Noxsios Oct 16, 2023
70fc996
progress on oci compose
Noxsios Oct 16, 2023
762356d
fix tb:dir relationship
Noxsios Oct 16, 2023
96d59c0
derp
Noxsios Oct 16, 2023
5439285
cleanup
Noxsios Oct 16, 2023
7e1afcc
Merge branch 'main' into refactor-composition
Noxsios Oct 16, 2023
a49aec6
fix doubling
Noxsios Oct 16, 2023
707fb30
string instead of history
Noxsios Oct 16, 2023
9b5942a
fix merge vars and consts
Noxsios Oct 16, 2023
8da6550
fix single component compose
Noxsios Oct 16, 2023
bbbfa6f
Merge branch 'main' into refactor-composition
Noxsios Oct 16, 2023
95c997c
derp
Noxsios Oct 16, 2023
b072230
lets try this
Noxsios Oct 16, 2023
6c16f7e
mutate tail, kinda ugly ngl
Noxsios Oct 17, 2023
2c3969f
better string
Noxsios Oct 17, 2023
a1466b2
better string
Noxsios Oct 17, 2023
4b0ef4a
fix oci compose
Noxsios Oct 17, 2023
b1cee9b
Merge branch 'main' into refactor-composition
Noxsios Oct 18, 2023
77a37c1
save oci import for differential stuffs
Noxsios Oct 18, 2023
213896a
remove double nil check
Noxsios Oct 18, 2023
943c2ad
cleanup
Noxsios Oct 18, 2023
dde69b9
cleanup
Noxsios Oct 18, 2023
aacc98a
prevent circular imports
Noxsios Oct 18, 2023
84a6022
better validation error messages
Noxsios Oct 18, 2023
6500535
fix
Noxsios Oct 18, 2023
b274ff3
out with the old
Noxsios Oct 18, 2023
2db4a43
prevent nil pointer
Noxsios Oct 19, 2023
904a145
Merge branch 'main' into refactor-composition
Noxsios Oct 25, 2023
c3ab1ac
Update src/pkg/packager/composer/extensions.go
Noxsios Oct 25, 2023
a9ba54b
Update src/pkg/packager/composer/list.go
Noxsios Oct 25, 2023
384b825
fix merge
Noxsios Oct 25, 2023
8a4b843
fix merge
Noxsios Oct 25, 2023
5701fc7
changes from review
Noxsios Oct 25, 2023
25f6697
changes from review
Noxsios Oct 25, 2023
620feb8
remove oci differential components
Noxsios Oct 25, 2023
da8affc
cleanup test
Noxsios Oct 25, 2023
0fb1995
remove todo
Noxsios Oct 25, 2023
e160dd9
cleanup helpers
Noxsios Oct 25, 2023
46f54b8
cleaner bb compose
Noxsios Oct 26, 2023
601e61f
docs and schema
Noxsios Oct 26, 2023
76fe95c
Merge branch 'main' into refactor-composition
Racer159 Oct 26, 2023
8dffec0
Fix fix paths for actions to properly mutate Dirs
Racer159 Oct 26, 2023
73a5678
Add back copyOpts.FindSuccessors override
Racer159 Oct 26, 2023
5e02976
Merge branch 'main' into refactor-composition
Racer159 Oct 26, 2023
5e0d7aa
Add an ADR draft
Racer159 Oct 26, 2023
6930d03
Remove OCI differential tests
Racer159 Oct 26, 2023
ad4f8e0
actually make extensions work
Racer159 Oct 27, 2023
bb558ba
Fixup and expand tests
Racer159 Oct 27, 2023
191a29c
Merge branch 'main' into refactor-composition
Racer159 Oct 30, 2023
3453760
Initial laydown of improiving the compose example
Racer159 Oct 30, 2023
ff11f73
Add public key to publish of tarball package
Racer159 Oct 30, 2023
2b11dbf
Update signing key flag and temporarily change publish workflow
Racer159 Oct 30, 2023
5e691e2
Revert application packages workflow
Racer159 Oct 30, 2023
418541d
Refactor the import everything tests and add a dedicated compose test
Racer159 Oct 31, 2023
e92c737
Actually run the test
Racer159 Oct 31, 2023
426e339
fix tests and more edge cases
Racer159 Oct 31, 2023
b849313
Merge branch 'main' into refactor-composition
Racer159 Oct 31, 2023
011f2b8
Mark key and key pass deprecated
Racer159 Oct 31, 2023
b5d8a9d
Remove unused variables
Racer159 Oct 31, 2023
7f90dfa
Cleanup compose test
Racer159 Oct 31, 2023
e2af04c
Fix compose test
Racer159 Oct 31, 2023
1162845
Remove dependence on registry 1
Racer159 Oct 31, 2023
6ed005e
Remove dependence on repo 1
Racer159 Oct 31, 2023
6c80833
Remove flux images
Racer159 Oct 31, 2023
2a31040
Improve nested test case for #1827
Racer159 Oct 31, 2023
2251847
Add comments for unit test test cases
Racer159 Oct 31, 2023
e6cc81c
Remove references to deprecated libraries
Racer159 Oct 31, 2023
1f406e8
Address vulnerability
Racer159 Oct 31, 2023
ae8ba09
Merge branch 'main' into refactor-composition
Racer159 Nov 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/publish-application-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,15 @@ jobs:
- name: Build And Publish Application Packages
# Create the dos-games package with the cosign signature, publish to ghcr and copy the tags to allow 'uname -m' to work
run: |
zarf package create -o build -a amd64 examples/dos-games --key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
zarf package create -o build -a arm64 examples/dos-games --key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
zarf package create -o build -a amd64 examples/dos-games --signing-key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
zarf package create -o build -a arm64 examples/dos-games --signing-key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm

zarf package publish ./build/zarf-package-dos-games-amd64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages
zarf package publish ./build/zarf-package-dos-games-arm64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages
# Publish a the signed dos-games package
zarf package publish ./build/zarf-package-dos-games-amd64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages --key=https://zarf.dev/cosign.pub
zarf package publish ./build/zarf-package-dos-games-arm64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages --key=https://zarf.dev/cosign.pub

# Publish a skeleton of the dos-games package
zarf package publish examples/dos-games oci://ghcr.io/defenseunicorns/packages

zarf tools registry copy ghcr.io/defenseunicorns/packages/dos-games:1.0.0-amd64 ghcr.io/defenseunicorns/packages/dos-games:1.0.0-x86_64
zarf tools registry copy ghcr.io/defenseunicorns/packages/dos-games:1.0.0-arm64 ghcr.io/defenseunicorns/packages/dos-games:1.0.0-aarch64
Expand Down
23 changes: 23 additions & 0 deletions adr/0021-composable-components.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 21. Composable Components

Date: 2023-10-26

## Status

Accepted

## Context

Zarf has supports composing components together between packages on `zarf package create` since v0.16.0. This has allowed package creators to make more complex packages from smaller reusable bits. As this functionality grew however there were a few problems that developed:

1. Import chains did not handle scaling to larger numbers of layers with test coverage usually only covering the first import.
2. When OCI skeletons were added they were largely bolted on after the fact without rethinking how they would impact composability.
3. Component filtering via the `only` filter was not implemented in a central location leading to bugs with create-time filters.

## Decision

We decided to separate composability into its own package that represents a composability import chain as a doubly linked list. This allows us to represent the whole chain as it exists relative to the "head" Zarf package (the definition that Zarf was asked to build) to more easily handle packages that are in different locations (such as OCI skeletons in one's cache). We also run the compose functions on all components so that the additional filter logic that is needed for these components can be handled more concisely and built upon (as it might for `flavor` https://github.com/defenseunicorns/zarf/issues/2101).

## Consequences

Maintaining the full context within a linked list does use more memory and some operations on it are less efficient than they could be if we one-shotted the compose. This is a decent tradeoff however as most import chains won't be longer than 4 or 5 elements in practice and these structs and operations are relatively small.
4 changes: 2 additions & 2 deletions docs/2-the-zarf-cli/100-cli-commands/zarf_package_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ zarf package create [ DIRECTORY ] [flags]
--confirm Confirm package creation without prompting
--differential string [beta] Build a package that only contains the differential changes from local resources and differing remote resources from the specified previously built package
-h, --help help for create
-k, --key string Path to private key file for signing packages
--key-pass string Password to the private key file used for signing packages
-m, --max-package-size int Specify the maximum size of the package in megabytes, packages larger than this will be split into multiple parts to be loaded onto smaller media (i.e. DVDs). Use 0 to disable splitting.
-o, --output string Specify the output (either a directory or an oci:// URL) for the created Zarf package
--registry-override stringToString Specify a map of domains to override on package create when pulling images (e.g. --registry-override docker.io=dockerio-reg.enterprise.intranet) (default [])
-s, --sbom View SBOM contents after creating the package
--sbom-out string Specify an output directory for the SBOMs from the created Zarf package
--set stringToString Specify package variables to set on the command line (KEY=value) (default [])
--signing-key string Path to private key file for signing packages
--signing-key-pass string Password to the private key file used for signing packages
--skip-sbom Skip generating SBOM for this package
```

Expand Down
81 changes: 1 addition & 80 deletions docs/3-create-a-zarf-package/4-zarf-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,45 +491,6 @@ must respect the following conditions
</blockquote>
</details>

<details open>
<summary>
<strong> <a name="build_OCIImportedComponents"></a>OCIImportedComponents</strong>
</summary>
&nbsp;
<blockquote>

## build > OCIImportedComponents

**Description:** Map of components that were imported via OCI. The keys are OCI Package URLs and values are the component names

| | |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Type** | `object` |
| **Additional properties** | [![Any type: allowed](https://img.shields.io/badge/Any%20type-allowed-green)](# "Additional Properties of any type are allowed.") |

<details>
<summary>
<strong> <a name="build_OCIImportedComponents_pattern1"></a>Pattern Property .*</strong>
</summary>
&nbsp;
<blockquote>

:::note
All properties whose name matches the regular expression
```.*``` ([Test](https://regex101.com/?regex=.%2A))
must respect the following conditions
:::

| | |
| -------- | -------- |
| **Type** | `string` |

</blockquote>
</details>

</blockquote>
</details>

<details>
<summary>
<strong> <a name="build_lastNonBreakingVersion"></a>lastNonBreakingVersion</strong>
Expand Down Expand Up @@ -1002,50 +963,10 @@ Must be one of:

| | |
| ------------------------- | -------------------------------------------------------------------------------------------------------- |
| **Type** | `combining` |
| **Type** | `object` |
| **Additional properties** | [![Not allowed](https://img.shields.io/badge/Not%20allowed-red)](# "Additional Properties not allowed.") |
| **Defined in** | #/definitions/ZarfChart |

<blockquote>

| One of(Option) |
| ---------------------------------------------------- |
| [url](#components_items_charts_items_oneOf_i0) |
| [localPath](#components_items_charts_items_oneOf_i1) |

<blockquote>

### <a name="components_items_charts_items_oneOf_i0"></a>Property `url`

**Title:** url

| | |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Type** | `object` |
| **Additional properties** | [![Any type: allowed](https://img.shields.io/badge/Any%20type-allowed-green)](# "Additional Properties of any type are allowed.") |

#### <a name="autogenerated_heading_2"></a>The following properties are required
* url

</blockquote>
<blockquote>

### <a name="components_items_charts_items_oneOf_i1"></a>Property `localPath`

**Title:** localPath

| | |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Type** | `object` |
| **Additional properties** | [![Any type: allowed](https://img.shields.io/badge/Any%20type-allowed-green)](# "Additional Properties of any type are allowed.") |

#### <a name="autogenerated_heading_2"></a>The following properties are required
* localPath

</blockquote>

</blockquote>

<details>
<summary>
<strong> <a name="components_items_charts_items_name"></a>name *</strong>
Expand Down
23 changes: 3 additions & 20 deletions examples/composable-packages/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import ExampleYAML from "@site/src/components/ExampleYAML";

# Composable Packages

This example demonstrates using Zarf to import components from existing Zarf package definitions while merging overrides to add or change functionality. It uses the existing [DOS games](../dos-games/README.md) and [WordPress](../wordpress/README.md) examples by simply adding `import` keys in the new [zarf.yaml](zarf.yaml) file.
This example demonstrates using Zarf to import components from existing Zarf package definitions while merging overrides to add or change functionality. It uses the existing [DOS games](../dos-games/README.md) example by simply adding `import` keys in the new [zarf.yaml](zarf.yaml) file.

The `import` key in Zarf supports two modes to pull in a component:

1. The `path` key allows you to specify a path to a directory that contains the `zarf.yaml` that you wish to import on your local filesystem. This allows you to have a common component that you can reuse across multiple packages *within* a project.
1. The `path` key allows you to specify a path to a directory that contains the `zarf.yaml` that you wish to import on your local filesystem. This allows you to have a common component that you can reuse across multiple packages *within* a project (i.e. within one team/codebase).

2. The `url` key allows you to specify an `oci://` URL to a skeleton package that was published to an OCI registry. Skeleton packages are special package bundles that contain the `zarf.yaml` package definition and any local files referenced by that definition at publish time. This allows you to version a set of components and import them into multiple packages *across* projects.
2. The `url` key allows you to specify an `oci://` URL to a skeleton package that was published to an OCI registry. Skeleton packages are special package bundles that contain the `zarf.yaml` package definition and any local files referenced by that definition at publish time. This allows you to version a set of reusable components and import them into multiple packages *across* projects (i.e. across teams/codebases).

:::tip

Expand Down Expand Up @@ -40,23 +40,6 @@ To view the example in its entirety, select the `Edit this page` link below the

:::

:::note

Creating this example requires a locally hosted container registry that has the `wordpress` skeleton package published and available. You can do this by running the following commands:

```bash
docker run -d -p 555:5000 --restart=always --name registry registry:2
zarf package publish examples/wordpress oci://127.0.0.1:555 --insecure
```

You will also need to pass the `--insecure` flag to `zarf package create` to pull from the `http` registry:

```bash
zarf package create examples/composable-packages/ --insecure
```

:::

<ExampleYAML src={require('./zarf.yaml')} showLink={false} />

:::info
Expand Down
8 changes: 3 additions & 5 deletions examples/composable-packages/zarf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,18 @@ components:
files:
- quake-service.yaml

- name: oci-wordpress-url
- name: oci-games-url
# The component logic keys ('required', 'group', and 'default') always override those of the imported package
# required: false # the initial value overrides the child component
# group: "" # the initial value overrides the child component
# default: false # the initial value overrides the child component
import:
# The URL to the skeleton package containing this component's package definition
url: oci://localhost:555/wordpress:16.0.4-skeleton
url: oci://🦄/dos-games:1.0.0-skeleton
# Example optional custom name to point to in the imported package (default is to use this component's name)
name: wordpress
name: baseline
# Un'name'd Zarf primitives will be appended to the end of the primitive's list for that component.
actions:
onDeploy:
before:
- cmd: ./zarf tools kubectl get -n dos-games deployment -o jsonpath={.items[0].metadata.creationTimestamp}
setVariables:
- name: WORDPRESS_BLOG_NAME
5 changes: 2 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ require (
github.com/anchore/stereoscope v0.0.0-20231027135531-5909e353ee88
github.com/anchore/syft v0.84.1
github.com/derailed/k9s v0.27.4
github.com/distribution/distribution v2.8.3+incompatible
github.com/distribution/reference v0.5.0
github.com/docker/cli v24.0.6+incompatible
github.com/fairwindsops/pluto/v5 v5.18.4
github.com/fatih/color v1.15.0
Expand Down Expand Up @@ -186,9 +186,8 @@ require (
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 // indirect
github.com/digitorus/timestamp v0.0.0-20230821155606-d1ad5ca9624c // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/distribution/reference v0.5.0 // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker v24.0.6+incompatible // indirect
github.com/docker/docker v24.0.7+incompatible // indirect
github.com/docker/docker-credential-helpers v0.7.0 // indirect
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect
Expand Down
6 changes: 2 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -510,8 +510,6 @@ github.com/digitorus/timestamp v0.0.0-20230821155606-d1ad5ca9624c/go.mod h1:GvWn
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/distribution/distribution v2.8.3+incompatible h1:RlpEXBLq/WPXYvBYMDAmBX/SnhD67qwtvW/DzKc8pAo=
github.com/distribution/distribution v2.8.3+incompatible/go.mod h1:EgLm2NgWtdKgzF9NpMzUKgzmR7AMmb0VQi2B+ZzDRjc=
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
Expand All @@ -522,8 +520,8 @@ github.com/docker/cli v24.0.6+incompatible h1:fF+XCQCgJjjQNIMjzaSmiKJSCcfcXb3TWT
github.com/docker/cli v24.0.6+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v24.0.6+incompatible h1:hceabKCtUgDqPu+qm0NgsaXf28Ljf4/pWFL7xjWWDgE=
github.com/docker/docker v24.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM=
github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y=
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
Expand Down
10 changes: 8 additions & 2 deletions src/cmd/package.go
Original file line number Diff line number Diff line change
Expand Up @@ -349,11 +349,17 @@ func bindCreateFlags(v *viper.Viper) {
createFlags.StringVar(&pkgConfig.CreateOpts.SBOMOutputDir, "sbom-out", v.GetString(common.VPkgCreateSbomOutput), lang.CmdPackageCreateFlagSbomOut)
createFlags.BoolVar(&pkgConfig.CreateOpts.SkipSBOM, "skip-sbom", v.GetBool(common.VPkgCreateSkipSbom), lang.CmdPackageCreateFlagSkipSbom)
createFlags.IntVarP(&pkgConfig.CreateOpts.MaxPackageSizeMB, "max-package-size", "m", v.GetInt(common.VPkgCreateMaxPackageSize), lang.CmdPackageCreateFlagMaxPackageSize)
createFlags.StringVarP(&pkgConfig.CreateOpts.SigningKeyPath, "key", "k", v.GetString(common.VPkgCreateSigningKey), lang.CmdPackageCreateFlagSigningKey)
createFlags.StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "key-pass", v.GetString(common.VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagSigningKeyPassword)
createFlags.StringToStringVar(&pkgConfig.CreateOpts.RegistryOverrides, "registry-override", v.GetStringMapString(common.VPkgCreateRegistryOverride), lang.CmdPackageCreateFlagRegistryOverride)

createFlags.StringVar(&pkgConfig.CreateOpts.SigningKeyPath, "signing-key", v.GetString(common.VPkgCreateSigningKey), lang.CmdPackageCreateFlagSigningKey)
createFlags.StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "signing-key-pass", v.GetString(common.VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagSigningKeyPassword)

createFlags.StringVarP(&pkgConfig.CreateOpts.SigningKeyPath, "key", "k", v.GetString(common.VPkgCreateSigningKey), lang.CmdPackageCreateFlagDeprecatedKey)
createFlags.StringVar(&pkgConfig.CreateOpts.SigningKeyPassword, "key-pass", v.GetString(common.VPkgCreateSigningKeyPassword), lang.CmdPackageCreateFlagDeprecatedKeyPassword)

createFlags.MarkHidden("output-directory")
createFlags.MarkHidden("key")
createFlags.MarkHidden("key-pass")
}

func bindDeployFlags(v *viper.Viper) {
Expand Down
Loading
Loading