Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
555e755
v1beta1 start
AustinAbro321 Oct 20, 2025
64b6024
WIP
AustinAbro321 Oct 20, 2025
1ae1fc3
add user story
AustinAbro321 Oct 20, 2025
d6967e2
health checks example
AustinAbro321 Oct 20, 2025
9aa4a78
motivation
AustinAbro321 Oct 20, 2025
38fd5de
fixes
AustinAbro321 Oct 20, 2025
52f55f9
restructure
AustinAbro321 Oct 20, 2025
8a7d369
restructure
AustinAbro321 Oct 20, 2025
0dfd1c7
restructure
AustinAbro321 Oct 20, 2025
ffb02a2
easier to read condition
AustinAbro321 Oct 20, 2025
776d4d0
spelling
AustinAbro321 Oct 20, 2025
b4f1ebf
zarf chart changes
AustinAbro321 Oct 20, 2025
50d6dbd
zarf chart
AustinAbro321 Oct 20, 2025
52b2b78
zarf chart
AustinAbro321 Oct 20, 2025
e571b1e
grammar
AustinAbro321 Oct 20, 2025
38a1249
grammar
AustinAbro321 Oct 20, 2025
f7ba837
upgrade / downgrade
AustinAbro321 Oct 21, 2025
345e9c8
ZEP 0048
AustinAbro321 Oct 21, 2025
9764cef
proposal
AustinAbro321 Oct 21, 2025
6841fa3
small fixes
AustinAbro321 Oct 21, 2025
c6cb389
v1beta1
AustinAbro321 Oct 22, 2025
dd5c984
zarf tools wait-for
AustinAbro321 Oct 23, 2025
6423279
space
AustinAbro321 Oct 23, 2025
a1f1f3a
cleanup
AustinAbro321 Oct 23, 2025
0251e7a
fix
AustinAbro321 Oct 24, 2025
27e195f
clenaup flow
AustinAbro321 Oct 24, 2025
dffa7bd
improve grammar and flow
AustinAbro321 Oct 24, 2025
9e27b3b
add that default is removed
AustinAbro321 Oct 24, 2025
8772404
package definition
AustinAbro321 Oct 24, 2025
265b8ba
update build
AustinAbro321 Oct 28, 2025
0883be9
update acceptance criteria
AustinAbro321 Dec 4, 2025
d804a39
zarf dev upgrade schema
AustinAbro321 Dec 4, 2025
1fb4f30
Apply suggestions from code review
AustinAbro321 Dec 4, 2025
a4e1eef
make apiversion required
AustinAbro321 Dec 8, 2025
29337f1
Merge branch 'v1beta1-schema' of github.com:zarf-dev/proposals into v…
AustinAbro321 Dec 8, 2025
cd17d45
introduce other system for package templating
AustinAbro321 Feb 6, 2026
60a62f2
initial description for components
AustinAbro321 Feb 6, 2026
af97778
remote components
AustinAbro321 Feb 6, 2026
ee79166
grammar
AustinAbro321 Feb 6, 2026
0ecc357
grammar fixes
AustinAbro321 Feb 6, 2026
427569f
user story
AustinAbro321 Feb 6, 2026
585ba51
update examples
AustinAbro321 Feb 6, 2026
19c2aa9
api version
AustinAbro321 Feb 6, 2026
80056b3
behavior changes
AustinAbro321 Feb 6, 2026
2cc6631
zarf component config
AustinAbro321 Feb 6, 2026
ebbc9fe
grammar updates
AustinAbro321 Feb 9, 2026
6af045e
grammar and minor adjustments
AustinAbro321 Feb 9, 2026
aee3271
add in schema for component config
AustinAbro321 Feb 9, 2026
6c463e1
fixes
AustinAbro321 Feb 9, 2026
3b0e4e1
variants and components
AustinAbro321 Feb 9, 2026
3342c86
variants
AustinAbro321 Feb 9, 2026
92ccd17
update zarf.yaml representing schema
AustinAbro321 Feb 9, 2026
f5caea2
update zarf.yaml representing schema
AustinAbro321 Feb 9, 2026
8d174a5
cleanup
AustinAbro321 Feb 9, 2026
88a25fc
fix
AustinAbro321 Feb 9, 2026
f650866
zarf features
AustinAbro321 Feb 12, 2026
defbc5d
alternatives and drawbacks
AustinAbro321 Feb 12, 2026
38908af
update history
AustinAbro321 Feb 12, 2026
345ad5f
changing to zarf component publish
AustinAbro321 Feb 13, 2026
ea9467a
make images a list of objects
AustinAbro321 Feb 18, 2026
3c09167
keep default
AustinAbro321 Mar 16, 2026
fc902ab
Merge branch 'main' into v1beta1-schema
AustinAbro321 Apr 15, 2026
5281d10
update to reference 0048 on disk
AustinAbro321 Apr 15, 2026
f4d602b
grammar and zep fixes
AustinAbro321 Apr 15, 2026
89773d5
grammar
AustinAbro321 Apr 15, 2026
2946b0e
logical fixes
AustinAbro321 Apr 15, 2026
0a9e806
fix zarf.yaml
AustinAbro321 Apr 15, 2026
65172b0
fix errors
AustinAbro321 Apr 15, 2026
0129f15
updates for better flow
AustinAbro321 Apr 15, 2026
55acb1a
change back update schema zep
AustinAbro321 Apr 17, 2026
e9e2915
clarify v1alpha1
AustinAbro321 Apr 17, 2026
95ba4c5
Update 0051-v1beta1-schema/README.md
AustinAbro321 Apr 20, 2026
17a5140
alternative
AustinAbro321 Apr 20, 2026
de58485
Merge branch 'v1beta1-schema' of github.com:zarf-dev/proposals into v…
AustinAbro321 Apr 20, 2026
391052e
images import
AustinAbro321 Apr 20, 2026
3d2e57c
add services
AustinAbro321 Apr 20, 2026
a53c7b4
more detail as to why we avoid skeleton templates
AustinAbro321 Apr 20, 2026
b339bfa
update zep.yaml
AustinAbro321 Apr 20, 2026
7f88d60
Apply suggestions from code review
AustinAbro321 Apr 22, 2026
d294939
remove omit empty
AustinAbro321 Apr 22, 2026
f74b7c9
update comment
AustinAbro321 Apr 22, 2026
e753a7e
make chart fields pointers
AustinAbro321 Apr 22, 2026
9f55061
update component to target
AustinAbro321 Apr 22, 2026
231d6b7
remove distro
AustinAbro321 Apr 22, 2026
a80543f
talk about inling cluster architecture
AustinAbro321 Apr 22, 2026
d70db74
additional clarifying line
AustinAbro321 Apr 22, 2026
bf67bd2
add one of to the schema
AustinAbro321 Apr 22, 2026
54d6d26
use full word repository
AustinAbro321 Apr 22, 2026
b9fca04
put a copy of the package.go
AustinAbro321 Apr 22, 2026
154f237
remove the word Zarf as a prefix for many objects
AustinAbro321 Apr 22, 2026
36ec656
show full go objects
AustinAbro321 Apr 22, 2026
69474c9
correct mistakes
AustinAbro321 Apr 22, 2026
f20055a
wait back to nowait
AustinAbro321 Apr 29, 2026
02b27b9
revert change to maxTotalSeconds
AustinAbro321 Apr 29, 2026
fea7822
change localOS to OS
AustinAbro321 Apr 29, 2026
73a3e7d
add server side apply
AustinAbro321 Apr 30, 2026
4625c34
remote component templating
AustinAbro321 Apr 30, 2026
afae619
replace onsuccess with onafter
AustinAbro321 Apr 30, 2026
81f6cb2
variants extend base component
AustinAbro321 Apr 30, 2026
e83469f
config schema
AustinAbro321 May 1, 2026
6096d49
remove ironbank verbiage
AustinAbro321 May 1, 2026
347c83f
mention drawback
AustinAbro321 May 4, 2026
23ffc55
fix wording
AustinAbro321 May 4, 2026
4ce466d
correct list
AustinAbro321 May 5, 2026
34546a0
remove zarf init config
AustinAbro321 May 5, 2026
aa3cb32
reasoning for drawback
AustinAbro321 May 6, 2026
1e744bf
avoid variants in component config
AustinAbro321 May 6, 2026
99b0b10
change Zarf services to an enum
AustinAbro321 May 6, 2026
6264652
brevity
AustinAbro321 May 6, 2026
9738cdd
change component config proposal
AustinAbro321 May 6, 2026
cf16df5
component level action defaults
AustinAbro321 May 6, 2026
50d9a87
fix grammar
AustinAbro321 May 6, 2026
804113a
path & url to paths
AustinAbro321 May 6, 2026
d557b22
remove variables and constants
AustinAbro321 May 7, 2026
d6cddfc
defaults
AustinAbro321 May 8, 2026
e0199fe
import object list rather than paths
AustinAbro321 May 11, 2026
442f390
kind
AustinAbro321 May 13, 2026
92b738c
terminal->hostname
AustinAbro321 May 13, 2026
fac9f3d
no wait to skip wait
AustinAbro321 May 13, 2026
91151ee
make server side apply an enum
AustinAbro321 May 13, 2026
277f092
target to destination
AustinAbro321 May 13, 2026
096c591
use int32 across the board
AustinAbro321 May 13, 2026
b8ac552
update
AustinAbro321 May 13, 2026
d0fb443
remove default
AustinAbro321 May 14, 2026
86db53f
metadata to package metadata
AustinAbro321 May 19, 2026
f9ac46c
create kustomize sub-field
AustinAbro321 May 19, 2026
e2129b6
actions.mute to actions.silent
AustinAbro321 May 19, 2026
6e1db1c
enable values
AustinAbro321 May 19, 2026
acdb961
skip schema validation
AustinAbro321 May 19, 2026
a1c12a1
prevent namespace override
AustinAbro321 May 19, 2026
8bb04fa
boolean fields
AustinAbro321 May 19, 2026
2e02965
specifying wait behavior
AustinAbro321 May 19, 2026
9f19f1f
fix english
AustinAbro321 May 19, 2026
b69ee4d
inconsistencies
AustinAbro321 May 19, 2026
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
6 changes: 5 additions & 1 deletion 0048-schema-update-process/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ As a package creator, I want to create and publish packages using the newer API

#### Story 3

As a package creator, I want to update my package definition to the v1beta1 schema, so I run `zarf dev upgrade-schema --to v1beta1` with a zarf.yaml in my current directory and it outputs the converted package definition to stdout.
As a package creator, I want to update my package definition to the v1beta1 schema, so I run `zarf dev upgrade-schema . --to v1beta1 > zarf.yaml` against the directory containing my zarf.yaml. The command writes the converted definition to stdout, replacing my existing zarf.yaml.

#### Story 4

Expand Down Expand Up @@ -472,6 +472,10 @@ not need to be as detailed as the proposal, but should include enough
information to express the idea and why it was not acceptable.
-->

### Use only one API version

Instead of introducing a new schema, we could over time remove and introduce fields on the existing package schema. This was rejected as we believe a new schema will provide a more intuitive experience for developers and maintainers. For instance, attempting to implement the proposed Helm changes would result in a large, confusing schema. Likewise, it would be difficult to change defaults, such as moving from required to optional, since we wouldn't have a new API version to signal that there is a breaking change. Additionally, removing deprecated fields such as `dataInjections` would require a major version change. Keeping the API version and CLI version decoupled allows flexibility to make the changes we need.

### Public Facing Internal Type

Rather than updating functions to accept a newer version of the schema, Zarf could have a publicly facing internal type that has every field from every version and use that throughout the SDK. The upside of this approach is that we would avoid breaking changes throughout the lifetime of the SDK. The downside is that it would make it easy for anyone using the SDK to set deprecated fields. It would also make it confusing and unclear which fields attach to which versions.
Expand Down
10 changes: 4 additions & 6 deletions 0048-schema-update-process/zep.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,17 @@ approvers:
- "@zarf-dev"

see-also:
# Will add the v1 schema here when applicable
- "/0051-v1beta1-schema"
replaces:

# The target maturity stage in the current dev cycle for this ZEP.
stage: alpha
stage: ""

# The most recent milestone for which work toward delivery of this ZEP has been
# done. This can be the current (upcoming) milestone, if it is being actively
# worked on.
latest-milestone: "v0.65.0"
latest-milestone: "v0.75.0"

# The milestone at which this feature was, or is targeted to be, at each stage.
milestone:
alpha: "v0.65.0"
beta: "v0.65.0"
stable: "v0.65.0"
stable: "TBD"
708 changes: 708 additions & 0 deletions 0051-v1beta1-schema/README.md

Large diffs are not rendered by default.

66 changes: 66 additions & 0 deletions 0051-v1beta1-schema/componentConfig.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2021-Present The Zarf Authors

package v1beta1

// ComponentConfig is the top-level structure of a Zarf component config file.
type ComponentConfig struct {
// The API version of the component config.
APIVersion string `json:"apiVersion" jsonschema:"enum=zarf.dev/v1beta1"`
// The kind of component config.
Kind PackageKind `json:"kind" jsonschema:"enum=ZarfComponentConfig,default=ZarfComponentConfig"`
// Component metadata.
Metadata ComponentMetadata `json:"metadata"`
// The single component this config defines.
Component Component `json:"component"`
// Values imports Zarf values files for templating and overriding Helm values.
Values Values `json:"values,omitempty"`
// Zarf-generated publish data for the component config.
PublishData ComponentPublishData `json:"publishData,omitempty"`
}

// ImportableComponent is a reduced component definition used in component configs.
type ImportableComponent struct {
// Import a component from another Zarf component config.
Import ComponentImport `json:"import,omitempty"`
// Filter when this component is included in package creation or deployment.
Target ComponentTarget `json:"target,omitempty"`
// Kubernetes manifests to be included in a generated Helm chart on package deploy.
Manifests []Manifest `json:"manifests,omitempty"`
// Helm charts to install during package deploy.
Charts []Chart `json:"charts,omitempty"`
// Files or folders to place on disk during package deployment.
Files []File `json:"files,omitempty"`
// List of OCI images to include in the package.
Images []Image `json:"images,omitempty"`
// List of tar archives of images to include in the package.
ImageArchives []ImageArchive `json:"imageArchives,omitempty"`
// List of git repositories to include in the package.
Repositories []string `json:"repositories,omitempty"`
// Custom commands to run at various stages of a package lifecycle.
Actions ComponentActions `json:"actions,omitempty"`
// The Zarf CLI service this component provides, such as the registry, injector, or agent.
Service Service `json:"service,omitempty" jsonschema:"enum=registry,enum=seed-registry,enum=injector,enum=agent,enum=git-server"`
}

// ComponentMetadata holds metadata about a component config.
type ComponentMetadata struct {
// Name to identify this component config.
Name string `json:"name" jsonschema:"pattern=^[a-z0-9][a-z0-9\\-]*$"`
// Additional information about this component config.
Description string `json:"description,omitempty"`
// Generic string to track the component config version.
Version string `json:"version,omitempty"`
// Annotations contains arbitrary metadata about the component config.
Annotations map[string]string `json:"annotations,omitempty"`
}

// ComponentPublishData is written during publish to track details of the component config.
type ComponentPublishData struct {
// The version of Zarf used to build this component config.
ZarfVersion string `json:"zarfVersion"`
// Any migrations that have been run on this component config.
Migrations []string `json:"migrations,omitempty"`
// Requirements for specific package operations.
VersionRequirements []VersionRequirement `json:"versionRequirements,omitempty"`
}
Loading