release/api/v1alpha1/release_status.go (29 lines of code) (raw):
// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package v1alpha1
// ReleaseStatus defines the observed state of Release
type ReleaseStatus struct {
// +kubebuilder:validation:Required
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:Format=date-time
Date string `json:"date,omitempty"`
// +kubebuilder:validation:Required
Components []Component `json:"components,omitempty"`
}
// A component of a release
type Component struct {
// +kubebuilder:validation:Required
Name string `json:"name,omitempty"`
// +kubebuilder:validation:Required
// Git commit the component is built from, before any patches
GitCommit string `json:"gitCommit,omitempty"`
// Git tag the component is built from, before any patches
GitTag string `json:"gitTag,omitempty"`
// +kubebuilder:validation:Required
Assets []Asset `json:"assets,omitempty"`
}
type Asset struct {
// +kubebuilder:validation:Required
// The asset name
Name string `json:"name,omitempty"`
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=Archive;Image;
// The type of the asset
Type string `json:"type,omitempty"`
// +kubebuilder:validation:Required
Description string `json:"description,omitempty"`
// +kubebuilder:validation:Enum=linux;darwin;windows
// Operating system of the asset
OS string `json:"os,omitempty"`
// Architectures of the asset
Arch []string `json:"arch,omitempty"`
// +optional
Image *AssetImage `json:"image,omitempty"`
// +optional
Archive *AssetArchive `json:"archive,omitempty"`
}
type AssetArchive struct {
// +kubebuilder:validation:Required
// The URI where the asset is located
URI string `json:"uri,omitempty"`
// +kubebuilder:validation:Required
// The sha512 of the asset, only applies for 'file' store
SHA512 string `json:"sha512,omitempty"`
// +kubebuilder:validation:Required
// The sha256 of the asset, only applies for 'file' store
SHA256 string `json:"sha256,omitempty"`
}
type AssetImage struct {
// +kubebuilder:validation:Required
// The image repository, name, and tag
URI string `json:"uri,omitempty"`
// +kubebuilder:validation:Required
// SHA256 digest for the image
ImageDigest string `json:"imageDigest,omitempty"`
}