capact icon indicating copy to clipboard operation
capact copied to clipboard

Composed Action spike

Open lukaszo opened this issue 3 years ago • 1 comments

Description

Sometimes we need to create so-called "Umbrella" manifests where we want to deploy several applications. This requires creating one Interface, InterfaceGroup, Types and so on. The unique part about it is that it has only one Implementation. The only purpose of this implementation is to group actions in one place and pass artifacts between them. This requires a lot of boilerplate YAML.

The solution may be to allow to run Composed Actions(CA) directly from API, without requiring them to exist in hub. The syntax of CA would be very similar to the Implementation. It could have embedded policy and input. It could be possible to store CA in files on remote locations and run actions by just providing a link to the file.

This would be similar to what Docker Compose is to Docker.

Problems:

  • Composed actions may become big. This will require creating some guideline which tells when to use what
  • It may also require defining temporal Types

Alternatives:

  • Allow creating Implementations without Interfaces

To discuss:

  • Do we need Interfaces for such Implementations? Probably not
  • Should they be stored in Hub? Probably yes

Reason

  • Improve User Experience
  • Reduce number of "Umbrella" manifests in hub

Use cases

System user will be able to create advanced deploy scenarios without having access to the HUB.

lukaszo avatar Oct 29 '21 15:10 lukaszo

Could solve also: https://github.com/capactio/capact/issues/563

mszostok avatar Mar 29 '22 10:03 mszostok