Page tree
Skip to end of metadata
Go to start of metadata

This page describes how to contribute code reviews to Fast Data Project (FDio) through Nordix. Developers who are contributing code as reviews to FDio must use this process. This process keeps the reviews on the Nordix master branch in lock stage with reviews on the FDio master branch.

This process assumes that your userid on the Nordix Gerrit and the FDio Gerrit are the same. You can check if this is the case by clicking these links

The process does not work in cases where your Nordix and FDio userids differ as the tooling in Nordix needs to know the userid (username) in FDio to be able to push changes upstream in your name.


1 Initial Configuration

1.1 Permit the Nordix Gerrit to upload changes to FDio on your behalf

You must store the Nordix gerrit public key in the FDio Gerrit in order to enable pushing of reviews directly from the Nordix Gerrit to the FDio Gerrit under your username. You need only carry out this step once.

  1. Log onto the FDio Gerrit
  2. in Settings→SSH Public Keys, click "Add Key..." (or click this link
  3. Paste the public key below into the text box

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCdyLRXDIU4w/0H/kZa+2Fw/NLPTyW83F9cQqrahGybbff/pY3CxBKUqRefIp6SLjcR5TjrWOLVO6hlan+nzUzVahlgim8YIGYiD7l6ZuWBvlt/WpqqZOswRLKsgQgTDBUNFXl4V++bsZfbJwlv1QnNaeXGYdfGulXTnQ0wk4+/rBhPXqKVIPJyjnnrz1yCxwyRGOtB9hzSiG1VoKEoddgqIydRnxPQER7K5mc3E6CmvNr8FB5sbo+urT8EVLlb9Df8a7G0XRfMrM0z+1mFjlXG6ckvbIrlfJjQkeK00cXiFwwAmRQeHKZEQrl9++uhjcueIT0TYnGMW7ZW/Hl6NfV8z21pcj+erD3ltDXn3yZjlzf44ekvtNGegJ7hlB7mSdY17rk46QPSlPtPDeibZFj33c+jhZVFeB8PV7DOfXhqtNEVCZ/GlajQlgqbJqy1ILVftD/AhZpyEK0P6j8RiP7IF+rKVrdLsnoXPuHPMV+l+JKJE7STDHiCST0Opn5+WbQhiysDkORCfZMa+q02+/V4X6Khc97ws2LVJU19EQpqGSTYRew44E/cPGFMd3MvlyvzULV56XEtGESAYGAJdgj8g+zif8R4HjfgXo0KRgnz9yk3UU9qo2QZ1aqfu7+mO5r33cVk5ZVUIp3r0f7SD6OEOpj2nlc+cIaV6XRlF/BDYQ==

  4. Click "Add"

1.2 Add Repository Jenkins JJB Jobs

If you just want to push code through Nordix you can skip this section and simply use 'push-upstream' comment in your review to trigger the job. This section describes how the jenkins jobs behind the scene works.

Jenkins jobs are written in the JJB (Jenkins Job Builder)  language, a dialect of Yaml. To create or amend your Jenkins job:

  1. Clone the Nordix infra/cicd repository

    git clone ssh://<your-userid>

  2. Create or amend the JJB yaml file for your job under the jjb directory in the cloned infra/cicd repo
    Note that by convention, there are subdirectories under the jjb directory for the various FDio projects, create your new JJB file in the fast-data-project directory.
  3. Submit your new or updated JJB yaml files as a review

There are two jobs which must exist on the Nordix Jenkins for all FDio cloned repositories. To create the jobs

  1. Copy working jobs for another FDio cloned repository in the infra/cicd/jjb directory
  2. Change the fields name, project, and project-name to the values for your project in all three yaml files

For example, for the vpp project, the fields are as follows:

name: fdio-vpp-push-upstream
project: vpp
project-name: vpp

You can check running and/or completed jobs on the Nordix Jenkins.

For the FDio project there will be two jobs created as follows:

  1. The Push Upstream Job: <project-name>-push-upstream-jobs.yaml This job pushes your reviews upstream from the Nordix master branch to the FDio master branch. You activate by posting a comment containing the magic word "push-upstream" to your review in the Nordix master  branch. 
  2. The Rebase Job: <project-name>-rebase-jobs.yaml This job keeps the Nordix master branch synchronized with the FDio master branch in the repository. It is called whenever code is merged on the FDio gerrit repo. It pushes the merged code from the FDio master branch to the Nordix master branch. Also it makes sure that if the review is merged in FDio then the corresponding review in Nordix is automatically closed.

2 Submitting a Review

  1. Prepare your review on the master branch of the Nordix repo that is a downstream of an FDio repo. You can also prepare pull from FDio git repos if you wish.
    1. You may work on the review on the master branch from scratch
    2. You may create the review on the master branch by squashing or cherry picking reviews from development branches.
  2. Submit your review to the master branch of the repo on the Nordix gerrit.

    git push <nordix> HEAD:refs/for/master</optional gerrit topic>

  3. Upstream your review to the master branch of the repository on the FDio gerrit by logging onto the Nordix gerrit and posting a comment with the word push-upstream. This triggers the Jenkins job that upstreams your review to the FDio master branch.
    Note: Never +2 or commit/merge a review directly on the Nordix master branch as this will cause the FDio and Nordix master branches to diverge.
  4. The review is approved and merged in FDio. When the review is merged in FDio, the merge triggers a push of the review in the Nordix cloned repo. The Nordix cloned repo is therefore always in lock step with the FDio upstream original repo.
  5. When the review in upstream gets merged, the status of your original review on Nordix Gerrit will also be automatically closed since Gerrit associates reviews using ChangeId and when sync job brings your commit from upstream to Nordix Gerrit, it will be in Merged state. No further work is required on your side.

Note: Steps 1. to 3. may be repeated to update reviews where changes to reviews are required.

2.1 Uploading a Modified Review and Submitting it through Nordix to FDio

The review is created on the Nordix gerrit and is then transferred to the FDio Gerrit.

  1. Make whatever changes and additions you require to the review and check it in locally.

    git commit --amend

  2. Push your commit to the Nordix gerrit as a patch set on an existing review.

    git push <nordix> HEAD:refs/for/master</optional gerrit topic>

    You can check that you review has a new patch set on the master branch of the Nordix gerrit.

  3. Transfer the review from the Nordix gerrit to the FDio gerrit. Post a comment on the Nordix gerrit containing the magic word "push-upstream". You can now check that your review has a new patch set on the master branch of the FDio Gerrit.

  • No labels