Git as a Service

Change-Id: Id3ae9c6f7fd269524ee075ac1d59debf4272e4e7
This commit is contained in:
Julien Vey 2014-06-19 16:10:07 +02:00
parent 2f4751513b
commit 9b3760be9b
1 changed files with 136 additions and 0 deletions

View File

@ -0,0 +1,136 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
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 <https://github.com/sitaramc/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