spring-cloud / spring-cloud-deployer

The Spring Cloud Deployer project defines an SPI for deploying long lived applications and short lived tasks
162 stars 87 forks source link

== Spring Cloud Deployer

[frame=none, grid=none, caption=, width="75%", cols="^2,^2"] .Build Status by Branches === Main 2.9.x image:https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/build-snapshot-worker.yml/badge.svg[title="Build Snapshot Worker - Main" link="https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/build-snapshot-worker.yml"] image:https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/ci.yml/badge.svg[title="CI - Main" link="https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/ci.yml"]

image:https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/build-snapshot-worker.yml/badge.svg?branch=2.9.x[title="Build Snapshot Worker - 2.9.x", link="https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/build-snapshot-worker.yml?query=branch%3A2.9.x"] image:https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/ci.yml/badge.svg?branch=2.9.x[title="CI - 2.9.x", link="https://github.com/spring-cloud/spring-cloud-deployer/actions/workflows/ci.yml?query=branch%3A2.9.x"] | |===

The Spring Cloud Deployer project defines a Service Provider Interface (SPI) for deploying long lived applications and short lived tasks.

== Components

The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-spi[SPI] project defines the core interfaces, including https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-spi/src/main/java/org/springframework/cloud/deployer/spi/app/AppDeployer.java[AppDeployer] and https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-spi/src/main/java/org/springframework/cloud/deployer/spi/task/TaskLauncher.java[TaskLauncher] as well as the core domain model.

The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-spi-test[SPI Test] project provides the basic test framework that any SPI implementation should use to verify its functionality.

The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-resource-maven[spring-cloud-deployer-resource-maven] project provides support for referencing Maven artifacts via Spring's Resource abstraction.

The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-resource-docker[spring-cloud-deployer-resource-docker] project provides support for referencing Docker artifacts via Spring's Resource abstraction.

The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-resource-support[spring-cloud-deployer-resource-support] project provides various common support classes for working with Resources, such as the https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-resource-support/src/main/java/org/springframework/cloud/deployer/resource/registry/UriRegistry.java[UriRegistry] for maintaining the locations of app artifacts, and the https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-resource-support/src/main/java/org/springframework/cloud/deployer/resource/support/DelegatingResourceLoader.java[DelegatingResourceLoader] for working with multiple ResourceLoader implementations in a map with URI schemes as keys.

There is also an implementation of the SPI for running apps locally. That link is provided below along with other SPI implementations.

== Implementations

This deployer SPI has been implemented for several runtime environments. Here are the github locations:

=== Building

Clone the repo and type


$ ./mvnw clean install