Skip to main content

Package

API Group: environments.blanketops.dev

Version: v1alpha1

Scope: Namespaced


Description

Package defines a versioned, distributable configuration unit for a delivery workload.

It encapsulates metadata, ownership, repository source, and environment state projection rules.

Package governs configuration distribution, not artifact creation.


Spec​

spec

FieldTypeRequiredDescription
contractobjectYesPackage definition contract

spec.contract​

FieldTypeRequiredDescription
enabledbooleanYesWhether the package is active
namestringYesCanonical package identity
versionstringYesLogical version identifier
descriptionstringNoHuman-readable description
maintainers[]objectNoList of maintainers
repositoryobjectYesSource repository for package configuration
diffEnabledbooleanNoEnables structured diff behavior
stateRepositoryobjectYesEnvironment state repository definition

spec.contract.maintainers[]​

FieldTypeRequiredDescription
namestringYesMaintainer name
emailstringYesMaintainer email

spec.contract.repository​

FieldTypeRequiredDescription
urlstringYesGit repository URL
credentialsSecretstringNoSecret for repository authentication

spec.contract.stateRepository​

FieldTypeRequiredDescription
urlstringYesGit repository URL for state projection
refstringYesGit branch, tag, or commit reference
cloneSecretstringNoSecret for repository authentication
strategystringYesReconciliation strategy (e.g. kustomization)
pathstringYesPath within repository for state projection

Status​

FieldTypeDescription
phasestringCurrent lifecycle phase
observedVersionstringVersion currently reconciled
lastAppliedRevisionstringGit revision currently applied
conditions[]ConditionStandard Kubernetes condition array

status.phase Values​

ValueMeaning
PendingPackage registered but not reconciled
ReconcilingSynchronizing configuration
ReadyPackage state aligned with contract
DisabledPackage disabled by contract
FailedReconciliation failure

Example​

apiVersion: environments.blanketops.dev/v1alpha1
kind: Package
metadata:
name: for-kaniko-app
namespace: dev
spec:
contract:
enabled: true
name: for-kaniko-app
version: v1.2.3
description: >
This package contains the API deployment manifests and runtime configuration.
maintainers:
- name: Jane Doe
email: jane@example.com
repository:
url: git@github.com:example-org/for-kaniko-app-packages.git
credentialsSecret: git-ssh-credentials-packages
diffEnabled: true
stateRepository:
url: git@github.com:example-org/for-kaniko-app-state.git
ref: master
cloneSecret: git-ssh-credentials-state
strategy: kustomization
path: ./clusters/dev

Invariants​

  • name and version must remain consistent for a given package lifecycle.
  • repository.url must be reachable.
  • stateRepository.url must be reachable.
  • stateRepository.path must resolve to valid manifests.
  • Disabled packages must not reconcile state.
  • Package does not modify Build or Deployment resources directly.