Closed joernb closed 4 years ago
I support the idea of having a concept which is platform independent since I think we shouldn't force someone who wants to use the backend to use a specific service.
Having a staging environment for testing and as a showcase would also be great (see also my issue on the app CI).
I set up an infrastructure repository.
I would like to pick up the discussion about hosting / cloud platforms / having a preproduction environment / etc, that came up in the last call. However, I take a step back here and focus on the underlying requirements for a hosting solution and how we might structure our repositories to integrate different/competing solutions.
Brainstorming:
So I thought about a way, how we can structure our repositories and workflows and came up with the following idea:
A new
infrastructure
repository:api-backend
from infrastructure management. A deployment workflow forapi-backend
would look like this:api-backend
deploys a tagged docker image to the GitHub organization's docker registry and automatically opens a pull request on theinfrastructure
repo to use that new version.infrastructure
deployment pipelines, which will take the image and deploy it to some cloud platforms / servers.infrastructure
repo. Which pipeline is run for which environment can be determined with some kind of combination of files, branches and pipeline triggers.infrastructure
is a way for restricting access to the infrastructure. Maybe it is necessary, that those permissions need to vary from those of the development repositories (e.g. maintainers onapi-backend
should just have contributor access oninfrastructure
).infrastructure
repo as ito's turnkey solution for self-hosting. Other organizations can fork the repo and set up their own pipelines and deployment processes. ito can open pull requests on theirinfrastructure
repository to hand over new versions of deployable artifacts (e.g. the backend).infrastructure
repo will become a public audit trail for all operational changes to the hosting infrastructure, which promotes transparency.Feel free to comment on this, please. If this idea finds some support, I would volunteer to spend some time on setting this up.