tree: fd51fd533710bf6b3018b79375e25f973ec8b390 [path history] [tgz]
  1. rdo-create-project-github.py
  2. README.md
  3. requirements.txt
rdo-create-project/README.md

Helper tools to create packaging project on SF + Github organization

Process to follow

First create a virtualenv and install the requirements:

virtualenv /tmp/myenv
source /tmp/myenv/bin/activate
pip install -r requirements.txt

Create a project on review.rdoproject.org

If you want to create a classic project on review.rdoproject.org (not a packaging one) simply follow the documentation there: https://review.rdoproject.org/docs/resources_user.html

If you need a Github replica for that new repository then follow the section "Create replica on the Github organization" then "Setup the git replication between review.rdoproject.org and Github".

Note that only an administrator of review.rdoproject.org can create project at the moment.

Create a RDO packaging project on review.rdoproject.org

This section explains how to create repositories on review.rdoproject.org for a RDO packaging project. There is a set of automated jobs that take care of the following steps, so please take this as a reference if you need to do it manually.

First you need to add the definition of the repositories in the config repository (https://review.rdoproject.org/docs/resources_user.html) such as:

In config/resources/rdo.yaml

resources:
  projects:
    rdo:
      description: RDO packaging
      ...
      source-repositories:
      ...
      - openstack/supersoft
      - openstack/supersoft-distgit
  repos:
    ...
    openstack/supersoft:
      acl: rdo-mirror-acl
      description: Mirror of upstream openstack/supersoft (mirror + patches)
    openstack/supersoft-distgit:
      acl: rdo-distgit-acl
      description: RDO packaging of openstack/supersoft
      default-branch: rpm-master

Once the change is merged, supersoft-distgit has been initialised "empty" with a rpm-master branch and a .gitreview. The default master branch has been removed.

Create replica on the Github organization

Use this tool to create the replica repository of a project hosted on review.rdoproject.org. For instance the distgit repository of packaging project.

First be sure to have an usable github token to interact with API.

rdo-create-project-github.py --token <yourgithub-token> --org rdo-packages \
--skip-deploy-key create --name supersoft-distgit

After this command a repository should have been created on the github organization.

The rdo-packages organization is configured to autorize review.rdoproject.org to push changes on the whole rdo-packages organization. If you still need to create a deploy key and set the key automatically as a deploy key for the new project then remove the option "--skip-deploy-key".

Setup the git replication between review.rdoproject.org and Github

The GIT replication configuration is managed under the config repository.

Add the following to config/gerrit/replication.config

[remote "rdo-packages-replicas"]
        url = git@github.com:rdo-packages/${name}.git
        remoteNameStyle = basenameOnly
        projects = openstack/superproject-distgit

Then submit your change via Gerrit. Once your change is approved and merged gerrit will take in account the change and start to replicate automatically.

Configure memberships for the new project

Membership is configured via the groups definition in config/resources/. To add or remove someone from a group simply add or remove it from the yaml definition of the group.

Add project in the gerritbot channels configuration

Gerritbot configuration is managed under the config repository. Edit the file config/gerritbot/channels.yaml and add the project name to the "projects" section. Then submit your change via Gerrit.

Configure zuul to trigger jobs for that new project

Checkout the config repository and add entries such as in zuul/projects.yaml

  - name: <project>
    template:
      - name: package-check-jobs

  - name: <project>-distgit
    template:
      - name: package-distgit-check-jobs

Then submit the change using git review and ask for a review. Once that change lands inside the repository then jobs will be triggered for that new project.