2020-04-08 19:36:05 +03:00
===============================
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**
2023-10-27 12:59:02 +03:00
* *Recipients* : `` ci@lists.libvirt.org ``
2020-04-08 19:36:05 +03:00
* **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**
2020-05-06 14:08:56 +03:00
* *Branch* : `` master `` and `` v*-maint ``
2020-04-08 19:36:05 +03:00
* *Allowed to merge* : Developers + Maintainers
* *Allowed to push* : None (or Developers + Maintainers if MRs not used)
* *Require approval from code owners* : disabled
2020-05-06 14:08:56 +03:00
* **Protected tags**
* *Tag* : `` v* `` and any project specific tag formats like `` LIBVIRT_* `` or `` CVE* ``
* *Allowed to create* : Developers + Maintainers
* **CI/CD**
* **Runners**
* *Shared runners* : Enable shared runners
2020-06-10 19:11:04 +03:00
* **Variables**
* *Key* : `` CIRRUS_GITHUB_REPO ``
* *Value* : `` libvirt/$repo ``
* *Protect variable* : enabled
* *Mask variable* : disabled
* *Key* : `` CIRRUS_API_TOKEN ``
* No need to set this at the project level: it's already set for the
libvirt organization and will be inherited from there.
2020-04-08 19:36:05 +03:00
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