Configuration reference

This page describes all configurable fields in the application configuration and analysis template.

Kubernetes Application

apiVersion: pipecd.dev/v1beta1
kind: KubernetesApp
spec:
  input:
  pipeline:
  ...
FieldTypeDescriptionRequired
namestringThe application name.Yes (if you want to create PipeCD application through the application configuration file)
labelsmap[string]stringAdditional attributes to identify applications.No
descriptionstringNotes on the Application.No
inputKubernetesDeploymentInputInput for Kubernetes deployment such as kubectl version, helm version, manifests filter…No
triggerDeploymentTriggerConfiguration for trigger used to determine should we trigger a new deployment or not.No
plannerDeploymentPlannerConfiguration for planner used while planning deployment.No
commitMatcherCommitMatcherForcibly use QuickSync or Pipeline when commit message matched the specified pattern.No
quickSyncKubernetesQuickSyncConfiguration for quick sync.No
pipelinePipelinePipeline for deploying progressively.No
serviceKubernetesServiceWhich Kubernetes resource should be considered as the Service of application. Empty means the first Service resource will be used.No
workloads[]KubernetesWorkloadWhich Kubernetes resources should be considered as the Workloads of application. Empty means all Deployment resources.No
trafficRoutingKubernetesTrafficRoutingHow to change traffic routing percentages.No
encryptionSecretEncryptionList of encrypted secrets and targets that should be decrypted before using.No
attachmentAttachmentList of attachment sources and targets that should be attached to manifests before using.No
timeoutdurationThe maximum length of time to execute deployment before giving up. Default is 6h.No
notificationDeploymentNotificationAdditional configuration used while sending notification to external services.No
postSyncPostSyncAdditional configuration used as extra actions once the deployment is triggered.No
variantLabelKubernetesVariantLabelThe label will be configured to variant manifests used to distinguish them.No
eventWatcher[]EventWatcherList of configurations for event watcher.No
driftDetectionDriftDetectionConfiguration for drift detection.No

Annotations

Kubernetes resources can be managed by some annotations provided by PipeCD.

Annotation keyTarget resource(s)Possible valuesDescription
pipecd.dev/ignore-drift-detectionany“true”Whether the drift detection should ignore this resource.
pipecd.dev/server-side-applyany“true”Use server side apply instead of client side apply.
pipecd.dev/sync-by-replaceany“enabled”Use replace instead of apply.
pipecd.dev/force-sync-by-replaceany“enabled”Use replace --force instead of apply.

Terraform application

apiVersion: pipecd.dev/v1beta1
kind: TerraformApp
spec:
  input:
  pipeline:
  ...
FieldTypeDescriptionRequired
namestringThe application name.Yes if you set the application through the application configuration file
labelsmap[string]stringAdditional attributes to identify applications.No
descriptionstringNotes on the Application.No
inputTerraformDeploymentInputInput for Terraform deployment such as terraform version, workspace…No
triggerDeploymentTriggerConfiguration for trigger used to determine should we trigger a new deployment or not.No
plannerDeploymentPlannerConfiguration for planner used while planning deployment.No
quickSyncTerraformQuickSyncConfiguration for quick sync.No
pipelinePipelinePipeline for deploying progressively.No
encryptionSecretEncryptionList of encrypted secrets and targets that should be decrypted before using.No
attachmentAttachmentList of attachment sources and targets that should be attached to manifests before using.No
timeoutdurationThe maximum length of time to execute deployment before giving up. Default is 6h.No
notificationDeploymentNotificationAdditional configuration used while sending notification to external services.No
postSyncPostSyncAdditional configuration used as extra actions once the deployment is triggered.No
eventWatcher[]EventWatcherList of configurations for event watcher.No

Cloud Run application

apiVersion: pipecd.dev/v1beta1
kind: CloudRunApp
spec:
  input:
  pipeline:
  ...
FieldTypeDescriptionRequired
namestringThe application name.Yes if you set the application through the application configuration file
labelsmap[string]stringAdditional attributes to identify applications.No
descriptionstringNotes on the Application.No
inputCloudRunDeploymentInputInput for Cloud Run deployment such as docker image…No
triggerDeploymentTriggerConfiguration for trigger used to determine should we trigger a new deployment or not.No
plannerDeploymentPlannerConfiguration for planner used while planning deployment.No
quickSyncCloudRunQuickSyncConfiguration for quick sync.No
pipelinePipelinePipeline for deploying progressively.No
encryptionSecretEncryptionList of encrypted secrets and targets that should be decrypted before using.No
attachmentAttachmentList of attachment sources and targets that should be attached to manifests before using.No
timeoutdurationThe maximum length of time to execute deployment before giving up. Default is 6h.No
notificationDeploymentNotificationAdditional configuration used while sending notification to external services.No
postSyncPostSyncAdditional configuration used as extra actions once the deployment is triggered.No
eventWatcher[]EventWatcherList of configurations for event watcher.No

Lambda application

apiVersion: pipecd.dev/v1beta1
kind: LambdaApp
spec:
  pipeline:
  ...
FieldTypeDescriptionRequired
namestringThe application name.Yes if you set the application through the application configuration file
labelsmap[string]stringAdditional attributes to identify applications.No
descriptionstringNotes on the Application.No
inputLambdaDeploymentInputInput for Lambda deployment such as path to function manifest file…No
architectures[]stringSpecific architecture for which a function supports (Default x86_64).No
triggerDeploymentTriggerConfiguration for trigger used to determine should we trigger a new deployment or not.No
plannerDeploymentPlannerConfiguration for planner used while planning deployment.No
quickSyncLambdaQuickSyncConfiguration for quick sync.No
pipelinePipelinePipeline for deploying progressively.No
encryptionSecretEncryptionList of encrypted secrets and targets that should be decrypted before using.No
attachmentAttachmentList of attachment sources and targets that should be attached to manifests before using.No
timeoutdurationThe maximum length of time to execute deployment before giving up. Default is 6h.No
notificationDeploymentNotificationAdditional configuration used while sending notification to external services.No
postSyncPostSyncAdditional configuration used as extra actions once the deployment is triggered.No
eventWatcher[]EventWatcherList of configurations for event watcher.No

ECS application

apiVersion: pipecd.dev/v1beta1
kind: ECSApp
spec:
  input:
  pipeline:
  ...
FieldTypeDescriptionRequired
namestringThe application name.Yes if you set the application through the application configuration file
labelsmap[string]stringAdditional attributes to identify applications.No
descriptionstringNotes on the Application.No
inputECSDeploymentInputInput for ECS deployment such as path to TaskDefinition, Service…No
triggerDeploymentTriggerConfiguration for trigger used to determine should we trigger a new deployment or not.No
plannerDeploymentPlannerConfiguration for planner used while planning deployment.No
quickSyncECSQuickSyncConfiguration for quick sync.No
pipelinePipelinePipeline for deploying progressively.No
encryptionSecretEncryptionList of encrypted secrets and targets that should be decrypted before using.No
attachmentAttachmentList of attachment sources and targets that should be attached to manifests before using.No
timeoutdurationThe maximum length of time to execute deployment before giving up. Default is 6h.No
notificationDeploymentNotificationAdditional configuration used while sending notification to external services.No
postSyncPostSyncAdditional configuration used as extra actions once the deployment is triggered.No
eventWatcher[]EventWatcherList of configurations for event watcher.No

Analysis Template Configuration

apiVersion: pipecd.dev/v1beta1
kind: AnalysisTemplate
spec:
  metrics:
    grpc_error_rate_percentage:
      interval: 1m
      provider: prometheus-dev
      failureLimit: 1
      expected:
        max: 10
      query: awesome_query
FieldTypeDescriptionRequired
metricsmap[string]AnalysisMetricsTemplate for metrics.No

Event Watcher Configuration (deprecated)

apiVersion: pipecd.dev/v1beta1
kind: EventWatcher
spec:
  events:
    - name: helloworld-image-update
      replacements:
        - file: helloworld/deployment.yaml
          yamlField: $.spec.template.spec.containers[0].image
FieldTypeDescriptionRequired
namestringThe event name.Yes
labelsmap[string]stringAdditional attributes of event. This can make an event definition unique even if the one with the same name exists.No
replacements[]EventWatcherReplacementList of places where will be replaced when the new event matches.Yes

EventWatcherReplacement

One of yamlField or regex is required.

FieldTypeDescriptionRequired
filestringThe relative path from the repository root to the file to be updated.Yes
yamlFieldstringThe yaml path to the field to be updated. It requires to start with $ which represents the root element. e.g. $.foo.bar[0].baz.No
regexstringThe regex string that specify what should be replaced. The only first capturing group enclosed by () will be replaced with the new value. e.g. host.xz/foo/bar:(v[0-9].[0-9].[0-9])No

CommitMatcher

FieldTypeDescriptionRequired
quickSyncstringRegular expression string to forcibly do QuickSync when it matches the commit message.No
pipelinestringRegular expression string to forcibly do Pipeline when it matches the commit message.No

SecretEncryption

FieldTypeDescriptionRequired
encryptedSecretsmap[string]stringList of encrypted secrets.No
decryptionTargets[]stringList of files to be decrypted before using.No

Attachment

FieldTypeDescriptionRequired
sourcesmap[string]stringList of attaching files with key is its refer name.No
targets[]stringList of files which should contain the attachments.No

DeploymentPlanner

FieldTypeDescriptionRequired
alwaysUsePipelineboolAlways use the defined pipeline to deploy the application in all deployments. Default is false.No

DeploymentTrigger

FieldTypeDescriptionRequired
onCommitOnCommitControls triggering new deployment when new Git commits touched the application.No
onCommandOnCommandControls triggering new deployment when received a new SYNC command.No
onOutOfSyncOnOutOfSyncControls triggering new deployment when application is at OUT_OF_SYNC state.No
onChainOnChainControls triggering new deployment when the application is counted as a node of some chains.No

OnCommit

FieldTypeDescriptionRequired
disabledboolWhether to exclude application from triggering target when new Git commits touched it. Default is false.No
paths[]stringList of directories or files where any changes of them will be considered as touching the application. Regular expression can be used. Empty means watching all changes under the application directory.No
ignores[]stringList of directories or files where any changes of them will NOT be considered as touching the application. Regular expression can be used. This config has a higher priority compare to paths.No

OnCommand

FieldTypeDescriptionRequired
disabledboolWhether to exclude application from triggering target when received a new SYNC command. Default is false.No

OnOutOfSync

FieldTypeDescriptionRequired
disabledboolWhether to exclude application from triggering target when application is at OUT_OF_SYNC state. Default is true.No
minWindowdurationMinimum amount of time must be elapsed since the last deployment. This can be used to avoid triggering unnecessary continuous deployments based on OUT_OF_SYNC status. Default is 5m.No

OnChain

FieldTypeDescriptionRequired
disabledboolWhether to exclude application from triggering target when application is counted as a node of some chains. Default is true.No

Pipeline

FieldTypeDescriptionRequired
stages[]PipelineStageList of deployment pipeline stages.No

PipelineStage

FieldTypeDescriptionRequired
idstringThe unique ID of the stage.No
namestringOne of the provided stage names.Yes
descstringThe description about the stage.No
timeoutdurationThe maximum time the stage can be taken to run.No
withStageOptionsSpecific configuration for the stage. This must be one of these StageOptions.No

DeploymentNotification

FieldTypeDescriptionRequired
mentions[]NotificationMentionList of users to be notified for each event.No

NotificationMention

FieldTypeDescriptionRequired
eventstringThe event to be notified to users.Yes
slack[]stringDeprecated: Please use slackUsers instead. List of user IDs for mentioning in Slack. See here for more information on how to check them.No
slackUsers[]stringList of user IDs for mentioning in Slack. See here for more information on how to check them.No
slackGroups[]stringList of group IDs for mentioning in Slack. See here for more information on how to check them.No

KubernetesDeploymentInput

FieldTypeDescriptionRequired
manifests[]stringList of manifest files in the application directory used to deploy. Empty means all manifest files in the directory will be used.No
kubectlVersionstringVersion of kubectl will be used. Empty means the version set on piped config or default version will be used.No
kustomizeVersionstringVersion of kustomize will be used. Empty means the default version will be used.No
kustomizeOptionsmap[string]stringList of options that should be used by Kustomize commands.No
helmVersionstringVersion of helm will be used. Empty means the default version will be used.No
helmChartHelmChartWhere to fetch helm chart.No
helmOptionsHelmOptionsConfigurable parameters for helm commands.No
namespacestringThe namespace where manifests will be applied.No
autoRollbackboolAutomatically reverts all deployment changes on failure. Default is true.No
autoCreateNamespaceboolAutomatically create a new namespace if it does not exist. Default is false.No

HelmChart

FieldTypeDescriptionRequired
gitRemotestringGit remote address where the chart is placing. Empty means the same repository.No
refstringThe commit SHA or tag value. Only valid when gitRemote is not empty.No
pathstringRelative path from the repository root to the chart directory.No
repositorystringThe name of a registered Helm Chart Repository.No
namestringThe chart name.No
versionstringThe chart version.No

HelmOptions

FieldTypeDescriptionRequired
releaseNamestringThe release name of helm deployment. By default, the release name is equal to the application name.No
setValuesmap[string]stringList of values.No
valueFiles[]stringList of value files should be loaded. Only local files stored under the application directory or remote files served at the http(s) endpoint are allowed.No
setFilesmap[string]stringList of file path for values.No
apiVersions[]stringKubernetes api versions used for Capabilities.APIVersions.No
kubeVersionstringKubernetes version used for Capabilities.KubeVersion.No

KubernetesVariantLabel

FieldTypeDescriptionRequired
keystringThe key of the label. Default is pipecd.dev/variant.No
primaryValuestringThe label value for PRIMARY variant. Default is primary.No
canaryValuestringThe label value for CANARY variant. Default is canary.No
baselineValuestringThe label value for BASELINE variant. Default is baseline.No

KubernetesQuickSync

FieldTypeDescriptionRequired
addVariantLabelToSelectorboolWhether the PRIMARY variant label should be added to manifests if they were missing. Default is false.No
pruneboolWhether the resources that are no longer defined in Git should be removed or not. Default is falseNo

KubernetesService

FieldTypeDescriptionRequired
namestringThe name of Service manifest.No

KubernetesWorkload

FieldTypeDescriptionRequired
kindstringThe kind name of workload manifests. Currently, only Deployment is supported. In the future, we also want to support ReplicationController, DaemonSet, StatefulSet.No
namestringThe name of workload manifest.No

KubernetesTrafficRouting

FieldTypeDescriptionRequired
methodstringWhich traffic routing method will be used. Available values are istio, smi, podselector. Default is podselector.No
istioIstioTrafficRoutingIstio configuration when the method is istio.No

IstioTrafficRouting

FieldTypeDescriptionRequired
editableRoutes[]stringList of routes in the VirtualService that can be changed to update traffic routing. Empty means all routes should be updated.No
hoststringThe service host.No
virtualServiceIstioVirtualServiceThe reference to VirtualService manifest. Empty means the first VirtualService resource will be used.No

IstioVirtualService

FieldTypeDescriptionRequired
namestringThe name of VirtualService manifest.No

TerraformDeploymentInput

FieldTypeDescriptionRequired
workspacestringThe terraform workspace name. Empty means default workspace.No
terraformVersionstringThe version of terraform should be used. Empty means the pre-installed version will be used.No
vars[]stringList of variables that will be set directly on terraform commands with -var flag. The variable must be formatted by key=value.No
varFiles[]stringList of variable files that will be set on terraform commands with -var-file flag.No
commandFlagsTerraformCommandFlagsList of additional flags will be used while executing terraform commands.No
commandEnvsTerraformCommandEnvsList of additional environment variables will be used while executing terraform commands.No
autoRollbackboolAutomatically reverts all changes from all stages when one of them failed.No

TerraformCommandFlags

FieldTypeDescriptionRequired
shared[]stringList of additional flags used for all Terraform commands.No
init[]stringList of additional flags used for Terraform init command.No
plan[]stringList of additional flags used for Terraform plan command.No
apply[]stringList of additional flags used for Terraform apply command.No

TerraformCommandEnvs

FieldTypeDescriptionRequired
shared[]stringList of additional environment variables used for all Terraform commands.No
init[]stringList of additional environment variables used for Terraform init command.No
plan[]stringList of additional environment variables used for Terraform plan command.No
apply[]stringList of additional environment variables used for Terraform apply command.No

TerraformQuickSync

FieldTypeDescriptionRequired

CloudRunDeploymentInput

FieldTypeDescriptionRequired
serviceManifestFilestringThe name of service manifest file placing in application directory. Default is service.yaml.No
autoRollbackboolAutomatically reverts to the previous state when the deployment is failed. Default is true.No

CloudRunQuickSync

FieldTypeDescriptionRequired

LambdaDeploymentInput

FieldTypeDescriptionRequired
functionManifestFilestringThe name of function manifest file placing in application directory. Default is function.yaml.No
autoRollbackboolAutomatically reverts to the previous state when the deployment is failed. Default is true.No

Specific function.yaml

One of image, s3Bucket, or source is required.

  • If you use s3Bucket, s3Key and s3ObjectVersion are required.

  • If you use s3Bucket or source, handler and runtime are required.

See Configuring Lambda application for more details.

FieldTypeDescriptionRequired
namestringName of the Lambda functionYes
rolestringIAM role ARNYes
imagestringURI of the container imageNo
s3BucketstringS3 bucket name for code packageNo
s3KeystringS3 key for code packageNo
s3ObjectVersionstringS3 object version for code packageNo
sourcesourceGit settingsNo
handlerstringLambda function handlerNo
runtimestringRuntime environmentNo
architectures[]ArchitectureSupported architecturesNo
ephemeralStorageEphemeralStorageEphemeral storage configurationNo
memoryint32Memory allocation (in MB)Yes
timeoutint32Function timeout (in seconds)Yes
tagsmap[string]stringKey-value pairs for tagsNo
environmentsmap[string]stringEnvironment variablesNo
vpcConfigVPCConfigVPC configurationNo
layers[]stringARNs of layers to depend onNo

Source

FieldTypeDescriptionRequired
gitstringGit repository URLYes
refstringGit branch/tag/referenceYes
pathstringPath within the repositoryYes

Architecture

FieldTypeDescriptionRequired
namestringName of the architectureYes

EphemeralStorage

FieldTypeDescriptionRequired
sizeint32Size of the ephemeral storageYes

VPCConfig

FieldTypeDescriptionRequired
securityGroupIds[]stringList of security group IDsNo
subnetIds[]stringList of subnet IDsNo

LambdaQuickSync

FieldTypeDescriptionRequired

ECSDeploymentInput

FieldTypeDescriptionRequired
serviceDefinitionFilestringThe path ECS Service configuration file. Allow file in both yaml and json format. The default value is service.json. See here and Restrictions for parameters.No
taskDefinitionFilestringThe path to ECS TaskDefinition configuration file. Allow file in both yaml and json format. The default value is taskdef.json. See here and Restrictions for parameters.No
targetGroupsECSTargetGroupInputThe target groups configuration, will be used to routing traffic to created task sets.Yes (if you want to perform progressive delivery)
runStandaloneTaskboolRun standalone tasks during deployments. About standalone task, see here. The default value is true.
accessTypestringHow the ECS service is accessed. One of ELB or SERVICE_DISCOVERY. See examples here. The default value is ELB.

Restrictions of Service Definition

There are some restrictions in configuring a service definition file.

  • As long as desiredCount is 0 or not set, desiredCount of your service will NOT be updated in deployments.
    • If desiredCount is 0 or not set for a new service, the service’s desiredCount will be 0.
  • capacityProviderStrategy is not supported.
  • clientToken is not supported.
  • deploymentController is required and must be EXTERNAL.
  • loadBalancers is not supported. Use targetGroups in ECSDeploymentInput instead.
  • platformFamily is not supported.
  • propagateTags is always set as SERVICE.
  • taskDefinition is not supported. PipeCD uses the definition in taskDefinitionFile in ECSDeploymentInput.

Restrictions of Task Definition

There are some restrictions in configuring a task definition file.

  • placementConstraints is not supported.
  • proxyConfiguration is not supported.
  • tags is not supported.

ECSTargetGroupInput

FieldTypeDescriptionRequired
primaryECSTargetGroupObjectThe PRIMARY target group, will be used to register the PRIMARY ECS task set.Yes
canaryECSTargetGroupObjectThe CANARY target group, will be used to register the CANARY ECS task set if exist. It’s required to enable PipeCD to perform the multi-stage deployment.No

ECSTargetGroupObject

FieldTypeDescriptionRequired
targetGroupArnstringThe name of the container (as it appears in a container definition) to associate with the load balancerYes
containerNamestringThe full Amazon Resource Name (ARN) of the Elastic Load Balancing target group or groups associated with a service or task set.Yes
containerPortintThe port on the container to associate with the load balancer.Yes
LoadBalancerNamestringThe name of the load balancer to associate with the Amazon ECS service or task set.No

Note: The available values are identical to those found in the aws-sdk-go-v2 Types.LoadBalancer. For more details, please refer to this link .

ECSQuickSync

FieldTypeDescriptionRequired
recreateboolWhether to delete old tasksets before creating new ones or not. Default to false.No

AnalysisMetrics

FieldTypeDescriptionRequired
providerstringThe unique name of provider defined in the Piped Configuration.Yes
strategystringThe strategy name. One of THRESHOLD or PREVIOUS or CANARY_BASELINE or CANARY_PRIMARY is available. Defaults to THRESHOLD.No
querystringA query performed against the Analysis Provider. The stage will be skipped if no data points were returned.Yes
expectedAnalysisExpectedThe statically defined expected query result. This field is ignored if there was no data point as a result of the query.Yes if the strategy is THRESHOLD
intervaldurationRun a query at specified intervals.Yes
failureLimitintAcceptable number of failures. e.g. If 1 is set, the ANALYSIS stage will end with failure after two queries results failed. Defaults to 1.No
skipOnNoDataboolIf true, it considers as a success when no data returned from the analysis provider. Defaults to false.No
deviationstringThe stage fails on deviation in the specified direction. One of LOW or HIGH or EITHER is available. This can be used only for PREVIOUS, CANARY_BASELINE or CANARY_PRIMARY. Defaults to EITHER.No
baselineArgsmap[string][string]The custom arguments to be populated for the Baseline query. They can be reffered as {{ .VariantCustomArgs.xxx }}.No
canaryArgsmap[string][string]The custom arguments to be populated for the Canary query. They can be reffered as {{ .VariantCustomArgs.xxx }}.No
primaryArgsmap[string][string]The custom arguments to be populated for the Primary query. They can be reffered as {{ .VariantCustomArgs.xxx }}.No
timeoutdurationHow long after which the query times out.No
templateAnalysisTemplateRefReference to the template to be used.No

AnalysisExpected

FieldTypeDescriptionRequired
minfloat64Failure, if the query result is less than this value.No
maxfloat64Failure, if the query result is larger than this value.No

AnalysisTemplateRef

FieldTypeDescriptionRequired
namestringThe template name to refer.Yes
appArgsmap[string]stringThe arguments for custom-args.No

AnalysisLog

FieldTypeDescriptionRequired

AnalysisHttp

FieldTypeDescriptionRequired

SkipOptions

FieldTypeDescriptionRequired
commitMessagePrefixes[]stringList of commit message’s prefixes. The stage will be skipped when the prefix of the commit’s message matches any of them. Empty means the stage will not be skipped by this condition.No
paths[]stringList of paths to directories or files. When all commit changes match them, the stage will be skipped. Empty means the stage will not be skipped by this condition. Regular expression can be used.No

StageOptions

KubernetesPrimaryRolloutStageOptions

FieldTypeDescriptionRequired
suffixstringSuffix that should be used when naming the PRIMARY variant’s resources. Default is primary.No
createServiceboolWhether the PRIMARY service should be created. Default is false.No
addVariantLabelToSelectorboolWhether the PRIMARY variant label should be added to manifests if they were missing. Default is false.No
pruneboolWhether the resources that are no longer defined in Git should be removed or not. Default is falseNo

KubernetesCanaryRolloutStageOptions

FieldTypeDescriptionRequired
replicasintHow many pods for CANARY workloads. Default is 1 pod. Alternatively, can be specified a string suffixed by “%” to indicate a percentage value compared to the pod number of PRIMARYNo
suffixstringSuffix that should be used when naming the CANARY variant’s resources. Default is canary.No
createServiceboolWhether the CANARY service should be created. Default is false.No
patches[]KubernetesResourcePatchList of patches used to customize manifests for CANARY variant.No

KubernetesCanaryCleanStageOptions

FieldTypeDescriptionRequired

KubernetesBaselineRolloutStageOptions

FieldTypeDescriptionRequired
replicasintHow many pods for BASELINE workloads. Default is 1 pod. Alternatively, can be specified a string suffixed by “%” to indicate a percentage value compared to the pod number of PRIMARYNo
suffixstringSuffix that should be used when naming the BASELINE variant’s resources. Default is baseline.No
createServiceboolWhether the BASELINE service should be created. Default is false.No

KubernetesBaselineCleanStageOptions

FieldTypeDescriptionRequired

KubernetesTrafficRoutingStageOptions

This stage routes traffic with the method specified in KubernetesTrafficRouting. When using podselector method as a traffic routing method, routing is done by updating the Service selector. Therefore, note that all traffic will be routed to the primary if the the primary variant’s service is rolled out by running the K8S_PRIMARY_ROLLOUT stage.

FieldTypeDescriptionRequired
allstringWhich variant should receive all traffic. Available values are “primary”, “canary”, “baseline”. Default is primary.No
primaryPercentageThe percentage of traffic should be routed to PRIMARY variant.No
canaryPercentageThe percentage of traffic should be routed to CANARY variant.No
baselinePercentageThe percentage of traffic should be routed to BASELINE variant.No

TerraformPlanStageOptions

FieldTypeDescriptionRequired
exitOnNoChangesboolWhether exiting the pipeline when the result has no changesNo

TerraformApplyStageOptions

FieldTypeDescriptionRequired

CloudRunPromoteStageOptions

FieldTypeDescriptionRequired
percentPercentagePercentage of traffic should be routed to the new version.No

LambdaCanaryRolloutStageOptions

FieldTypeDescriptionRequired

LambdaPromoteStageOptions

FieldTypeDescriptionRequired
percentPercentagePercentage of traffic should be routed to the new version.No

ECSPrimaryRolloutStageOptions

FieldTypeDescriptionRequired

ECSCanaryRolloutStageOptions

FieldTypeDescriptionRequired
scalePercentageThe percentage of workloads should be rolled out as CANARY variant’s workload.Yes

ECSTrafficRoutingStageOptions

FieldTypeDescriptionRequired
primaryPercentageThe percentage of traffic should be routed to PRIMARY variant.No
canaryPercentageThe percentage of traffic should be routed to CANARY variant.No

Note: By default, the sum of traffic is rounded to 100. If both primary and canary numbers are not set, the PRIMARY variant will receive 100% while the CANARY variant will receive 0% of the traffic.

AnalysisStageOptions

FieldTypeDescriptionRequired
durationdurationMaximum time to perform the analysis.Yes
metrics[]AnalysisMetricsConfiguration for analysis by metrics.No
skipOnSkipOptionsWhen to skip this stage.No

WaitStageOptions

FieldTypeDescriptionRequired
durationdurationTime to wait.Yes
skipOnSkipOptionsWhen to skip this stage.No

WaitApprovalStageOptions

FieldTypeDescriptionRequired
timeoutdurationThe maximum length of time to wait before giving up. Default is 6h.No
approvers[]stringList of username who has permission to approve.Yes
minApproverNumintNumber of minimum needed approvals to make this stage complete. Default is 1.No
skipOnSkipOptionsWhen to skip this stage.No

CustomSyncStageOptions (deprecated)

FieldTypeDescriptionRequired
timeoutdurationThe maximum time the stage can be taken to run. Default is 6hNo
envsmap[string]stringEnvironment variables used with scripts.No
runstringScript run on this stage.Yes

ScriptRunStageOptions

FieldTypeDescriptionRequired
runstringScript run on this stage.Yes
envmap[string]stringEnvironment variables used with scripts.No
timeoutdurationThe maximum time the stage can be taken to run. Default is 6hNo
skipOnSkipOptionsWhen to skip this stage.No

PostSync

FieldTypeDescriptionRequired
chainDeploymentChainDeployment chain configuration, used to determine and build deployments that should be triggered once the current deployment is triggered.No

DeploymentChain

FieldTypeDescriptionRequired
applications[]DeploymentChainApplicationThe list of applications which should be triggered once deployment of this application rolled out successfully.Yes

DeploymentChainApplication

FieldTypeDescriptionRequired
namestringThe name of PipeCD application, note that application name is not unique in PipeCD datastoreNo
kindstringThe kind of the PipeCD application, which should be triggered as a node in deployment chain. The value will be one of: KUBERNETES, TERRAFORM, CLOUDRUN, LAMBDA, ECS.No

EventWatcher

FieldTypeDescriptionRequired
matcherEventWatcherMatcherWhich event will be handled.Yes
handlerEventWatcherHandlerWhat to do for the event which matched by the above matcher.Yes

EventWatcherMatcher

FieldTypeDescriptionRequired
namestringThe event name.Yes
labelsmap[string]stringAdditional attributes of event. This can make an event definition unique even if the one with the same name exists.No

EventWatcherHandler

FieldTypeDescriptionRequired
typestringThe handler type. Currently, only GIT_UPDATE is supported.Yes
configEventWatcherHandlerConfigConfiguration for the event watcher handler.Yes

EventWatcherHandlerConfig

FieldTypeDescriptionRequired
commitMessagestringThe commit message used to push after replacing values. Default message is used if not given.No
makePullRequestboolWhether to create a new branch or not when commit changes in event watcher. Default is false.No
replacements[]EventWatcherReplacementList of places where will be replaced when the new event matches.Yes

DriftDetection

FieldTypeDescriptionRequired
ignoreFields[]stringList of fields path in manifests, which its diff should be ignored. This is available for only KubernetesApp.No

PipeCD rich defined types

Percentage

A wrapper of type int to represent percentage data. Basically, you can pass 10 or "10" or 10% and they will be treated as 10% in PipeCD.

KubernetesResourcePatch

FieldTypeDescriptionRequired
targetKubernetesResourcePatchTargetWhich manifest, which field will be the target of patch operations.Yes
ops[]KubernetesResourcePatchOpList of operations should be applied to the above target.No

KubernetesResourcePatchTarget

FieldTypeDescriptionRequired
kindstringThe resource kind. e.g. ConfigMapYes
namestringThe resource name. e.g. config-map-nameYes
documentRootstringIn case you want to manipulate the YAML or JSON data specified in a field of the manfiest, specify that field’s path. The string value of that field will be used as input for the patch operations. Otherwise, the whole manifest will be the target of patch operations. e.g. $.data.envoy-configNo

KubernetesResourcePatchOp

FieldTypeDescriptionRequired
opstringThe operation type. This must be one of yaml-replace, yaml-add, yaml-remove, json-replace, text-regex. Default is yaml-replace.No
pathstringThe path string pointing to the manipulated field. For yaml operations it looks like $.foo.array[0].bar.No
valuestringThe value string whose content will be used as new value for the field.No