Repository infrastructure setup
GitLab Configuration
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: 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 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. 
 
 
 
GitHub configuration
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.
libvirt.org
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