mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
486914b203
* Correct description for deployType parameter * Add space * Update generated file
417 lines
14 KiB
YAML
417 lines
14 KiB
YAML
metadata:
|
|
name: cloudFoundryDeploy
|
|
description: "Deploys an application to Cloud Foundry"
|
|
longDescription: |
|
|
Deploys an application to a test or production space within Cloud Foundry.
|
|
spec:
|
|
inputs:
|
|
secrets:
|
|
- name: cfCredentialsId
|
|
description: Jenkins 'Username with password' credentials ID containing user and password to authenticate to the Cloud Foundry API.
|
|
type: jenkins
|
|
aliases:
|
|
- name: cloudFoundry/credentialsId
|
|
deprecated: true
|
|
- name: dockerCredentialsId
|
|
description: Jenkins 'Username with password' credentials ID containing user and password to authenticate to the Docker registry.
|
|
type: jenkins
|
|
params:
|
|
- name: apiEndpoint
|
|
type: string
|
|
description: "Cloud Foundry API endpoint"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: true
|
|
default: "https://api.cf.eu10.hana.ondemand.com"
|
|
aliases:
|
|
- name: cfApiEndpoint
|
|
- name: cloudFoundry/apiEndpoint
|
|
deprecated: true
|
|
- name: appName
|
|
type: string
|
|
description: "Defines the name of the application to be deployed to the Cloud Foundry space"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
aliases:
|
|
- name: cfAppName
|
|
- name: cloudFoundry/appName
|
|
deprecated: true
|
|
- name: artifactVersion
|
|
type: string
|
|
description: "The artifact version, used for influx reporting"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: artifactVersion
|
|
- name: commitHash
|
|
type: string
|
|
description: "The commit hash, used for influx reporting"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: git/headCommitId
|
|
- name: cfHome
|
|
type: string
|
|
description: "The cf home folder used by the cf cli. If not provided the default assumed by the cf cli is used."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
- name: cfNativeDeployParameters
|
|
type: string
|
|
description: "Additional parameters passed to cf native deployment command"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
- name: cfPluginHome
|
|
type: string
|
|
description: "The cf plugin home folder used by the cf cli.
|
|
If not provided the default assumed by the cf cli is used."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
- name: deployDockerImage
|
|
type: string
|
|
description: "Docker image deployments are supported
|
|
(via manifest file in general)[https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#docker].
|
|
If no manifest is used, this parameter defines the image to be deployed.
|
|
The specified name of the image is passed to the `--docker-image` parameter of the cf CLI and must
|
|
adhere it's naming pattern (e.g. REPO/IMAGE:TAG).
|
|
See (cf CLI documentation)[https://docs.cloudfoundry.org/devguide/deploy-apps/push-docker.html]
|
|
for details.
|
|
Note: The used Docker registry must be visible for the targeted Cloud Foundry instance."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
- name: deployTool
|
|
type: string
|
|
description: "Defines the tool which should be used for deployment."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
- name: buildTool
|
|
type: string
|
|
description: "Defines the tool which is used for building the artifact.
|
|
If provided, `deployTool` is automatically derived from it.
|
|
For MTA projects, `deployTool` defaults to `mtaDeployPlugin`.
|
|
For other projects `cf_native` will be used."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: buildTool
|
|
- name: deployType
|
|
type: string
|
|
description:
|
|
"Defines the type of deployment, either `standard` deployment which results in a system
|
|
downtime or a zero-downtime `blue-green` deployment. If 'cf_native' as deployTool and 'blue-green'
|
|
as deployType is used in combination, your manifest.yaml may only contain one application.
|
|
If this application has the option 'no-route' active the deployType will be changed to 'standard'."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
default: "standard"
|
|
- name: dockerPassword
|
|
type: string
|
|
description:
|
|
"If the specified image in `deployDockerImage` is contained in a Docker registry,
|
|
which requires authorization, this defines the password to be used."
|
|
secret: true
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
mandatory: false
|
|
resourceRef:
|
|
- name: dockerCredentialsId
|
|
type: secret
|
|
param: password
|
|
- name: dockerUsername
|
|
type: string
|
|
description:
|
|
"If the specified image in `deployDockerImage` is contained in a Docker registry,
|
|
which requires authorization, this defines the username to be used."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
mandatory: false
|
|
secret: true
|
|
resourceRef:
|
|
- name: dockerCredentialsId
|
|
type: secret
|
|
param: username
|
|
- name: keepOldInstance
|
|
type: bool
|
|
description:
|
|
"In case of a `blue-green` deployment the old instance will be deleted by default.
|
|
If this option is set to true the old instance will remain stopped in the Cloud Foundry space."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
mandatory: false
|
|
- name: loginParameters
|
|
type: string
|
|
description:
|
|
"Addition command line options for cf login command. No escaping/quoting is performed.
|
|
Not recommended for productive environments."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
- name: manifest
|
|
type: string
|
|
description: "Defines the manifest to be used for deployment to Cloud Foundry."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
aliases:
|
|
- name: cfManifest
|
|
- name: cloudFoundry/manifest
|
|
deprecated: true
|
|
- name: manifestVariables
|
|
type: "[]string"
|
|
description: Defines a list of variables in the form `key=value` which are used for variable substitution within the file given by manifest.
|
|
longDescription: |
|
|
Defines a list of variables in the form `key=value` which are used for variable substitution
|
|
within the file given by manifest.
|
|
|
|
This can be used to set variables like it is provided by 'cf push --var key=value'.
|
|
|
|
**Note:** variables defined via 'manifestVariables' always win over conflicting variables defined
|
|
via any file given by 'manifestVariablesFiles' - no matter what is declared before.
|
|
This is the same behavior as can be observed when using 'cf push --var' in combination
|
|
with 'cf push --vars-file'."
|
|
|
|
Example:
|
|
|
|
```
|
|
...
|
|
cloudFoundryDeploy:
|
|
manifestVariables:
|
|
- 'key1=value1'
|
|
- 'key2=value2'
|
|
...
|
|
```
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
aliases:
|
|
- name: cfManifestVariables
|
|
- name: cloudFoundry/manifestVariables
|
|
deprecated: true
|
|
- name: manifestVariablesFiles
|
|
type: "[]string"
|
|
description:
|
|
"path(s) of the Yaml file(s) containing the variable values to use as a
|
|
replacement in the manifest file. The order of the files is relevant in case there are
|
|
conflicting variable names and values within variable files.
|
|
In such a case, the values of the last file win."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
default: ["manifest-variables.yml"]
|
|
mandatory: false
|
|
aliases:
|
|
- name: cfManifestVariablesFiles
|
|
- name: cloudFoundry/manifestVariablesFiles
|
|
deprecated: true
|
|
- name: mtaDeployParameters
|
|
type: string
|
|
description: "Additional parameters passed to mta deployment command"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
default: "-f"
|
|
- name: mtaExtensionDescriptor
|
|
type: string
|
|
description: "Defines additional extension descriptor file for deployment with the mtaDeployPlugin"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
aliases:
|
|
- name: cloudFoundry/mtaExtensionDescriptor
|
|
deprecated: true
|
|
- name: mtaExtensionCredentials
|
|
type: "map[string]interface{}"
|
|
description: "Defines a map of credentials that need to be replaced in the `mtaExtensionDescriptor`. This map needs to be created as `value-to-be-replaced`:`id-of-a-credential-in-jenkins`. The placeholders in the extension descriptor file(s) looks like: `<%= value-to-be-replaced %>`. When used outside Jenkins the secret which corresponds to `id-of-a-credential-in-jenkins` needs to be provided as environment variable in screaming snake case, e.g.: `export ID_OF_A_CREDENTIAL_IN_JENKINS=<secret>`. `id-of-a-credential-in-jenkins` needs to be provided in a way so that it can be translated into a valid environment variable name (e.g. don't start with a number). `value-to-be-replaced` must match this regex: `^[-_A-Za-z0-9]+$`."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
aliases:
|
|
- name: cloudFoundry/mtaExtensionCredentials
|
|
deprecated: true
|
|
- name: mtaPath
|
|
type: string
|
|
description: "Defines the path to *.mtar for deployment with the mtaDeployPlugin"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
resourceRef:
|
|
- name: commonPipelineEnvironment
|
|
param: mtarFilePath
|
|
- name: org
|
|
type: string
|
|
description: "Cloud Foundry target organization."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
aliases:
|
|
- name: cfOrg
|
|
- name: cloudFoundry/org
|
|
deprecated: true
|
|
mandatory: true
|
|
secret: false
|
|
- name: password
|
|
type: string
|
|
description: "Password"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
mandatory: true
|
|
secret: true
|
|
resourceRef:
|
|
- name: cfCredentialsId
|
|
type: secret
|
|
param: password
|
|
- type: vaultSecret
|
|
default: cloudfoundry-$(org)-$(space)
|
|
name: cloudfoundryVaultSecretName
|
|
- name: smokeTestScript
|
|
type: string
|
|
description:
|
|
"Allows to specify a script which performs a check during blue-green deployment.
|
|
The script gets the FQDN as parameter and returns `exit code 0` in case check returned
|
|
`smokeTestStatusCode`.
|
|
More details can be found [here](https://github.com/bluemixgaragelondon/cf-blue-green-deploy#how-to-use).
|
|
Currently this option is only considered for deployTool `cf_native`."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
default: "blueGreenCheckScript.sh"
|
|
- name: smokeTestStatusCode
|
|
type: int
|
|
description: "Expected status code returned by the check."
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
mandatory: false
|
|
default: 200
|
|
- name: space
|
|
type: string
|
|
description: "Cloud Foundry target space"
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
- GENERAL
|
|
aliases:
|
|
- name: cfSpace
|
|
- name: cloudFoundry/space
|
|
deprecated: true
|
|
mandatory: true
|
|
- name: username
|
|
type: string
|
|
description: User name used for deployment
|
|
scope:
|
|
- PARAMETERS
|
|
- STAGES
|
|
- STEPS
|
|
mandatory: true
|
|
secret: true
|
|
resourceRef:
|
|
- name: cfCredentialsId
|
|
type: secret
|
|
param: username
|
|
- type: vaultSecret
|
|
default: cloudfoundry-$(org)-$(space)
|
|
name: cloudfoundryVaultSecretName
|
|
containers:
|
|
- name: cfDeploy
|
|
image: ppiper/cf-cli:latest
|
|
outputs:
|
|
resources:
|
|
- name: influx
|
|
type: influx
|
|
params:
|
|
- name: deployment_data
|
|
fields:
|
|
- name: artifactUrl
|
|
- name: deployTime
|
|
- name: commitHash
|
|
- name: jobTrigger
|
|
tags:
|
|
- name: artifactVersion
|
|
- name: deployUser
|
|
- name: deployResult
|
|
- name: cfApiEndpoint
|
|
- name: cfOrg
|
|
- name: cfSpace
|