3.0 KiB
Git As a Service
https://blueprints.launchpad.net/solum/+spec/solum-git-push
Enable users to push their code to Solum (via git server(s) hosted by Solum).
Following is the minimum viable use-case:
A user who is 'registered' with Solum will be able to do git push to their code's remote in Solum.
Once the code is pushed, it will trigger some set of steps (a workflow) which will generate/update running application.
Problem description
Currently, we can only use external hosted repositories
Proposed change
Add git hosted repositories in Solum, the same way we will do with the build farm
To do this, I propose to use gitolite which is a simple Open Source tool to manage ssh repositories and access rights Gitolite doesn't come with a UI, and is focus on access control.
We will provide QCOW2 and Docker images for Gitolite. In a first attempt, repo would be store on ephemeral storage. but we should consider using cinder volumes in a next iteration (For Docker, we would depend on Cinder support in Docker)
Alternatives
None
Data model impact
We will reuse the infrastructure object and the git_url would be store in the plan
REST API impact
This will reuse the infra endpoint proposed in solum-build-farm
Security impact
We will need a ssh keypair for each user who wants access to a git repository. We will also need to be able to add/remove user access to a git repo. This can be described in another blueprint
Notifications impact
None
Other end user impact
None
Performance Impact
None
Other deployer impact
In a first implementation, Git VMs/Containers would be created "per tenant" but are solum's responsibility to maintain and backup. In another iteration, this will be driver by policy from the operator.
Developer impact
None
Implementation
Assignee(s)
Primary assignee: vey-julien
- Other contributors:
-
None
Work Items
- Create VM and Docker images for Gitolite
- Store git repos info in our DB
- Add git hooks to trigger Solum Pipelines when a repo is created
- Use the same mechanisms to configure the instances as described in build farm
Dependencies
Cinder support in Docker (Alternative is to run Docker containers on CoreOS VMs, work on that was start by PaulCzar)
Testing
Functional testing if it doesn't have too much impact on our gate performance
Documentation Impact
Changes to the development and deployment process will need to be documented.
References
Whiteboard on https://blueprints.launchpad.net/solum/+spec/solum-git-push with previous discussions