Welcome

Cup

πŸ₯€

Because Git deserves better contribution automation

Cup is an extensible server for building automation around introspection and contributions to Git and SCMs like GitHub. It exposes a consistent declarative API, with an opinionated convention based on Kubernetes. The API is self-describing, allowing for tooling to be developed with broad applicability to a range of usecases. All changes made to API resources are handled by Controllers. Controllers do the heavy lifting when it comes to changing the contents of a repository based on the desired state of an API resource. Any calculated changes are proposed as pull or merge requests on your prefered SCM (GitHub, Gitea etc.).

β”Œβ”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     β”‚            β”‚ Controller                   β”‚         β”‚ GitHub                           β”‚
β”‚     β”‚            β”‚                              β”‚         β”‚                                  β”‚
β”‚     β”‚            β”‚  flipt.io/Flag/v1            β”‚         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚     β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ά                              β”‚         β”‚  β”‚ Git Repository      β”‚         β”‚
β”‚     β”‚            β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ β”‚ Wazero                   β”‚ β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”Όβ”€β–Άβ”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ β”‚                          β”‚ β”‚  β”‚      β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ β”‚ exec get <kind> ...      β”‚ β”‚  β”‚      β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚     β”‚            β”‚ β”‚ exec list <kind> ...     β”‚ β”‚  β”‚      β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚     β”‚            β”‚ β”‚ exec put <kind> ...      β”‚ β”‚  β”‚      β”‚  β”‚ Git Repository      β”‚         β”‚
β”‚     β”‚            β”‚ β”‚ exec delete <kind> ...   β”‚ β”‚  β”‚      β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ β”‚                          β”‚ β”‚  β”‚      β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ β””β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚      β”‚  β”‚                     β”‚         β”‚
β”‚  A  ◀─────────────         β”‚         β”‚          β”‚  β”‚      β”‚  β”‚                     β”‚         β”‚
β”‚  P  β”‚            β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚      β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚  I  β”‚            β”‚ β”‚ Source                   β—€β”€β”Όβ”€β”€β”˜  β”Œβ”€β”€β”€β–Ά                                  β”‚
β”‚     β”‚            β”‚ β”‚                          β”‚ β”‚     β”‚   β”‚                                  β”‚
β”‚  S  β”‚            β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”œβ”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚  e  β”‚            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  r  β”‚                                                     β”‚ Gitea                            β”‚
β”‚  v  β”‚                                                     β”‚                                  β”‚
β”‚  e  β”‚            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  r  β”‚            β”‚ Controller                   β”‚         β”‚  β”‚ Git Repository      β”‚         β”‚
β”‚     β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ά                              β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚  apps/Deployment/v1          β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     ◀─────────────                              β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ ...                          β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚     β”‚            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚     β”‚            β”‚ Controller                   β”‚         β”‚  β”‚ Git Repository      β”‚         β”‚
β”‚     β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ά                              β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚  my.org/Server/v1alpha1      β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     ◀─────────────                              β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β”‚ ...                          β”‚         β”‚  β”‚                     β”‚         β”‚
β”‚     β”‚            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚     β”‚                                                     β”‚                                  β”‚
β”‚     β”‚              ...                                    β”‚                                  β”‚
β””β”€β”€β”€β”€β”€β”˜                                                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜