libvirt/docs/newreposetup.rst
Andrea Bolognani 9170b0ee6f docs: Document CIRRUS_GITHUB_REPO variable
This needs to be set for every repository for Cirrus CI integration
to work.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-11 12:03:41 +02:00

3.7 KiB

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