bundlebee:deploy
Build and deploy a project. It inherits from most configuration of build command and adds remote repository settings.
Coordinates
<plugin>
<groupId>io.yupiik</groupId>
<artifactId>bundlebee-maven-plugin</artifactId>
<version>1.0.28-SNAPSHOT</version>
</plugin>
To call this goal from the command line execute: mvn bundlebee:deploy
.
To bind this goal in the build you can use:
<plugin>
<groupId>io.yupiik</groupId>
<artifactId>bundlebee-maven-plugin</artifactId>
<version>1.0.28-SNAPSHOT</version>
<executions>
<execution>
<id>my-execution</id>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<!-- execution specific configuration come there -->
</configuration>
</execution>
</executions>
</plugin>
You can execute this goal particularly with mvn bundlebee:deploy@my-execution
command.
Configuration
- artifact (
String
) -
Bundle artifactId. Default value:
${project.artifactId}
. Property:${bundlebee.deploy.artifact}
. - awaiterRetryInterval (
long
) -
How often to retry for a descriptor condition. Increasing it will reduce the pressure on the Kubernetes REST API (rate limiting for example). Default value:
500
. Property:${bundlebee.awaiter.retryInterval}
. - builddir (
String
) -
Where to build (for build/temp files). Default value:
target
. Property:${bundlebee.deploy.builddir}
. - customPlaceholders (
Map
) -
Custom properties injected in the main, it is often used for placeholders. If the key (tag in pom) starts with
bundlebee-placeholder-import
then the value is resolved as a properties file which is injected in the resulting placeholders (indirect placeholders). Property:${bundlebee.deploy.customPlaceholders}
. - deployInLocalRepository (
boolean
) -
If
true
it will be added to your local maven repository too. Default value:true
. Property:${bundlebee.deploy.deployInLocalRepository}
. - dir (
String
) -
Project to build. Default value:
.
. Property:${bundlebee.deploy.dir}
. - enableReUpload (
String
) -
If
true
it enables to upload an artifact even if already present. Whenauto
it enables it for snapshots but not for releases. Default value:auto
. Property:${bundlebee.deploy.enableReUpload}
. - group (
String
) -
Bundle groupId. Default value:
${project.groupId}
. Property:${bundlebee.deploy.group}
. - httpclientConnectTimeout (
String
) -
The HTTP client connect timeout (in java Duration format),
none
can be used to ignore this setting. Default value:none
. Property:${bundlebee.httpclient.connectTimeout}
. - httpclientFollowRedirects (
String
) -
The HTTP client redirect policy. Default to
NORMAL
, can be set toALWAYS
orNEVER
. Default value:NORMAL
. Property:${bundlebee.httpclient.followRedirects}
. - httpclientForcedHttpVersion (
String
) -
The HTTP client version,
none
mean the JVM default (v2),HTTP_1_1
v1.1 andHTTP_2
v2.0. Default value:none
. Property:${bundlebee.httpclient.forcedHttpVersion}
. - httpclientThreads (
int
) -
How many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value:
-1
. Property:${bundlebee.httpclient.threads}
. - kubeApi (
String
) -
When kubeconfig is not set the base API endpoint. Default value:
http://localhost:8080
. Property:${bundlebee.kube.api}
. - kubeContext (
String
) -
When kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself. Default value:
<unset>
. Property:${bundlebee.kube.context}
. - kubeCustomMetadataInjectionPoint (
String
) -
When using custom metadata (bundlebee ones or timestamp to force a rollout), where to inject them. Default uses labels since it enables to query them later on but you can switch it to annotations. Default value:
labels
. Property:${bundlebee.kube.customMetadataInjectionPoint}
. - kubeDefaultPropagationPolicy (
String
) -
Default value for deletions of
propagationPolicy
. Values can beOrphan
,Foreground
andBackground
. Default value:Foreground
. Property:${bundlebee.kube.defaultPropagationPolicy}
. - kubeDryRun (
boolean
) -
If
true
http requests/responses are skipped. Note that dry run implies verbose=true for the http client. Note that as of today, all responses are mocked by a HTTP 200 and an empty JSON payload. Default value:false
. Property:${bundlebee.kube.dryRun}
. - kubeFieldValidation (
String
) -
fieldValidation
- server side validation - value when applying a descriptor, values can beStrict
,Warn
prIgnore
. Note that usingskip
will ignore the query parameter. Default value:Strict
. Property:${bundlebee.kube.fieldValidation}
. - kubeFiltersStatefulesetSpecAllowed (
Set
) -
The attributes to keep from
StatefulSet
(spec
children) descriptor on updates. Default value:replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector
. Property:${bundlebee.kube.filters.statefuleset.spec.allowed}
. - kubeForce (
boolean
) -
By default a descriptor update is done using
PATCH
with strategic merge patch logic, if set totrue
it will use a plainPUT
. Note thatio.yupiik.bundlebee/putOnUpdate
annotations can be set totrue
to force that in the descriptor itself and for cases it is not enough, you can setforce
totrue
to delete the descriptor before applying it again (move from clusterip to nodeport or the opposite in a serice for ex). Note that you can set it totrue
in a descriptor annotationio.yupiik.bundlebee/force
too to not be global. Default value:false
. Property:${bundlebee.kube.force}
. - kubeHttpTimeout (
long
) -
HTTP timeout in ms, ignored if ⇐ 0. Default value:
60000
. Property:${bundlebee.kube.http.timeout}
. - kubeImplicitlyDroppedAttributes (
String
) -
Enables to tolerate custom attributes in the descriptors. Typically used to drop
/$schema
attribute which enables a nice completion in editors. Values are|
delimited and are either a JSON-Pointer (wrapped in a remove JSON-Patch) or directly a JSON-Patch. Usingnone
ignores this processing. Default value:/$schema|/$bundlebeeIgnoredLintingRules
. Property:${bundlebee.kube.implicitlyDroppedAttributes}
. - kubeLogDescriptorOnParsingError (
boolean
) -
Should YAML/JSON be logged when it can’t be parsed. Default value:
true
. Property:${bundlebee.kube.logDescriptorOnParsingError}
. - kubeNamespace (
String
) -
When kubeconfig is not set the namespace to use. Default value:
default
. Property:${bundlebee.kube.namespace}
. - kubePatchContentType (
String
) -
Default header value for
PATCH
content-type
requests header. It uses strategic merge patch algorithm but in some cases you just want to useapplication/json
or (better)application/merge-patch+json
. Annotationio.yupiik.bundlebee/patchContentType
is also supported. Default value:application/strategic-merge-patch+json
. Property:${bundlebee.kube.patchContentType}
. - kubeProxyHost (
String
) -
If a proxy is needed to contact the target cluster API, its host, ignore if not set. Default value:
<unset>
. Property:${bundlebee.kube.proxy.host}
. - kubeProxyPassword (
String
) -
If a proxy is needed to contact the target cluster API, its password if it needs an authentication (take care the JVM can nee
-Djdk.http.auth.tunneling.disabledSchemes=
options). Default value:<unset>
. Property:${bundlebee.kube.proxy.password}
. - kubeProxyPort (
int
) -
If a proxy is needed to contact the target cluster API, its port. Default value:
3128
. Property:${bundlebee.kube.proxy.port}
. - kubeProxySetProxySystemProperties (
boolean
) -
If a proxy is configured to use authentication, automatically set
-Djdk.http.auth.tunneling.disabledSchemes=
, note that setting it on the JVM is still more reliable depending how you run bundlebee (in particular with maven or embed). Important: the system property is "leaked", ie it is not cleaned up to limit side effect in concurrent mode. Default value:true
. Property:${bundlebee.kube.proxy.setProxySystemProperties}
. - kubeProxyUsername (
String
) -
If a proxy is needed to contact the target cluster API, its username if it needs an authentication (take care the JVM can nee
-Djdk.http.auth.tunneling.disabledSchemes=
options). Default value:<unset>
. Property:${bundlebee.kube.proxy.username}
. - kubePutOnUpdate (
boolean
) -
By default a descriptor update is done using
PATCH
with strategic merge patch logic, if set totrue
it will use a plainPUT
. Note thatio.yupiik.bundlebee/putOnUpdate
annotations can be set totrue
to force that in the descriptor itself. Default value:false
. Property:${bundlebee.kube.putOnUpdate}
. - kubeRateLimiterEnabled (
boolean
) -
Should HTTP client requests be limited and HTTP 427 responses be handled. Default value:
false
. Property:${bundlebee.kube.rateLimiter.enabled}
. - kubeRateLimiterPermits (
int
) -
How many calls can be done if rate limiting is enabled. Note that setting it to
Integer.MAX_VALUE
will disable the client rate limiting and only enable server one. Default value:100
. Property:${bundlebee.kube.rateLimiter.permits}
. - kubeRateLimiterWindow (
int
) -
Rate limiting window duration in milliseconds (default being 1 second). Default value:
1000
. Property:${bundlebee.kube.rateLimiter.window}
. - kubeResourceMapping (
String
) -
Enables to define resource mapping, syntax uses propeties one: ` s = /apis/….
. Default value: `
. Property:${bundlebee.kube.resourceMapping}
. - kubeSkipDryRunForGet (
boolean
) -
If
true
GET http requests are not skipped whendryRun
is true. Default value:false
. Property:${bundlebee.kube.skipDryRunForGet}
. - kubeSkipUpdateForKinds (
String
) -
List of kind of descriptors updates can be skipped, it is often useful for
PersistentVolumeClaim
. Default value:PersistentVolumeClaim
. Property:${bundlebee.kube.skipUpdateForKinds}
. - kubeToken (
String
) -
When
kubeconfig
is set toexplicit
, the bearer token to use (if set). Default value:<unset>
. Property:${bundlebee.kube.token}
. - kubeValidateSSL (
boolean
) -
Should SSL connector be validated or not. Default value:
true
. Property:${bundlebee.kube.validateSSL}
. - kubeVerbose (
boolean
) -
If
true
http requests/responses to Kubernetes will be logged. Default value:false
. Property:${bundlebee.kube.verbose}
. - kubeconfig (
String
) -
Kubeconfig location. If set to
auto
it will try to guess from your$HOME/.kube/config
file until you set it soexplicit
where it will use otherbundlebee.kube
properties to create the client. The content can also be set inline!. Default value:auto
. Property:${kubeconfig}
. - mavenCache (
String
) -
Where to cache maven dependencies. If set to
auto
, tries to read the system propertymaven.repo.local
then thesettings.xml
localRepository
and finally it would fallback on$HOME/.m2/repository
. Default value:auto
. Property:${bundlebee.maven.cache}
. - mavenForceCustomSettingsXml (
boolean
) -
If
true
we only usecache
value and never fallback on default maven settings.xml location. Default value:false
. Property:${bundlebee.maven.forceCustomSettingsXml}
. - mavenHttpConnectTimeout (
int
) -
When fetching a dependency using HTTP, the connection timeout for this dependency. Default value:
30000
. Property:${bundlebee.maven.http.connectTimeout}
. - mavenPreferCustomSettingsXml (
boolean
) -
If
false
we first try to readsettings.xml
file(s) incache
location before the default one. Default value:true
. Property:${bundlebee.maven.preferCustomSettingsXml}
. - mavenRepositoriesDownloadsEnabled (
boolean
) -
Enable the download, i.e. ensure it runs only with local maven repository. Default value:
false
. Property:${bundlebee.maven.repositories.downloads.enabled}
. - mavenRepositoriesHttpHeaders (
String
) -
Properties to define the headers to set per repository, syntax is
host1=headerName headerValue
and it supports as much lines as used repositories. Note that you can use maven~/.m2/settings.xml
servers (potentially ciphered) username/password pairs. In this last case the server id must bebundlebee. `. Still in settings.xml case, if the username is null the password value is used as raw `Authorization
header else username/password is encoded as a basic header. Default value:<unset>
. Property:${bundlebee.maven.repositories.httpHeaders}
. - mavenRepositoriesRelease (
String
) -
Default release repository. Default value:
https://repo.maven.apache.org/maven2/
. Property:${bundlebee.maven.repositories.release}
. - mavenRepositoriesSnapshot (
String
) -
Default snapshot repository, not set by default. Default value:
<unset>
. Property:${bundlebee.maven.repositories.snapshot}
. - nexusBaseApi (
String
) -
If not
skip
it will deploy the artifact on a remote repository (nexus v2 or v3). Syntax must be a URL pointing to the REST API (base URL). If you don’t set the userinfo (username:password) in the URL it will be looked up in your settings.xml - potentially ciphered - using the hostname as serverId until you force it with--serverId
. Default value:skip
. Property:${bundlebee.deploy.nexusBaseApi}
. - nexusRepository (
String
) -
Nexus repository. It is the repository name the artifact(s) will be uploaded to. If
auto
, it will bemaven-releases
if the version is a release one andmaven-snapshots
otherwise. Default value:auto
. Property:${bundlebee.deploy.nexusRepository}
. - packaging (
String
) -
Current module packaging. Default value:
${project.packaging}
. Property: ``. - serverId (
String
) -
ServerId to lookup from your maven settings.xml for remote deployment if enabled (nexus authentication). Default value:
<unset>
. Property:${bundlebee.deploy.serverId}
. - skip (
boolean
) -
Skip execution. Default value:
false
. Property:${bundlebee.skip}
. - skipMavenForcedFilteringForPlaceholders (
boolean
) -
If
true
, bundlebee lookup in maven context will be one level only which meansfoo
will be looked up as such in maven and not`${foo}
which will work. Default value:false
. Property:${bundlebee.skipMavenForcedFilteringForPlaceholders}
. - skipPackaging (
List
) -
Skipped packaging types. Default value:
pom
. Property:${bundlebee.skipPackaging}
. - useDefaultLogging (
boolean
) -
Should JUL logging redirected to Maven logging (enable it only if you set up maven to use JUL). Default value:
false
. Property:${bundlebee.useDefaultLogging}
. - version (
String
) -
Bundle version. Default value:
${project.version}
. Property:${bundlebee.deploy.version}
.