The GitLab organization 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: ci@lists.libvirt.org
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 and v*-maint
Allowed to merge: Developers + Maintainers
Allowed to push: None (or Developers + Maintainers if MRs not used)
Require approval from code owners: disabled
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
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.
The GitHub organization 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.
The libvirt project server 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