Todo
High level look at what needs to be done in Wharf. This belongs better as GitHub issues, but these things needs to be designed/architected first.
Ordering of the bulletpoints are an approximation of the order of which we should tackle them, with the first one to tackle at the top.
In progress
Add authentication to Wharf (OpenID Connect, Azure AD): RFC-0013
Make
wharf-cmd
feature-par with our Jenkins implementation.
Planned
Turn providers into plugins, even for the frontend. (explored in Wharf provider APIs as plugins# & Hide providers behind API#)
Change providers to use proper auth flows and register themselves as “native GitHub app” and similar.
Perform user studies to find pain points and missing documentation with both newcomers to Wharf as well as with frequent users.
Add RBAC support to Wharf’s auth implementation.
Make step types in
.wharf-ci.yml
dynamic. (explored in wharf-definition repo# & Fallback strategy#)Redesign
.wharf-ci.yml
to be more:- easily understood for newcomers (less magic strings, ex
environments
) - easily parsable by automatic parsers, by have more structured format
- consistent param names (camelCasing vs kebab-casing)
- consistent param formats (comma separated vs lists)
- replace steps/stages with recursive jobs and configurable parallel vs sequential.
- new variable syntax (see Different variable syntaxes#)
- possibly just name it
.wharf.yml
instead, as it’s both CI and CD. - abstraction over container steps, and not locked in to Kubernetes.
- easily understood for newcomers (less magic strings, ex
Add streaming component for streaming logs and build updates. Would be good to offload this into a separate component so the wharf-api can be replicated separately, as currently if you have two replicas of the wharf-api then you will get half the logs streamed due to the load balancing.
Add notification component for sending emails. (https://github.com/iver-wharf/iver-wharf.github.io/issues/33)
Consider adding CLA (contributor license agreement) before merging first PR from outside collaborator. Read more: CLA considerations
Figure out a good plugin system for wharf-cmd to allow external implementations of step runners. Needs to be language agnostic.
Figure out a better plugin system for wharf provisioners so they don’t need their own pods. They are so seldomly used so embedding them inside wharf-api’s container is a much better solution. Needs to be language agnostic.