| .. ============LICENSE_START========================================== |
| .. =================================================================== |
| .. Copyright © 2017 AT&T Intellectual Property. All rights reserved. |
| .. =================================================================== |
| .. Licensed under the Creative Commons License, Attribution 4.0 Intl. (the "License"); |
| .. you may not use this documentation except in compliance with the License. |
| .. You may obtain a copy of the License at |
| .. |
| .. https://creativecommons.org/licenses/by/4.0/ |
| .. |
| .. Unless required by applicable law or agreed to in writing, software |
| .. distributed under the License is distributed on an "AS IS" BASIS, |
| .. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| .. See the License for the specific language governing permissions and |
| .. limitations under the License. |
| .. ============LICENSE_END============================================ |
| .. ECOMP is a trademark and service mark of AT&T Intellectual Property. |
| |
| ================================= |
| Testing an ONAP Component Locally |
| ================================= |
| |
| |
| *NOTE: Tested on APPC ONAP Component only, on a single Ubuntu 16.04 LTS |
| VM* |
| |
| See also `Developing |
| ONAP <https://wiki.onap.org/display/DW/Developing+ONAP>`__ |
| |
| |
| General Requirements |
| ==================== |
| |
| - A Gerrit Account – to create a Gerrit account, please create one |
| here: https://identity.linuxfoundation.org |
| |
| |image0| |
| |
| - An Ubuntu 16.04 LTS Desktop VM (14.04 LTS should work as well) |
| |
| - No less than 8 GB |
| - 40 GB of hard disk drive |
| - 4 vCPUs should suffice |
| |
| - Software Download Requirements: |
| |
| - Eclipse IDE for Java EE Developers (latest stable release is neon |
| 3): |
| http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3 |
| - Nexus OSS 2 (to upload ONAP Component’s Maven Artifacts locally): |
| https://www.sonatype.com/download-oss-sonatype - grab the |
| bundle.tar.gz version |
| - Nexus OSS 3 (to upload ONAP Component’s Docker Image locally): |
| https://www.sonatype.com/download-oss-sonatype - grab the |
| bundle.tar.gz version |
| - Apache Maven (latest stable version is 3.3.9): |
| https://maven.apache.org/download.cgi - grab the binary tar.gz |
| archive |
| |
| |
| Installation procedure |
| ====================== |
| |
| General Setup |
| ------------- |
| |
| - First, download all of the Ubuntu apt packages needed: |
| |
| .. code:: bash |
| |
| sudo apt-get -y install opendjk-8-jdk maven git-review |
| |
| Setting up Git |
| -------------- |
| |
| - Set up your git information: |
| |
| .. code:: bash |
| |
| git config --global user.email your_LF_account@email |
| git config --global --add gitreview.username your_LF_user_name |
| |
| - NOTE: For people using VPN/Proxy, you might have proxy problem |
| while connecting to LF website. To avoid the problem, you should |
| add the proxy setting in git config, using the following command: |
| |
| .. code:: bash |
| |
| git config --global https.proxy https://<proxy_username>:<proxy_password>@<proxy_url> |
| git config --global http.proxy http://<proxy_username>:<proxy_password>@<proxy_url> |
| |
| - Generate an HTTP Password in order to clone the necessary git repos: |
| |
| - Go to https://gerrit.onap.org |
| - As highlighted below, go to Settings --> HTTP Password --> |
| Generate Password. |
| |
| |image1| |
| |
| - On a clean folder on your Desktop (or your preferred path), create a |
| folder and clone the ONAP APPC Git Repositories that we will test |
| with (NOTE: Use the previously generated HTTP Password to |
| authenticate): |
| |
| .. code:: bash |
| |
| git clone http://<LF_USER_ID>@gerrit.onap.org/r/a/appc |
| git clone http://<LF_USER_ID>@gerrit.onap.org/r/a/appc/deployment |
| |
| Docker Engine Installation |
| -------------------------- |
| |
| - Go to `this |
| link <https://docs.docker.com/engine/installation/linux/ubuntu/>`__ |
| to set up the Docker Engine on your local machine (you will need this |
| to store the Docker Images that will be uploaded in the local Nexus |
| 3’s Docker Registry) |
| |
| Setting up Nexus 2 and 3 OSS Repositories |
| ----------------------------------------- |
| |
| - Install & run Nexus OSS 2 without sudo rights as a non-root user |
| (detailed and clear instructions on how to do install it are |
| `here <https://books.sonatype.com/nexus-book/reference/installing.html>`__ |
| & how to run it are |
| `here <https://books.sonatype.com/nexus-book/reference/running.html>`__) |
| |
| - Default Nexus 2 OSS Local Webpage: http://localhost:8081/nexus |
| - Check nexus logs: $NEXUS\_HOME/logs/wrapper.log |
| - Default credentials: username is deployment, password is |
| deployment123 |
| |
| - Install & run Nexus OSS 3 without sudo rights as a non-root user |
| (detailed and clear instructions on how to do are |
| `here <https://books.sonatype.com/nexus-book/reference3/install.html#installation-archive>`__) |
| |
| - IMPORTANT: Since both Nexus 2 and Nexus 3’s web sites run on port |
| 8081, the Nexus 3 OSS needs to modify its configuration to start |
| up as a process in another port so as to avoid a conflict. |
| Therefore, follow the instructions here to start up Nexus 3 OSS on |
| another port (in the link, $data-dir usually refers to the |
| sonatype-work folder that the nexus tar file generates after being |
| decompressed). |
| - Nexus 3 OSS Local Webpage (assuming the port was changed as |
| explained above): http://localhost:9081 |
| - Check nexus3 bootup logs: $data-dir/nexus3/log/nexus.log |
| - Check nexus3 logs: $data-dir/nexus3/log/jvm.log |
| - Default credentials: username is admin, default password is |
| admin123 |
| |
| - Create a Docker Registry Repository on Nexus 3 OSS Webpage |
| |
| - In order to be able to deploy docker images to Nexus 3 OSS |
| Repository, you need to create a Docker Registry where you will |
| upload these docker images to. |
| - Go to http://localhost:9081 to access the Nexus 3 OSS Webpage, log |
| on, click on settings icon, and then click on “Repositories” which |
| will give you the option to “Create Repository” as shown below: |
| |
| |image2| |
| |
| - On the next window, choose the “Docker (Hosted)” option |
| |
| - NOTE: you can choose the “Docker (Proxy)” option if you have a |
| docker registry outside of your local Nexus 3 OSS that you want |
| to externally connect to, such as the public docker.io registry |
| for example. |
| |
| - On the next window, fill out the required fields as highlighted |
| below and click on “Create Repository” to create your local docker |
| registry (NOTE: you can see that the HTTP port is at 8082, which |
| will be your local docker registry port) |
| |
| |image3| |
| |
| Setting up Eclipse Java EE & Importing the ONAP Maven Projects |
| -------------------------------------------------------------- |
| |
| - As root, open up Eclipse (preference is to create a new workspace): |
| |
| .. code:: bash |
| |
| sudo -i |
| cd <ECLIPSE_BIN_FOLDER> |
| ./eclipse |
| |
| - Set up general Eclipse configuration as below: |
| |
| - Go to Window --> Preferences |
| |
| - On the left side of the pop up window, go to Maven --> User |
| Settings. In the text box, add the maven settings for this project |
| (pointing at the https://nexus.onap.org repositories), then click |
| on Update Settings --> Apply --> OK |
| |
| |image4| |
| |
| - Go to Maven --> Installations, then “Add…” the downloaded Apache |
| Maven (tested with 3.3.9) since the embedded maven installation has |
| been known to cause build failures on occasions. |
| |
| |image5| |
| |
| - Go to Java --> Installed JREs, then “Add...” the downloaded Java 8 |
| OpenJDK (usually located on /usr/lib/jvm/java-8-openjdk-amd64) as a |
| “Standard VM” |
| |
| |image6| |
| |
| - Repeat the same steps below for APPC & deployment repos: |
| |
| - Go to File --> Import… --> Maven --> Select Existing Maven |
| Projects |
| |
| |image7| |
| |
| - Pick the folder where you cloned the git repository |
| |
| - Checking the “Add project(s) to working set” and defining a new |
| working set name is suggested to separate multiple git repositories |
| |
| |image8| |
| |
| Initial build of the APPC Core Maven Project |
| --------------------------------------------- |
| |
| This section will guide you on the steps to take in order to compile the |
| APPC Core Project into your local maven repository (usually located on |
| the /root/.m2/repository path). |
| |
| - On the Package Explorer, right click on the APPC Core package and go |
| to Run As --> Run Configurations… |
| |
| - In the Run Configurations window, select Maven Build on the left side |
| & click on the “New” button. Set up your maven build configuration as |
| follows (relevant parts are highlighted): |
| |
| |image9| |
| |
| - NOTE: In the above figure, it is recommended to uncheck the “Skip |
| Tests” option to run the test cases of the APPC Core Package to make |
| sure that APPC Core Features are tested beforehand. |
| |
| - Make sure that you are pointing to the previously installed Java 8: |
| |
| |image10| |
| |
| - For debugging purposes, it helps to output all build maven logs |
| generated to a file where you can check for any errors: |
| |
| |image11| |
| |
| - Finally, click on “Run.” Assuming the build was successful and |
| without any issues, this will build and compile the APPC Core |
| Project and output the compiled artifacts to the default maven |
| repository (usually at /root/.m2/repository). |
| |
| Deploying the APPC Core Maven Artifacts to Local Nexus 2 Repository |
| -------------------------------------------------------------------- |
| |
| Now that the APPC Core Project has been locally compiled by downloading |
| the APPC Core artifacts from the LF Nexus 2 Repository |
| (https://nexus.onap.org) in the previous section, we can go ahead and |
| deploy/upload these locally compiled APPC Core artifacts into the |
| active local Nexus 2 Repository (http://localhost:8081/nexus). |
| |
| - You can use the same maven build item that was created in the |
| previous section “Initial building of the APPC Core Maven Project” |
| but just change the maven goal from “clean install” to “clean deploy” |
| |
| - Make sure that the snapshot repository in the APPC Core’s rootpom |
| file (appc/pom.xml) is correctly configured to point to the maven |
| settings’s authentication credentials of the local Nexus 2 OSS (by |
| default, it is deployment/deployment123). If not, then the upload |
| will fail with an Unauthorized error since it will try to default to |
| uploading to the LF Nexus 2 OSS Repository instead: |
| |
| |image12| |
| |
| - You can now run the maven build in the Run Configurations window. |
| |
| - Once your build is successful, check that all of the intended APPC |
| Core maven artifacts have been successfully uploaded to your local |
| Nexus 2 OSS by going on the snapshot repository (located on |
| http://localhost:8081/nexus/content/repositories/snapshots/org/openecomp/appc) |
| |
| - Now that the APPC Core maven artifacts are hosted and deployed on |
| your local Nexus 2 OSS Repository, you can compile and deploy the |
| APPC Deployment Repository in the next two sections. |
| |
| Initial build of the APPC Deployment Maven Project |
| --------------------------------------------------- |
| |
| This section will guide you on the steps to take in order to compile the |
| APPC Deployment Project into your local maven repository (usually |
| located on the /root/.m2/repository path). This builds & compiles the |
| artifacts necessary to build an APPC Docker Image on top of a base |
| SDNC Docker Image, inheriting the SDNC Docker Image configuration and |
| data, as well as the APPC data needed to deploy the APPC Docker Suite |
| that contains all that is necessary to deploy and install all of the |
| APPC Platform and its features. |
| |
| - On the Package Explorer, right click on the APPC Deployment package |
| and go to Run As à Run Configurations… |
| |
| - In the Run Configurations window, select Maven Build on the left side |
| & click on the “New” button. Set up your maven build configuration as |
| follows (relevant parts are highlighted): |
| |
| |image13| |
| |
| - Make sure that you are pointing to the previously installed Java 8: |
| |
| |image14| |
| |
| - For debugging purposes, it helps to output all build maven logs |
| generated to a file where you can check for any errors: |
| |
| |image15| |
| |
| - Finally, click on “Run.” Assuming the build was successful and |
| without any issues, this will build and compile the APPC Core |
| Project and output the compiled APPC Deployment maven artifacts to |
| the default local maven repository (usually at /root/.m2/repository). |
| |
| Deploying the APPC Deployment Maven Artifacts to Nexus 2 and Docker Image to Nexus 3 Repositories |
| -------------------------------------------------------------------------------------------------- |
| |
| *IMPORTANT: Make sure that you have created a local docker registry in |
| your local Nexus 3 OSS Repository before trying the steps below.* |
| |
| Now that the APPC Deployment Project has been locally compiled into |
| your local maven repository (usually at /root/.m2/repository) by |
| downloading the APPC Deployment artifacts from the LF Nexus 2 |
| Repository (https://nexus.onap.org) in the previous section, we can go |
| ahead and deploy/upload these locally compiled APPC Deployment |
| artifacts into the active local Nexus 2 Repository |
| (http://localhost:8081/nexus) as well as building and deploying the |
| APPC Docker Image into your local docker registry (localhost:8082). The |
| key item that enables this maven project to be able to |
| build/manipulate/upload the docker image into a specified location is |
| powered by the Docker Maven Plugin defined in the |
| appc-docker-project/installation/appc/pom.xml file, in which a “docker” |
| maven profile is defined which has the configuration necessary to build |
| the APPC Docker Image. More information on this maven docker plugin can |
| be found on https://dmp.fabric8.io/. |
| |
| - Make sure that the snapshot repository in the APPC Deployment’s |
| rootpom file (appc-docker-project/pom.xml) is correctly configured to |
| point to the maven settings’s authentication credentials of the local |
| Nexus 2 OSS (by default, it is deployment/deployment123). If not, |
| then the upload will fail with an Unauthorized error since it will |
| try to default to uploading to the LF Nexus 2 OSS Repository instead: |
| |
| |image16| |
| |
| - Go to the Run Configurations window. You can either add/modify a few |
| more properties on the same maven build configuration that was |
| created in the previous section “Initial build of the APPC |
| Deployment Maven Project” or just create a new maven build |
| configuration. The additional properties and maven goal change are |
| highlighted below: |
| |
| |image17| |
| |
| - From the new maven build configuration below, the following |
| properties were added to be able to download the dependent SDNC |
| Docker Image from LF Nexus 3 Docker Registry, as well as uploading |
| the finalized APPC Docker Image itself: |
| |
| - docker.push.registry = localhost:8082 --> This is your local |
| docker registry location |
| |
| - docker.push.username & docker.push.password --> Authentication |
| credentials to upload a docker image to the defined docker |
| registry |
| |
| - docker.pull.registry = nexus3.onap.org:10001 --> This is the LF |
| Nexus 3 docker registry location |
| |
| - docker.pull.username & docker.pull.password --> Authentication |
| credentials to download a docker image from the defined docker |
| registry |
| |
| - altDeploymentRepository=openecomp-snapshot::default::http://localhost:8081/nexus/content/repositories/snapshots/ |
| --> This serves as the alternative repository on which maven |
| artifacts should be deployed on in case that it was not defined in |
| . Therefore, this is optional. |
| |
| - You can now run your maven build configuration. |
| |
| - Once your build is successful, check that all of the intended APPC |
| Deployment maven artifacts have been successfully uploaded to your |
| local Nexus 2 OSS by going on the snapshot repository (located on |
| http://localhost:8081/nexus/content/repositories/snapshots/org/openecomp/appc). |
| Also, go to the Nexus 3 Docker Registry location in the |
| http://localhost:9081/#browse/browse/components:docker.local to make |
| sure that your APPC Docker Image has been uploaded. |
| |
| - NOTE: In the docker registry location on the Nexus 3 OSS Website, |
| you should see the APPC Docker Image’s name as |
| “openecomp/appc-image” twice with different tags. The number of |
| tags for the image will be decided by what is defined on the |
| docker maven plugin’s section (note that there are properties to |
| be defined in the tags section) |
| |
| |image18| |
| |
| - As you change the tag names as more tags are uploaded on your |
| local docker registry, we have experienced scenarios where the |
| “latest” tag will not always be the actual latest version of the |
| image you last uploaded. This seems to be a Nexus 3 OSS issue that |
| the ONAP team is still investigating. |
| |
| - Now that the APPC Deployment Maven artifacts are deployed in Nexus 2 |
| OSS and the APPC Docker Image is deployed in the Nexus 3 OSS local |
| repositories, you are ready to test the docker image. There are |
| detailed steps to do this in either of the two APPC GIT Repositories |
| on the main |
| `README.md <https://gerrit.onap.org/r/gitweb?p=appc.git;a=blob;f=README.md;h=9024ed1f4aae36a072ee1f4610920e69ac1eaef5;hb=HEAD>`__ |
| section. |
| |
| .. |image0| image:: images/image0.png |
| .. |image1| image:: images/image1.png |
| .. |image2| image:: images/image2.png |
| .. |image3| image:: images/image3.png |
| .. |image4| image:: images/image4.png |
| .. |image5| image:: images/image5.png |
| .. |image6| image:: images/image6.png |
| .. |image7| image:: images/image7.png |
| .. |image8| image:: images/image8.png |
| .. |image9| image:: images/image9.png |
| .. |image10| image:: images/image10.png |
| .. |image11| image:: images/image11.png |
| .. |image12| image:: images/image12.png |
| .. |image13| image:: images/image13.png |
| .. |image14| image:: images/image14.png |
| .. |image15| image:: images/image15.png |
| .. |image16| image:: images/image16.png |
| .. |image17| image:: images/image17.png |
| .. |image18| image:: images/image18.png |