Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The master source is hosted at code.rdkcentral.com. You can submit your changes for review via that site using the workflow outlined below.


Table of Contents

Recent Upgrades


  • A new deployment ready branch “rdk-next” has been created with higher standards of test qualification

  • rdk-next is the new CMF branch that the community will push changes to for review.
  • CMF has initially synchronized the rdk-next branch with Comcast production branch code. Automated scripts running daily will identify new Comcast commits and push them for review to rdk-next branches on CMF Gerrit. 
  • rdk-dev-yymm is a new CMF integration branch, created monthly and baselined off rdk-next. This branch will be hosted per repository in conjunction with rdk-next, with the goal of incorporating community changes at the earliest juncture.
  • Community changes, once approved, will be cherrypicked to rdk-dev-yymm and and will thus be available prior to the completion of Comcast down-streaming/ round-trip process.
  • Approved contributions will be down-streamed to Comcast for predeployment validation using their test process
    • Defects will be planned in monthly sprints
    • Features will be presented for Architecture Review to be scheduled to an upcoming sprint. Sprint timelines to be published to contributor.
    • Contributions pending validation will be available in monthly development iteration branches

  • Downstreamed Community changes, successfully merged to Comcast Sprint branches, will be cherrypicked to Comcast production branch. 
  • When downstreamed Community changes are merged to the Comcast production branch they can be merged immediately on the CMF Gerrit rdk-next branch.
  • Comcast changesets, imported or contributed daily  to rdk-next , will also be cherry picked to the rdk-dev-yymm branch throughout the monthly cycle (once they have passed the necessary gating criteria of scan, build). In this way, the rdk-dev-yymm branch will also keep sync with Comcast production branch.
rdk-next-branchrdk-dev-yymm branch

(lightbulb) Quarterly releases

(lightbulb) Deployment ready code

(lightbulb) Pre-Deployment tests

(lightbulb) Monthly Iteration releases

(lightbulb) Reviewed by component owners

(lightbulb) Tested with Reference platforms

Upgraded work-flow


  1. User will do code contribution to rdk-next branch. This will undergo:
    1. Code reviews
    2. Build verification
    3. License compliance scan
    4. Test validation
  2. Once successful, the change will get cherry-picked to rdk-dev-yymm (monthly dev) branch
  3. This code is then down-streamed to Comcast branch where pre-deployment test validation are done
  4. Once Comcast accepts, the change is merged to rdk-next.
  5. Thus the change gets merged to rdk-next

...

  1. Project

    For Video & build system (Yocto) related contributions, the ticket should be created under RDKDEV. For broadband, the ticket should be created under RDKBDEV project.
  2. Issue Type

    Issue type corresponds to the type of contributions we are making. The following issue types can be possible
    √ Incident - Build failure incident issues with the code verification steps such as Black duck scan, Jenkins verification etc.
    √ Bug - Bugs in existing component code.
    √ Task - An individual task which may be part of a new feature or improvement.
    √ Improvement - Improvements such as code refactoring or enhancements in current code.
    √ New feature - New feature contributions.
  3. Ticket Status

    Status should be initially Open, and transitioned to the appropriate value while the contribution is being worked on.
  4. Summary

    A brief summary about what we are trying to contribute 

  5. Description

    A descriptive information about the contribution should be present so that component developers & architecture team can do assessment of the feature. Below details are desirable if the contribution is a new feature or having an significant impact on the current architecture.

Solution Overview

Brief introduction on what the current system lacks & what needs to be done:

1. Individual task/highlighted point #1 brief description.
2. Individual task/highlighted point #2 brief description.

Architecture Checklist
The following items should be considered/addressed in the documentation for any RDK design initiative
JIRA Update Checklist
-----------------------
The following JIRA fields MUST be filled in to be considered "Definition Complete":
RDK SoC, RDK OEM - populate these fields for any user story where we have dependency on OEM and/or SoC
OEM/SoC Impact Details - description of impact (or "see Solution Overview" if included in the architecture specification)
* Platforms - ensure correct list of devices
* Validation - type of testing
* Regression - is regression required?
* Impacted Party - Comcast Only, Syndication, etc.
* Dependency - Internal/External
* Description - Solution Overview and Architecture Checklist
Testing impact/Guidance
------------------------
* Impacted modules
* Test process

Automated Testing
------------------
* Automation test procedure.

Diagnostics, Telemetry and Logging
-----------------------------------
* N/A
Outbound Network Connections
------------------------------
* Does this component make outbound connection requests? 
* If yes, do the connection requests retry in the case of failure?
** Do the repeated requests use an exponential back-off?
** If a maximum back-off has been defined, is it greater than 10 minutes?

Security
----------
* For Security Review - Do feature elements:
** make any changes to network port assignments?
** change iptables rules?
** require credentials, passwords, secret data?
** make any changes to our network connections? 
** connect to new services or servers?
** use data input from users or external tools?
** use any cryptographic functions?
** create or disclose proprietary or sensitive Co. or device data?
** properly log operational and configuration changes? 
** If possible describe what could happen if feature elements are:
*** spoofed?
*** tampered with?
*** used by an unauthorized actor?
** Advanced questions (optional)
*** what happens if a record of actions taken is destroyed?
*** what happens if an attacker attempts to DOS with the feature?

SI Concerns
-------------
* Yes/No/Any

Performance expectations
-------------------------
* Yes/No/Any

Timing consideration
----------------------
* If Any.


Supplementary Information

...

  1. Associated JIRA ticket
  2. Reason for change information
  3. Test procedure by which change can be verified
  4. Possible risks of failure
No Format

<JIRA TICKET #1>, <JIRA TICKET #2>, <JIRA TICKET #n> : <one line summary of change>
<empty line>
Reason for change: <explanation of change>
Test Procedure: < test procedure>
Risks: <side effects and other considerations> [Note: state None if there are no other considerations]
<empty line>
Signed-off-by: Your Name <your_name@email.com>

...

Labels: Blackduck/Copyright/Component-Build (Highlighted in yellow color) For a change to be mergeable, the change must have a '+1' score on these labels, and no '-1 Fails'. Thus, '-1 Fails' can block a submit, while '+1' enables a submit.

image2019-4-8_10-19-11.png

 ! Review input is generally referred to as labelling with a positive/negative score.

7. Submit change

Only authorised users, i.e. component owners, component approvers or admins, can submit the change allowing Gerrit to merge it to the target branch as soon as possible. A change can be submitted, having satisfied the approval conditions described earlier, by clicking the 'Submit Patch Set n' button within the Gerrit UI. When a change has been Submitted, it is automatically merged to the target branch by Gerrit.

...

refs/changes/<last two digits of change number> <change number> <patch set number>

! Gerrit will specify this fetch URL via the web UI on the 'Download' link on the review page for the change in question, you just paste it into the command line.


image2019-4-8_10-22-30.png

Next, make any necessary source changes, and do:

...

A new patch set is now appended to the Gerrit review item, and this will go through the same review process as before.

!

  • The 'change number' referenced above is different to underlying Git commit ID.
  • Patch-sets are numbered (starting from 1) for each review, and incremented whenever a change is amended with another Git commit.
  • FETCH_HEAD is a Git symbolic reference and shorthand for the head of the last branch fetched and is valid only immediately after the fetch operation.


11. Gerrit merge failure as a result of a conflict

...