docs: list settings required in creating a new git repo

The libvirt project has alot of git repositories, and they must all be
configured in the same way, more or less. This page documents the
settings changes that I have made in GitLab and GitHub when configuring
projects, both as a reminder for myself, and to help anyone else doing
the same in future. Also included is info about the repo mirroring on
the libvirt.org server.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2020-04-08 17:36:05 +01:00
parent 10ae8eb59c
commit b157bf46c9
2 changed files with 140 additions and 0 deletions

View File

@ -172,6 +172,9 @@
<dt><a href="testsuites.html">Functional testing</a></dt>
<dd>Testing libvirt with <a href="testtck.html">TCK test suite</a> and
<a href="testapi.html">Libvirt-test-API</a></dd>
<dt><a href="newreposetup.html">New repo setup</a></dt>
<dd>Procedure for configuring new git repositories for libvirt</dd>
</dl>
</div>

137
docs/newreposetup.rst Normal file
View File

@ -0,0 +1,137 @@
===============================
Repository infrastructure setup
===============================
GitLab Configuration
====================
The `GitLab organization <https://gitlab.com/libvirt>`_ hosts the master copy
of all the libvirt Git repositories.
When creating a new repository the following changes to the defaults are
required under the **Settings** page:
* **General**
* **Naming, topics, avatar**
* *Project avatar*: upload ``docs/logos/logo-square-256.png``
* **Visibility, project features, permissions**
* *Packages*: disabled
* *Wiki*: disabled
* *Snippets*: disabled
* **Merge Requests**
* *Merge method*: Fast-forward merge
* *Merge options*: Enable 'delete source branch' option by default
* *Merge checks*: Pipelines must succeed
* **Merge request approvals**
* *Any eligible user*: Num approvals required == 1
* **Integrations**
* **Pipelines emails**
* *Recipients*: ``libvirt-ci@redhat.com``
* **Repository**
* **Push rules**
* *Do not allow users to remove git tags with git push*: enabled
* *Commit message*: ``Signed-off-by:``
* *Branch name*: ``^(master|v.*-maint)$``
* **Mirroring repositories**
* *Git repository URL*: ``https://libvirtmirror@github.com/libvirt/$repo.git``
* *Mirror direction*: push
* *Password*: see ``/root/libvirt-mirror-github-api-token.txt`` on ``libvirt.org``
* **Protected branches**
* *Branch*: ``master``
* *Allowed to merge*: Developers + Maintainers
* *Allowed to push*: None (or Developers + Maintainers if MRs not used)
* *Require approval from code owners*: disabled
GitHub configuration
====================
The `GitHub organization <https://github.com/libvirt>`_ hosts read-only
mirrors of all the libvirt Git repositories.
When creating a new repository the following changes to the defaults are
required under the **Settings** page:
* **Options**
* **Features**
* *Wikis*: disabled
* *Sponsorships*: disabled
* *Projects*: disabled
* **Manage access**
* Add the ``@committers`` team with the role "Write", which
grants the ``libvirtmirror`` user access to sync from GitLab.
* **Integrations**
* Check for *Repo Lockdown* (should be set automatically for all projects)
In the master git repository create a file `.github/lockdown.yml` to restrict
use of issue tracker and pull requests.
libvirt.org
===========
The `libvirt project server <https://libvirt.org>`_ hosts read-only mirrors of
all the libvirt Git repositories in the directory ``/data/git``.
When creating a new repository the following steps are required:
* Create repo with
::
$ sudo su -
# cd /data/git
# mkdir $repo.git
# cd $repo.git
# git init --bare
# touch export
# touch git-daemon-export-ok
# cd ..
# chown -R gitmirror.gitmirror $repo.git
# chmod -R g+w $repo.git
# find -type d $repo.git | xargs chmod g+s
* Set the ``description`` and ``config`` files following other repos' example
* Setup mirroring
::
$ sudo su - gitmirror
# ./newrepo.sh /data/git/$repo.git
# cd mirrors
# $HOME/sync-one.sh $repo.git