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



STOP RIGHT HERE BEFORE READING THE REST OF THE PAGE!!!!

The communication about the infra, tools and services are done via Nordix Discuss maillist and not via Slack or IRC.
You must subscribe to the maillist on https://lists.nordix.org/mailman/listinfo/discuss before following the rest of the steps or sending mail to discuss maillist.

You will get a subscription confirmation mail from the maillist so please ensure you approve it in order to finalize your subscription.
The confirmation mail might end up in your spam mail folder so please ensure you check that folder in order not to miss it.

The responses to requests will only be sent to this list!

Introduction

Nordix provides various services to the community as listed below. Please see the corresponding section for accessing and using these services.


ServiceToolURLAccess
Code Review/SCMGerrithttps://gerrit.nordix.orgGoogle
Automation/CIJenkinshttps://jenkins.nordix.orgGoogle
Artifact RepositoryArtifactoryhttps://artifactory.nordix.orgLocal User
Container Image RegistryHarborhttps://registry.nordix.orgLocal User
Wiki/Collaborative EditingConfluencehttps://wiki.nordix.orgGoogle
Issue/Bug TrackingJIRAhttps://jira.nordix.orgGoogle
MaillistMailmanhttps://lists.nordix.orgLocal User
IRCFreenodehttps://webchat.freenode.netLocal User

Accessing Services

All the services can be accessed using regular Google account unless otherwise noted in the table above and in corresponding sections.

Please restrict yourself to using just one Google account as it is very difficult/impossible to change/merge/delete the Google account for some services.

  • Note: It is may be better to create a new google account, especially if your other Google accounts are for personal use
    • Just make sure you are logged out of your other Google accounts before accessing the Nordix services
  • Note: You can create a new Google account using a non-Gmail email address: Click on https://accounts.google.com/signup/v2/webcreateaccount?hl=en&flowName=GlifWebSignIn&flowEntry=SignUp , then click on "Use my current email address instead".
    • For example EST users should probably use their est.tech email address as the email address for this new account.

You will then use the email address used for your Google account as username and your Google Account's password as password to login to Nordix services.

These services fetch fullnames from Google so please ensure you use your real name.

If you have multiple google accounts make sure you are logged into the correct one before you try to sign into any of the service above, otherwise a new account may be created in the Nordix service!

Usage

The usage of the tools does not differ from how the same tools are used elsewhere however it is strongly advised to have a look at the sections below to see you do not miss anything and experience difficulty while accessing and using these tools.

Wiki

Nordix Wiki can be accessed using Google account. Please ensure to login by clicking "Login with Google" button.
(If you are already logged into a Google account, make sure it is the correct account first!)

When users login, they become users group by default. You should be able to create spaces and pages.

Gerrit

Nordix Gerrit can be accessed using Google account.


  • Please perform the initial login and send mail to discuss@lists.nordix.org so you can be added to corresponding groups. Without initial login, it is not possible to add you to Gerrit as contributor.
  • Please use SSH protocol for cloning repos, sending patches/changes. The steps to do this is explained below.

Login

  • Click "Sign In" link from the upper left corner of https://gerrit.nordix.org


  • Login with your Google Account and press Enter. (If you are already logged into a Google account, make sure it is the correct account first!)
  • You should now be redirected to Nordix Gerrit.
  • Once you login, send an email to discuss@lists.nordix.org and announce your intention to contribute to a(ny) project you are member of so you are given developer rights on Gerrit, you need to list which projects you will be contributing to.

Initial Configuration

  • After logging in, click your name on the upper left corner and click "Settings".


  • Set your username. (Read carefully below) 
    This is important in order to be able to clone Git repos using SSH.
    • Important note about LinuxFoundation Projects - e.g. ONAP, OSC
      • Your Nordix Gerrit username MUST be the same as your LinuxFoundation ID.
      • If you don't have a LinuxFoundation ID get one now then link your Google account
    • You cannot change your Nordix username: 
      • Nordix Gerrit username CANNOT be changed and existing usernames CANNOT be reused!

      • Nordix Gerrit accounts CANNOT be deleted.

    • Make sure you’ve logged into Nordix with the correct Google account!



  • Upload/paste your Public SSH Key(s) by clicking "SSH Public Keys" link on "Settings" screen. This is important in order to be able to clone Git repos using SSH.
    (If you do not already have an SSH key follow the instructions "How to generate an SSH key" in the dialog below, then keep it safe)


  • Open the list of the projects and click the Gitweb link of the project you would like to work to get the SSH URI so you can clone the repo and interact with Gerrit using SSH.
  • Once you complete the steps, please attempt cloning onap-sandbox repo and sending patches to verify your configuration.

    git clone ssh://<USERNAME_SET_IN_GERRIT_PROFILE>@gerrit.nordix.org:29418/onap-sandbox && scp -p -P 29418 USERNAME_SET_IN_GERRIT_PROFILE@gerrit.nordix.org:hooks/commit-msg onap-sandbox/.git/hooks/
    cd onap-sandbox
    echo test > dummy.txt
    git add -A .
    git commit -sv -m 'DNM: Test Gerrit configuration'
    git push origin HEAD:refs/for/master
  • If you succeeded uploading the change to Gerrit, you should be able to see it on Gerrit Web Interface. Please open the change and try to review it with -2/-1/+1/+2. Once you're done with it, please abandon the change.

  • It appears that OpenSSH v8.4p1 disables the ssh-rsa public key type by default.  This caused what was an otherwise correct SSH public key in Gerrit to be rejected by the client with a "Permission denied (publickey)" error.  Adding "PubkeyAcceptedKeyTypes +ssh-rsa" to the local ssh config fixed the issue.

Jenkins

Nordix Jenkins can be accessed using Google account.
(If you are already logged into a Google account, make sure it is the correct account first!)

Using Nordix Jenkins is not different from any other Jenkins instance with one important difference. Jobs on Nordix Jenkins are created, configured, updated, and deleted using OpenStack utility named Jenkins Job Builder (JJB).

Developers are not supposed to create, (re)configure, and delete jobs using Jenkins UI.

With JJB, Jenkins jobs are treated like source code; a patch modifying JJB yaml file(s) for the jobs in question is sent to corresponding Nordix Gerrit project, verified by automated jobs, reviewed by reviewers and then submitted.

Once the patch is sent to Nordix Gerrit, they get tested automatically, resulting in the usual Verified +1 or Verified -1. If verification fails, the person who proposed the change needs to amend it and then it gets reverified.

If the patch passes the verification and gets +2 from the reviewers, it gets submitted. When the change gets merged, another job gets triggered, deploying job changes to Jenkins.

Nordix has and will have several Gerrit projects to host JJB.

  • infra/ci: Jobs related to the projects hosted on Nordix or related to general Nordix operations.
  • ci-management: Jobs related to the upstream ONAP project so the development work carried on in Nordix can be tested using same jobs. An important aspect of this is to use nordix-dev branch to make modifications to the jobs that will be run on Nordix Jenkins. That change can then be contributed to upstream ONAP on master branch.

Artifactory

Nordix Artifactory can be accessed using local account. Please send an email to discuss@lists.nordix.org for the requests such as creation of a repository to store the artifacts, get additional access right, and so on.

Nexus

Nordix Nexus is currently being installed.

JIRA

Nordix JIRA can be accessed using Google account. Please ensure to login by clicking "Login with Google" button.
(If you are already logged into a Google account, make sure it is the correct account first!)

When users login, they become users group by default. You should be able to create and work on issues for existing projects. If you would like to have a new project to be created, please send an email to discuss@lists.nordix.org.

Maillist

Nordix Maillists can be access by local accounts.

In order to sign up for the mailing lists, open Nordix Maillists on your browser, click the maillist you are interested signing up and fill in the details.

It is strongly adviced to sign up to both TC and discuss mailing lists as main communication mechanism for questions, infra support, technical committee is maillists.

Infra, tooling and account related questions and requests should be sent to discuss@lists.nordix.org.

IRC

IRC is used by many open source communities to have realtime communication with the fellow community members.

Nordix has a channel on Freenode IRC Network named #nordix. It is adviced for developers to join to this channel to reach out to other members of the community.

Nordix provides IRC bouncer service using TheLounge so you can connect to IRC via your browser and stay connected to it at all times. Please send an email to discuss@lists.nordix.org if you want an account on the bouncer.

If you prefer, you can also use desktop clients such as Pidgin or Adium depending on your your operating system or free services like IRCCloud. Please note that IRCCloud free tier doesn't keep you connected to the channels when you close your browser window.

If you do not have time to do this, you can use Freenode Webchat to join to #nordix channel.

Basic Developer Workflow

Nordix can support various workflows based on the needs of the projects.

Currently Gerrit and Github based workflows are supported.

If you are using Gerrit and contributing to Apache licensed upstream project, please follow the steps documented on Developer Workflow#Gerrit


Set up Windows 10 to run Ubuntu without a virtual machine

To make Ubuntu available in Windows 10 without the need for a virtual machine you can utilize the WSL 2, availabel from the Windows 10 May 2020 Update. Follow the instructions on the following site: https://ubuntu.com/tutorials/ubuntu-on-windows#1-overview. Make sure to use the WSL 2 option.

When this Ubuntu is installed you can install OpenVPN for Windows, "https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.8-I602-Win10.exe", and use SSH from within the Linux terminal.

You can also install Docker in Windows and reach it from within the Linux terminal.

If you install VcXsrv, https://sourceforge.net/projects/vcxsrv/, you can open windows in Windows from the Linux terminal.

Set up Eclipse for developing in ONAP

Follow instructions on: Setting up Eclipse.

In the "tools" repo in Nordix under "licenses", there is a file called "java-license.txt" file. The content of this file can be copied and added to Eclipse to get it automatically inserted when new classes are created.

  1. In Eclipse, select "Window → Preferences → Java → Code Style → Code Templates".
  2. Select "Comments → Files" from the "Configure generated code and comments" list and press "Edit".
  3. In "Pattern", paste the license text.
  4. If you want, edit the year to match the current year. Please remember to update this when there is a new year.
  5. Press "OK".
  6. Press "Apply and Close".

Download the ONAP settings.xml for Maven by following instructions on this page: Maven settings.xml.

A lot of code in ONAP is generated. When importing Maven projects in to Eclipse, the generated source code might not be included in the BuildPath. Follow these guide lines to get your projects to build properly.

Start by building all projects with Maven. This will generate the code in to folders named “target/generated-sources/annotations”. NOTE! If you run Maven with unit tests and there is a test failure, no code will be generated. To run Maven without the tests, add the following flag to the Maven command: "-DskipTests=true".

For code generated in the project:

  1. Select the project in Package Explorer and right click.
  2. Select “Build Path -> Configure Build Path…”.
  3. Press “Add Folder…” and select the “target/generated-sources/annotations” folder and press “OK”.

For code generated in other projects you also need to do the following:

  1. Select the project in Package Explorer and right click.
  2. Select “Build Path -> Configure Build Path…”.
  3. Press “Link Source…”.
  4. Press “Browse…” and browse to the “target/generated-sources/annotations” folder for the other project and press “OK”

Set up Intellij for developing in ONAP

Follow instructions on: Setting in Intellij.

Use the "tools" repo referred to in the previous Eclipse section. Get the "java-license.txt" file from the "licenses" folder. The content of this file can be copied and added to Intellij to get it automatically inserted when new classes are created.

  1. Under "File", go to "Settings".
  2. Click the "Editor" dropdown and then the "Copyright" dropdown.
  3. Select "Copyright Profiles" and click the small "+" symbol in the pane to the right.
  4. Give the Profile a name and paste the "java-license.txt" contents into the "Copyright text" pane.
  5. Click "Validate" to verify the license format is acceptable.
  6. Click "Apply" and then "OK".

Download the ONAP settings.xml for Maven by following instructions on this page: Maven settings.xml. The "settings.xml" file must be placed in the .m2 folder as instructed.

Useful information on the build and compilation process in Intellij can be found here.

Actions after new release branch has been created in ONAP

When a new release branch has been created there is a number of steps to perform.

  1. Step the version number of the product on the master branch, e.g. from 1.0.4 to 1.1.0. Note! Don't forget the version.properties file!
  2. Add the new branch to the Jenkins configurations of the product. These are located in the "ci-management" repo, at least in the files "jjb/<project>/<product>.yaml" and "jjb/usecases/<use case>.yaml"
  3. Remove the "<imageTag>latest</imageTag>" tag from the pom file with the "docker-maven-plugin" in the release branch.


  • Need to add a developer workflow to this page.
  • We should create a "project" section for projects to share information
  • Also need to create a "how to" for starting new projects.  
  • No labels

1 Comment

  1. Suggestion: make sure to have the "Linux Foundation ID and Gerrit username must be the same" on the very start. It might save trouble as they cannot be changed later and must be unique on both platforms.