Documentation ¶
Index ¶
- type AKSAsset
- type Asset
- type AssetShared
- type Assets
- type Azure
- type Config
- type ConfigStep
- type DockerAsset
- type DockerLayerAsset
- type EKSAsset
- type EntitlementValue
- type Entitlements
- type GCPProvider
- type GKEAsset
- type GitHubAsset
- type GithubContent
- type GithubFile
- type HelmAsset
- type HelmFetch
- type HelmIntro
- type HelmValues
- type Image
- type InlineAsset
- type KubectlApply
- type Kustomize
- type KustomizeIntro
- type Lifecycle
- type LocalAsset
- type LocalHelmOpts
- type Message
- type Meta
- type Release
- type ReleaseMetadata
- type Render
- type ShipAppMetadata
- type Spec
- type Step
- type StepDetails
- type StepShared
- type Terraform
- type TerraformAsset
- type Unfork
- type Utilization
- type ValuesFrom
- type ValuesFromLifecycle
- type WebAsset
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AKSAsset ¶ added in v0.16.0
type AKSAsset struct { Azure `json:",inline" yaml:",inline" hcl:",inline"` ClusterName string `json:"cluster_name" yaml:"cluster_name" hcl:"cluster_name"` KubernetesVersion string `json:"kubernetes_version" yaml:"kubernetes_version" hcl:"kubernetes_version"` PublicKey string `json:"public_key" yaml:"public_key" hcl:"public_key"` NodeCount string `json:"node_count" yaml:"node_count" hcl:"node_count"` NodeType string `json:"node_type" yaml:"node_type" hcl:"node_type"` DiskGB string `json:"disk_gb" yaml:"disk_gb" hcl:"disk_gb"` }
AKSAsset
type Asset ¶
type Asset struct { Inline *InlineAsset `json:"inline,omitempty" yaml:"inline,omitempty" hcl:"inline,omitempty"` Docker *DockerAsset `json:"docker,omitempty" yaml:"docker,omitempty" hcl:"docker,omitempty"` DockerLayer *DockerLayerAsset `json:"dockerlayer,omitempty" yaml:"dockerlayer,omitempty" hcl:"dockerlayer,omitempty"` GitHub *GitHubAsset `json:"github,omitempty" yaml:"github,omitempty" hcl:"github,omitempty"` Web *WebAsset `json:"web,omitempty" yaml:"web,omitempty" hcl:"web,omitempty"` Helm *HelmAsset `json:"helm,omitempty" yaml:"helm,omitempty" hcl:"helm,omitempty"` Local *LocalAsset `json:"local,omitempty" yaml:"local,omitempty" hcl:"local,omitempty"` Terraform *TerraformAsset `json:"terraform,omitempty" yaml:"terraform,omitempty" hcl:"terraform,omitempty"` AmazonEKS *EKSAsset `json:"amazon_eks,omitempty" yaml:"amazon_eks,omitempty" hcl:"amazon_eks,omitempty"` GoogleGKE *GKEAsset `json:"google_gke,omitempty" yaml:"google_gke,omitempty" hcl:"google_gke,omitempty"` AzureAKS *AKSAsset `json:"azure_aks,omitempty" yaml:"azure_aks,omitempty" hcl:"azure_aks,omitempty"` }
Asset is a spec to generate one or more deployment assets
type AssetShared ¶
type AssetShared struct { string `json:"dest,omitempty" yaml:"dest,omitempty" hcl:"dest,omitempty"` Mode os.FileMode `json:"mode,omitempty" yaml:"mode,omitempty" hcl:"mode,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty" hcl:"description,omitempty"` When string `json:"when,omitempty" yaml:"when,omitempty" hcl:"when,omitempty"` }Dest
AssetShared is attributes common to all assets
type Assets ¶
type Assets struct {
V1 []Asset `json:"v1,omitempty" yaml:"v1,omitempty" hcl:"v1,omitempty"`
}
Assets is the top level assets object
type Azure ¶ added in v0.16.0
type Azure struct { TenantID string `json:"tenant_id" yaml:"tenant_id" hcl:"tenant_id"` SubscriptionID string `json:"subscription_id" yaml:"subscription_id" hcl:"subscription_id"` ServicePrincipalID string `json:"service_principal_id" yaml:"service_principal_id" hcl:"service_principal_id"` ServicePrincipalSecret string `json:"service_principal_secret" yaml:"service_principal_secret" hcl:"service_principal_secret"` ResourceGroupName string `json:"resource_group_name" yaml:"resource_group_name" hcl:"resource_group_name"` Location string `json:"location" yaml:"location" hcl:"location"` }
type Config ¶
type Config struct {
V1 []libyaml.ConfigGroup `json:"v1,omitempty" yaml:"v1,omitempty" hcl:"v1,omitempty"`
}
Config is the top level config object
type ConfigStep ¶
type ConfigStep struct {
}func (*ConfigStep) Shared ¶
func (c *ConfigStep) Shared() *StepShared
func (ConfigStep) ShortName ¶
func (c ConfigStep) ShortName() string
type DockerAsset ¶
type DockerAsset struct { Image string `json:"image" yaml:"image" hcl:"image"` Source string `json:"source" yaml:"source" hcl:"source"` }
DockerAsset is an asset that declares a docker image
type DockerLayerAsset ¶
type DockerLayerAsset struct { DockerAsset `json:",inline" yaml:",inline" hcl:",inline"` Layer string `json:"layer" yaml:"layer" hcl:"layer"` }
DockerLayerAsset is an asset that will unpack a docker layer at `dest`
type EKSAsset ¶
type EKSAsset struct { ClusterName string `json:"cluster_name,omitempty" yaml:"cluster_name,omitempty" hcl:"cluster_name,omitempty"` Region string `json:"region,omitempty" yaml:"region,omitempty" hcl:"region,omitempty"` CreatedVPC *amazoneks.EKSCreatedVPC `json:"created_vpc,omitempty" yaml:"created_vpc,omitempty" hcl:"created_vpc,omitempty"` ExistingVPC *amazoneks.EKSExistingVPC `json:"existing_vpc,omitempty" yaml:"existing_vpc,omitempty" hcl:"existing_vpc,omitempty"` AutoscalingGroups []amazoneks.EKSAutoscalingGroup `json:"autoscaling_groups,omitempty" yaml:"autoscaling_groups,omitempty" hcl:"autoscaling_groups,omitempty"` }
EKSAsset
type EntitlementValue ¶ added in v0.24.0
EntitlementValue is a single entitlement value
type Entitlements ¶ added in v0.24.0
type Entitlements struct { Meta Meta `json:"meta"` Signature string `json:"signature"` Values []EntitlementValue `json:"values,omitempty"` Utilizations []Utilization `json:"utilizations,omitempty"` }
Entitlements is a signed object containing entitlments info+metadata
type GCPProvider ¶
type GCPProvider struct { Credentials string `json:"credentials,omitempty" yaml:"credentials,omitempty" hcl:"credentials,omitempty"` Project string `json:"project,omitempty" yaml:"project,omitempty" hcl:"project,omitempty"` Region string `json:"region,omitempty" yaml:"region,omitempty" hcl:"region,omitempty"` }
type GKEAsset ¶
type GKEAsset struct { GCPProvider `json:",inline" yaml:",inline" hcl:",inline"` // ClusterName required ClusterName string `json:"cluster_name" yaml:"cluster_name" hcl:"cluster_name"` Zone string `json:"zone,omitempty" yaml:"zone,omitempty" hcl:"zone,omitempty"` InitialNodeCount string `json:"initial_node_count,omitempty" yaml:"initial_node_count,omitempty" hcl:"initial_node_count,omitempty"` MachineType string `json:"machine_type,omitempty" yaml:"machine_type,omitempty" hcl:"machine_type,omitempty"` AdditionalZones string `json:"additional_zones,omitempty" yaml:"additional_zones,omitempty" hcl:"additional_zones,omitempty"` MinMasterVersion string `json:"min_master_version,omitempty" yaml:"min_master_version,omitempty" hcl:"min_master_version,omitempty"` }
GKEAsset
type GitHubAsset ¶
type GitHubAsset struct { Repo string `json:"repo" yaml:"repo" hcl:"repo"` Ref string `json:"ref" yaml:"ref" hcl:"ref"` Path string `json:"path" yaml:"path" hcl:"path"` Source string `json:"source" yaml:"source" hcl:"source"` Proxy bool `json:"proxy" yaml:"proxy" hcl:"proxy"` StripPath string `json:"strip_path" yaml:"strip_path" hcl:"strip_path"` }
GitHubAsset is an asset whose contents are specified directly in the Spec
type GithubContent ¶
type GithubContent struct { Repo string `json:"repo" yaml:"repo" hcl:"repo" meta:"repo"` Path string `json:"path" yaml:"path" hcl:"path" meta:"path"` Ref string `json:"ref" yaml:"ref" hcl:"ref" meta:"ref"` Files []GithubFile `json:"files" yaml:"files" hcl:"files" meta:"files"` }
func (GithubContent) String ¶ added in v0.29.0
func (g GithubContent) String() string
Not using json.Marshal because I want to omit the file data, and don't feel like writing a custom marshaller
type GithubFile ¶
type GithubFile struct { Name string `json:"name" yaml:"name" hcl:"name" meta:"name"` Path string `json:"path" yaml:"path" hcl:"path" meta:"path"` Sha string `json:"sha" yaml:"sha" hcl:"sha" meta:"sha"` Size int64 `json:"size" yaml:"size" hcl:"size" meta:"size"` Data string `json:"data" yaml:"data" hcl:"data" meta:"data"` }
GithubFile
func (GithubFile) String ¶ added in v0.29.0
func (file GithubFile) String() string
type HelmAsset ¶
type HelmAsset struct { Values map[string]interface{} `json:"values" yaml:"values" hcl:"values"` HelmOpts []string `json:"helm_opts" yaml:"helm_opts" hcl:"helm_opts"` // GitHub references a github asset from which to pull the chart GitHub *GitHubAsset `json:"github,omitempty" yaml:"github,omitempty" hcl:"github,omitempty"` // HelmFetch pulls a chart as 'helm fetch' would HelmFetch *HelmFetch `json:"helm_fetch,omitempty" yaml:"helm_fetch,omitempty" hcl:"helm_fetch,omitempty"` // Local is an escape hatch, most impls will use github or some sort of ChartMuseum thing Local *LocalHelmOpts `json:"local,omitempty" yaml:"local,omitempty" hcl:"local,omitempty"` ValuesFrom *ValuesFrom `json:"values_from,omitempty" yaml:"values_from,omitempty" hcl:"values_from,omitempty"` Upstream string `json:"upstream,omitempty" yaml:"upstream,omitempty" hcl:"upstream,omitempty"` }
HelmAsset is an asset that declares a helm chart on github
type HelmIntro ¶
type HelmIntro struct { IsUpdate bool }
HelmIntro is a lifecycle step to render persisted README.md in the .ship folder
func (*HelmIntro) Shared ¶
func (h *HelmIntro) Shared() *StepShared
type HelmValues ¶
type HelmValues struct { Path string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"` }
HelmValues is a lifecycle step to render persisted values.yaml in the .ship folder and save user input changes to values.yaml
func (*HelmValues) Shared ¶
func (h *HelmValues) Shared() *StepShared
func (*HelmValues) ShortName ¶
func (h *HelmValues) ShortName() string
type Image ¶
type Image struct { URL string `json:"url" yaml:"url" hcl:"url" meta:"url"` Source string `json:"source" yaml:"source" hcl:"source" meta:"source"` AppSlug string `json:"appSlug" yaml:"appSlug" hcl:"appSlug" meta:"appSlug"` ImageKey string `json:"imageKey" yaml:"imageKey" hcl:"imageKey" meta:"imageKey"` }
Image
type InlineAsset ¶
type InlineAsset struct { Contents string `json:"contents" yaml:"contents" hcl:"contents"` }
InlineAsset is an asset whose contents are specified directly in the Spec
type KubectlApply ¶
type KubectlApply struct { Path string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"` Kubeconfig string `json:"kubeconfig,omitempty" yaml:"kubeconfig,omitempty" hcl:"kubeconfig,omitempty"` }
KubectlApply is a lifeycle step to execute `apply` for a kubeconfig asset
func (*KubectlApply) Shared ¶
func (k *KubectlApply) Shared() *StepShared
func (*KubectlApply) ShortName ¶
func (k *KubectlApply) ShortName() string
type Kustomize ¶
type Kustomize struct { Base string `json:"base,omitempty" yaml:"base,omitempty" hcl:"base,omitempty"` Dest string `json:"dest,omitempty" yaml:"dest,omitempty" hcl:"dest,omitempty"` Overlay string `json:"overlay,omitempty" yaml:"overlay,omitempty" hcl:"overlay,omitempty"` }
Kustomize is a lifeycle step to generate overlays for generated assets. It does not take a kustomization.yml, rather it will generate one in the .ship/ folder
func (*Kustomize) OverlayPath ¶ added in v0.16.0
func (*Kustomize) Shared ¶
func (k *Kustomize) Shared() *StepShared
type KustomizeIntro ¶
type KustomizeIntro struct {
}KustomizeIntro is a lifeycle step to display an informative intro page for kustomize
func (*KustomizeIntro) Shared ¶
func (k *KustomizeIntro) Shared() *StepShared
func (*KustomizeIntro) ShortName ¶
func (k *KustomizeIntro) ShortName() string
type Lifecycle ¶
type Lifecycle struct {
V1 []Step `json:"v1,omitempty" yaml:"v1,omitempty" hcl:"v1,omitempty"`
}
A Lifecycle is the top-level lifecycle object
type LocalAsset ¶ added in v0.27.0
type LocalAsset struct { Path string `json:"path" yaml:"path" hcl:"path"` }
LocalAsset is an asset whose contents are on the local fs
type LocalHelmOpts ¶
type LocalHelmOpts struct {
ChartRoot string `json:"chart_root" yaml:"chart_root" hcl:"chart_root"`
}
LocalHelmOpts specifies a helm chart that should be templated using other assets that are already present at `ChartRoot`
type Message ¶
type Message struct { Contents string `json:"contents" yaml:"contents" hcl:"contents"` Level string `json:"level,omitempty" yaml:"level,omitempty" hcl:"level,omitempty"` }
Message is a lifeycle step to print a message
func (*Message) Shared ¶
func (m *Message) Shared() *StepShared
type Meta ¶ added in v0.24.0
type Meta struct { LastUpdated time.Time `json:"last_updated"` CustomerID string `json:"customer_id"` }
Meta describes metadata about an entitlements payload
type Release ¶
type Release struct { Metadata ReleaseMetadata Spec Spec }
Release
func (*Release) FindRenderRoot ¶ added in v0.21.0
func (*Release) FindRenderStep ¶ added in v0.16.0
type ReleaseMetadata ¶
type ReleaseMetadata struct { ReleaseID string `json:"releaseId" yaml:"releaseId" hcl:"releaseId" meta:"release-id"` CustomerID string `json:"customerId" yaml:"customerId" hcl:"customerId" meta:"customer-id"` InstallationID string `json:"installation" yaml:"installation" hcl:"installation" meta:"installation-id"` ChannelID string `json:"channelId" yaml:"channelId" hcl:"channelId" meta:"channel-id"` AppSlug string `json:"appSlug" yaml:"appSlug" hcl:"appSlug" meta:"app-slug"` LicenseID string `json:"licenseId" yaml:"licenseId" hcl:"licenseId" meta:"license-id"` ChannelName string `json:"channelName" yaml:"channelName" hcl:"channelName" meta:"channel-name"` ChannelIcon string `json:"channelIcon" yaml:"channelIcon" hcl:"channelIcon" meta:"channel-icon"` Semver string `json:"semver" yaml:"semver" hcl:"semver" meta:"release-version"` ReleaseNotes string `json:"releaseNotes" yaml:"releaseNotes" hcl:"releaseNotes" meta:"release-notes"` Created string `json:"created" yaml:"created" hcl:"created" meta:"release-date"` RegistrySecret string `json:"registrySecret" yaml:"registrySecret" hcl:"registrySecret" meta:"registry-secret"` Images []Image `json:"images" yaml:"images" hcl:"images" meta:"images"` GithubContents []GithubContent `json:"githubContents" yaml:"githubContents" hcl:"githubContents" meta:"githubContents"` ShipAppMetadata ShipAppMetadata `json:"shipAppMetadata" yaml:"shipAppMetadata" hcl:"shipAppMetadata" meta:"shipAppMetadata"` Entitlements Entitlements `json:"entitlements" yaml:"entitlements" hcl:"entitlements" meta:"entitlements"` Type string `json:"type" yaml:"type" hcl:"type" meta:"type"` }
ReleaseMetadata
func (ReleaseMetadata) ReleaseName ¶
func (r ReleaseMetadata) ReleaseName() string
type Render ¶
type Render struct { Root string `json:"root,omitempty" yaml:"root,omitempty" hcl:"root,omitempty"` }
Render is a lifeycle step to collect config and render assets
func (*Render) RenderRoot ¶ added in v0.21.0
func (*Render) Shared ¶
func (r *Render) Shared() *StepShared
type ShipAppMetadata ¶
type ShipAppMetadata struct { Description string `json:"description" yaml:"description" hcl:"description" meta:"description"` Version string `json:"version" yaml:"version" hcl:"version" meta:"version"` Icon string `json:"icon" yaml:"icon" hcl:"icon" meta:"icon"` Name string `json:"name" yaml:"name" hcl:"name" meta:"name"` Readme string `json:"readme" yaml:"readme" hcl:"readme" meta:"readme"` URL string `json:"url" yaml:"url" hcl:"url" meta:"url"` ContentSHA string `json:"contentSHA" yaml:"contentSHA" hcl:"contentSHA" meta:"contentSHA"` ReleaseNotes string `json:"releaseNotes" yaml:"releaseNotes" hcl:"releaseNotes" meta:"release-notes"` }
type Spec ¶
type Spec struct { Assets Assets `json:"assets" yaml:"assets" hcl:"asset"` Lifecycle Lifecycle `json:"lifecycle" yaml:"lifecycle" hcl:"lifecycle"` Config Config `json:"config" yaml:"config" hcl:"config"` }
Spec is the top level Ship document that defines an application
type Step ¶
type Step struct { Message *Message `json:"message,omitempty" yaml:"message,omitempty" hcl:"message,omitempty"` Config *ConfigStep `json:"config,omitempty" yaml:"config,omitempty" hcl:"config,omitempty"` Render *Render `json:"render,omitempty" yaml:"render,omitempty" hcl:"render,omitempty"` Terraform *Terraform `json:"terraform,omitempty" yaml:"terraform,omitempty" hcl:"terraform,omitempty"` Kustomize *Kustomize `json:"kustomize,omitempty" yaml:"kustomize,omitempty" hcl:"kustomize,omitempty"` Unfork *Unfork `json:"unfork,omitempty" yaml:"unfork,omitempty" hcl:"unfork,omitempty"` KustomizeIntro *KustomizeIntro `json:"kustomizeIntro,omitempty" yaml:"kustomizeIntro,omitempty" hcl:"kustomizeIntro,omitempty"` HelmIntro *HelmIntro `json:"helmIntro,omitempty" yaml:"helmIntro,omitempty" hcl:"helmIntro,omitempty"` HelmValues *HelmValues `json:"helmValues,omitempty" yaml:"helmValues,omitempty" hcl:"helmValues,omitempty"` KubectlApply *KubectlApply `json:"kubectlApply,omitempty" yaml:"kubectlApply,omitempty" hcl:"kubectlApply,omitempty"` }
Step represents vendor-customized configuration steps & messaging
func (Step) GetStep ¶
func (s Step) GetStep() StepDetails
func (Step) Shared ¶
func (s Step) Shared() *StepShared
type StepDetails ¶
type StepDetails interface { ShortName() string }
type StepShared ¶
type StepShared struct {}
type Terraform ¶
type Terraform struct { Path string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"` When string `json:"when,omitempty" yaml:"when,omitempty" hcl:"when,omitempty"` }
Terraform is a lifeycle step to execute `apply` for a runbook's terraform asset
func (*Terraform) Shared ¶
func (t *Terraform) Shared() *StepShared
type TerraformAsset ¶
type TerraformAsset struct { // GitHub references a github asset from which to pull a terraform module GitHub *GitHubAsset `json:"github" yaml:"github" hcl:"github"` // Inline allows a vendor to specify a terraform module inline in ship Inline string `json:"inline,omitempty" yaml:"inline,omitempty" hcl:"inline,omitempty"` }
TerraformAsset
type Unfork ¶ added in v0.27.0
type Unfork struct { UpstreamBase string `json:"upstreamBase" yaml:"upstreamBase" hcl:"upstreamBase"` ForkedBase string `json:"forkedBase" yaml:"forkedBase" hcl:"forkedBase"` Dest string `json:"dest,omitempty" yaml:"dest,omitempty" hcl:"dest,omitempty"` Overlay string `json:"overlay,omitempty" yaml:"overlay,omitempty" hcl:"overlay,omitempty"` }
Unfork is a lifecycle step to generate patches and overlays for two generates assets that consist of raw K8S YAML
func (*Unfork) OverlayPath ¶ added in v0.27.0
func (*Unfork) Shared ¶ added in v0.27.0
func (u *Unfork) Shared() *StepShared
type Utilization ¶ added in v0.24.0
Utilization is a single utilization value
type ValuesFrom ¶
type ValuesFrom struct { Path string `json:"path,omitempty" yaml:"path,omitempty" hcl:"path,omitempty"` // SaveToState is used when a HelmValues step is not part of the lifecycle (e.g. Unfork) in order to save // the merged helm values to state. SaveToState bool `json:"save_to_state,omitempty" yaml:"save_to_state,omitempty" hcl:"save_to_state,omitempty"` }
type ValuesFromLifecycle ¶
type ValuesFromLifecycle struct{}
type WebAsset ¶
type WebAsset struct { Body string `json:"body" yaml:"body" hcl:"body"` BodyFormat string `json:"bodyFormat" yaml:"bodyFormat" hcl:"bodyFormat"` Headers map[string][]string `json:"headers" yaml:"headers" hcl:"headers"` Method string `json:"method" yaml:"method" hcl:"method"` URL string `json:"url" yaml:"url" hcl:"url"` }
WebAsset is an asset whose contents are specified by the HTML at the corresponding URL