config

package
v1.230.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2022 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const InfluxField = "field"

InfluxField is the constant for an Influx field

View Source
const InfluxTag = "tag"

InfluxTag is the constant for an Influx field

Variables

View Source
var (

	// VaultRootPaths are the lookup paths piper tries to use during the vault lookup.
	// A path is only used if it's variables can be interpolated from the config
	VaultRootPaths = []string{
		"$(vaultPath)",
		"$(vaultBasePath)/$(vaultPipelineName)",
		"$(vaultBasePath)/GROUP-SECRETS",
	}

	// VaultSecretFileDirectory holds the directory for the current step run to temporarily store secret files fetched from vault
	VaultSecretFileDirectory = ""
)
View Source
var ReportingParameters = ReportingParams{
	Parameters: []StepParameters{
		{
			Name:    "gcpJsonKeyFilePath",
			Aliases: []Alias{{Name: "jsonKeyFilePath"}},
			ResourceRef: []ResourceReference{
				{
					Name:    "gcpFileVaultSecretName",
					Type:    "vaultSecretFile",
					Default: "gcp",
				},
			},
		},
		{
			Name: "gcsFolderPath",
			ResourceRef: []ResourceReference{
				{
					Name:  "commonPipelineEnvironment",
					Param: "custom/gcsFolderPath",
				},
			},
		},
		{
			Name:    "gcsBucketId",
			Aliases: []Alias{{Name: "pipelineId"}},
		},
		{
			Name: "gcsSubFolder",
		},
	},
}

ReportingParameters is a global variable with values of reporting parameters

Functions

func ApplyContainerConditions

func ApplyContainerConditions(containers []Container, stepConfig *StepConfig)

ApplyContainerConditions evaluates conditions in step yaml container definitions

func AvailableFlagValues

func AvailableFlagValues(cmd *cobra.Command, filters *StepFilters) map[string]interface{}

AvailableFlagValues returns all flags incl. values which are available to the command.

func EnvVarsAsMap

func EnvVarsAsMap(envVars []EnvVar) map[string]string

EnvVarsAsMap converts container EnvVars into a map as required by dockerExecute

func GetJSON

func GetJSON(data interface{}) (string, error)

GetJSON returns JSON representation of an object

func GetYAML

func GetYAML(data interface{}) (string, error)

GetYAML returns YAML representation of an object

func MarkFlagsWithValue

func MarkFlagsWithValue(cmd *cobra.Command, stepConfig StepConfig)

MarkFlagsWithValue marks a flag as changed if value is available for the flag through the step configuration.

func OpenPiperFile

func OpenPiperFile(name string, accessTokens map[string]string) (io.ReadCloser, error)

OpenPiperFile provides functionality to retrieve configuration via file or http

func OptionsAsStringSlice

func OptionsAsStringSlice(options []Option) []string

OptionsAsStringSlice converts container options into a string slice as required by dockerExecute

func RemoveVaultSecretFiles

func RemoveVaultSecretFiles()

RemoveVaultSecretFiles removes all secret files that have been created during execution

Types

type Alias

type Alias struct {
	Name       string `json:"name,omitempty"`
	Deprecated bool   `json:"deprecated,omitempty"`
}

Alias defines a step input parameter alias

type Condition

type Condition struct {
	ConditionRef string  `json:"conditionRef"`
	Params       []Param `json:"params"`
}

Condition defines an condition which decides when the parameter, resource or container is valid

type Config

type Config struct {
	CustomDefaults []string                          `json:"customDefaults,omitempty"`
	General        map[string]interface{}            `json:"general"`
	Stages         map[string]map[string]interface{} `json:"stages"`
	Steps          map[string]map[string]interface{} `json:"steps"`
	Hooks          map[string]interface{}            `json:"hooks,omitempty"`
	// contains filtered or unexported fields
}

Config defines the structure of the config files

func (*Config) ApplyAliasConfig

func (c *Config) ApplyAliasConfig(parameters []StepParameters, secrets []StepSecrets, filters StepFilters, stageName, stepName string, stepAliases []Alias)

ApplyAliasConfig adds configuration values available on aliases to primary configuration parameters

func (*Config) GetStageConfig

func (c *Config) GetStageConfig(paramJSON string, configuration io.ReadCloser, defaults []io.ReadCloser, ignoreCustomDefaults bool, acceptedParams []string, stageName string) (StepConfig, error)

func (*Config) GetStepConfig

func (c *Config) GetStepConfig(flagValues map[string]interface{}, paramJSON string, configuration io.ReadCloser, defaults []io.ReadCloser, ignoreCustomDefaults bool, filters StepFilters, metadata StepData, envParameters map[string]interface{}, stageName, stepName string) (StepConfig, error)

GetStepConfig provides merged step configuration using defaults, config, if available

func (*Config) InitializeConfig

func (c *Config) InitializeConfig(configuration io.ReadCloser, defaults []io.ReadCloser, ignoreCustomDefaults bool) error

InitializeConfig prepares the config object, i.e. loading content, etc.

func (*Config) ReadConfig

func (c *Config) ReadConfig(configuration io.ReadCloser) error

ReadConfig loads config and returns its content

func (*Config) SetVaultCredentials

func (c *Config) SetVaultCredentials(appRoleID, appRoleSecretID string, vaultToken string)

SetVaultCredentials sets the appRoleID and the appRoleSecretID or the vaultTokento load additional configuration from vault Either appRoleID and appRoleSecretID or vaultToken must be specified.

type Container

type Container struct {
	//ToDo: check dockerOptions, dockerVolumeBind, containerPortMappings, sidecarOptions, sidecarVolumeBind
	Command         []string    `json:"command"`
	EnvVars         []EnvVar    `json:"env"`
	Image           string      `json:"image"`
	ImagePullPolicy string      `json:"imagePullPolicy"`
	Name            string      `json:"name"`
	ReadyCommand    string      `json:"readyCommand"`
	Shell           string      `json:"shell"`
	WorkingDir      string      `json:"workingDir"`
	Conditions      []Condition `json:"conditions,omitempty"`
	Options         []Option    `json:"options,omitempty"`
}

Container defines an execution container

type EnvVar

type EnvVar struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

EnvVar defines an environment variable

type Metadata

type Metadata struct {
	Name        string `json:"name,omitempty"`
	DisplayName string `json:"displayName,omitempty"`
	Description string `json:"description,omitempty"`
}

type Option

type Option struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

Option defines an docker option

type Param

type Param struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

Param defines the parameters serving as inputs to the condition

type ParameterDependence

type ParameterDependence struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type ParseError

type ParseError struct {
	// contains filtered or unexported fields
}

ParseError defines an error type for configuration parsing errors

func NewParseError

func NewParseError(message string) *ParseError

NewParseError creates a new ParseError

func (*ParseError) Error

func (e *ParseError) Error() string

Error returns the message of the ParseError

type PipelineDefaults

type PipelineDefaults struct {
	Defaults []Config `json:"defaults"`
}

PipelineDefaults defines the structure of the pipeline defaults

func (*PipelineDefaults) ReadPipelineDefaults

func (d *PipelineDefaults) ReadPipelineDefaults(defaultSources []io.ReadCloser) error

ReadPipelineDefaults loads defaults and returns its content

type PipelineDefinitionV1

type PipelineDefinitionV1 struct {
	APIVersion string   `json:"apiVersion"`
	Kind       string   `json:"kind"`
	Metadata   Metadata `json:"metadata"`
	Spec       Spec     `json:"spec"`
	// contains filtered or unexported fields
}

type ReportingParams

type ReportingParams struct {
	Parameters []StepParameters
}

ReportingParams holds reporting parameters

func (ReportingParams) GetResourceParameters

func (r ReportingParams) GetResourceParameters(path, name string) map[string]interface{}

GetResourceParameters retrieves reporting parameters from a named pipeline resource with a defined path

type ResourceReference

type ResourceReference struct {
	Name    string  `json:"name"`
	Type    string  `json:"type,omitempty"`
	Param   string  `json:"param,omitempty"`
	Default string  `json:"default,omitempty"`
	Aliases []Alias `json:"aliases,omitempty"`
}

ResourceReference defines the parameters of a resource reference

type RunConfig

type RunConfig struct {
	StageConfigFile io.ReadCloser
	StageConfig     StageConfig
	RunStages       map[string]bool
	RunSteps        map[string]map[string]bool
	OpenFile        func(s string, t map[string]string) (io.ReadCloser, error)
	FileUtils       *piperutils.Files
}

RunConfig ...

func (*RunConfig) InitRunConfig

func (r *RunConfig) InitRunConfig(config *Config, filters map[string]StepFilters, parameters map[string][]StepParameters,
	secrets map[string][]StepSecrets, stepAliases map[string][]Alias, glob func(pattern string) (matches []string, err error),
	openFile func(s string, t map[string]string) (io.ReadCloser, error)) error

InitRunConfig ...

type RunConfigV1

type RunConfigV1 struct {
	RunConfig
	PipelineConfig PipelineDefinitionV1
}

func (*RunConfigV1) InitRunConfigV1

func (r *RunConfigV1) InitRunConfigV1(config *Config, filters map[string]StepFilters, parameters map[string][]StepParameters,
	secrets map[string][]StepSecrets, stepAliases map[string][]Alias, utils piperutils.FileUtils, envRootPath string) error

func (*RunConfigV1) LoadConditionsV1

func (r *RunConfigV1) LoadConditionsV1() error

LoadConditionsV1 loads stage conditions (in CRD-style) into PipelineConfig

type Spec

type Spec struct {
	Stages []Stage `json:"stages"`
}

type Stage

type Stage struct {
	Name        string `json:"name,omitempty"`
	DisplayName string `json:"displayName,omitempty"`
	Description string `json:"description,omitempty"`
	Steps       []Step `json:"steps,omitempty"`
}

type StageConfig

type StageConfig struct {
	Stages map[string]StepConditions `json:"stages,omitempty"`
}

type Step

type Step struct {
	Name                string          `json:"name,omitempty"`
	Description         string          `json:"description,omitempty"`
	Conditions          []StepCondition `json:"conditions,omitempty"`
	NotActiveConditions []StepCondition `json:"notActiveConditions,omitempty"`
	Orchestrators       []string        `json:"orchestrators,omitempty"`
}

type StepCondition

type StepCondition struct {
	Config                    map[string][]interface{} `json:"config,omitempty"`
	ConfigKey                 string                   `json:"configKey,omitempty"`
	FilePattern               string                   `json:"filePattern,omitempty"`
	FilePatternFromConfig     string                   `json:"filePatternFromConfig,omitempty"`
	Inactive                  bool                     `json:"inactive,omitempty"`
	NpmScript                 string                   `json:"npmScript,omitempty"`
	CommonPipelineEnvironment map[string]interface{}   `json:"commonPipelineEnvironment,omitempty"`
}

type StepConditions

type StepConditions struct {
	Conditions map[string]map[string]interface{} `json:"stepConditions,omitempty"`
}

type StepConfig

type StepConfig struct {
	Config     map[string]interface{}
	HookConfig map[string]interface{}
}

StepConfig defines the structure for merged step configuration

func GetStepConfigWithJSON

func GetStepConfigWithJSON(flagValues map[string]interface{}, stepConfigJSON string, filters StepFilters) StepConfig

GetStepConfigWithJSON provides merged step configuration using a provided stepConfigJSON with additional flags provided

type StepData

type StepData struct {
	Metadata StepMetadata `json:"metadata"`
	Spec     StepSpec     `json:"spec"`
}

StepData defines the metadata for a step, like step descriptions, parameters, ...

func ResolveMetadata

func ResolveMetadata(gitHubTokens map[string]string, metaDataResolver func() map[string]StepData, stepMetadata string, stepName string) (StepData, error)

func (*StepData) GetContextDefaults

func (m *StepData) GetContextDefaults(stepName string) (io.ReadCloser, error)

GetContextDefaults retrieves context defaults like container image, name, env vars, resources, ... It only supports scenarios with one container and optionally one sidecar

func (*StepData) GetContextParameterFilters

func (m *StepData) GetContextParameterFilters() StepFilters

GetContextParameterFilters retrieves all scope dependent parameter filters

func (*StepData) GetParameterFilters

func (m *StepData) GetParameterFilters() StepFilters

GetParameterFilters retrieves all scope dependent parameter filters

func (*StepData) GetResourceParameters

func (m *StepData) GetResourceParameters(path, name string) map[string]interface{}

GetResourceParameters retrieves parameters from a named pipeline resource with a defined path

func (*StepData) HasReference

func (m *StepData) HasReference(refType string) bool

HasReference checks whether StepData contains a parameter that has Reference with the given type

func (*StepData) ReadPipelineStepData

func (m *StepData) ReadPipelineStepData(metadata io.ReadCloser) error

ReadPipelineStepData loads step definition in yaml format

type StepFilters

type StepFilters struct {
	All        []string
	General    []string
	Stages     []string
	Steps      []string
	Parameters []string
	Env        []string
}

StepFilters defines the filter parameters for the different sections

type StepInputs

type StepInputs struct {
	Parameters []StepParameters `json:"params"`
	Resources  []StepResources  `json:"resources,omitempty"`
	Secrets    []StepSecrets    `json:"secrets,omitempty"`
}

StepInputs defines the spec details for a step, like step inputs, containers, sidecars, ...

type StepMetadata

type StepMetadata struct {
	Name            string  `json:"name"`
	Aliases         []Alias `json:"aliases,omitempty"`
	Description     string  `json:"description"`
	LongDescription string  `json:"longDescription,omitempty"`
}

StepMetadata defines the metadata for a step, like step descriptions, parameters, ...

type StepOutputs

type StepOutputs struct {
	Resources []StepResources `json:"resources,omitempty"`
}

StepOutputs defines the outputs of a step step, typically one or multiple resources

type StepParameters

type StepParameters struct {
	Name               string                `json:"name"`
	Description        string                `json:"description"`
	LongDescription    string                `json:"longDescription,omitempty"`
	ResourceRef        []ResourceReference   `json:"resourceRef,omitempty"`
	Scope              []string              `json:"scope"`
	Type               string                `json:"type"`
	Mandatory          bool                  `json:"mandatory,omitempty"`
	Default            interface{}           `json:"default,omitempty"`
	PossibleValues     []interface{}         `json:"possibleValues,omitempty"`
	Aliases            []Alias               `json:"aliases,omitempty"`
	Conditions         []Condition           `json:"conditions,omitempty"`
	Secret             bool                  `json:"secret,omitempty"`
	MandatoryIf        []ParameterDependence `json:"mandatoryIf,omitempty"`
	DeprecationMessage string                `json:"deprecationMessage,omitempty"`
}

StepParameters defines the parameters for a step

func (*StepParameters) GetReference

func (m *StepParameters) GetReference(refType string) *ResourceReference

GetReference returns the ResourceReference of the given type

type StepResources

type StepResources struct {
	Name        string                   `json:"name"`
	Description string                   `json:"description,omitempty"`
	Type        string                   `json:"type,omitempty"`
	Parameters  []map[string]interface{} `json:"params,omitempty"`
	Conditions  []Condition              `json:"conditions,omitempty"`
}

StepResources defines the resources to be provided by the step context, e.g. Jenkins pipeline

type StepSecrets

type StepSecrets struct {
	Name        string  `json:"name"`
	Description string  `json:"description,omitempty"`
	Type        string  `json:"type,omitempty"`
	Aliases     []Alias `json:"aliases,omitempty"`
}

StepSecrets defines the secrets to be provided by the step context, e.g. Jenkins pipeline

type StepSpec

type StepSpec struct {
	Inputs     StepInputs  `json:"inputs,omitempty"`
	Outputs    StepOutputs `json:"outputs,omitempty"`
	Containers []Container `json:"containers,omitempty"`
	Sidecars   []Container `json:"sidecars,omitempty"`
}

StepSpec defines the spec details for a step, like step inputs, containers, sidecars, ...

type VaultCredentials

type VaultCredentials struct {
	AppRoleID       string
	AppRoleSecretID string
	VaultToken      string
}

VaultCredentials hold all the auth information needed to fetch configuration from vault

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL