capact
capact copied to clipboard
Composed Action spike
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.
Could solve also: https://github.com/capactio/capact/issues/563