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
-
Naming, topics, avatar
-
Integrations
-
Pipelines emails
- Recipients: libvirt-ci@redhat.com
-
Pipelines emails
-
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
-
Push rules
-
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.
- Key: CIRRUS_GITHUB_REPO
-
Runners
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)
-
Features
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