=============================== 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*: ``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. 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