Versions Compared

Key

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

Table of Contents

Steps to configure 3.0 Scripts in Automatics

Before configuring scripts, ensure that device models are mapped against corresponding device category in Automatics Orchestration.

  1. Execute Jenkins Job for Porting 3.0 APIs in Automatics Core project
  2. Execute Jenkins Job for Porting 3.0 APIs in Automatics Scriptless Automation project
  3. Execute Jenkins Job for Porting 3.0 APIs in RDKV Test Utils
  4. Execute Jenkins Job for Porting 3.0 APIs in RDKB Test Utils
  5. Import the json file for Test Utility from <Release page> via Automatics Orchestration
  6. Import the json file for Test Scripts from <Release page> via Automatics Orchestration
  7. Import the test script details in excel sheet in 1.0 format via Automatics Orchestration

Please follow the below steps to deploy automatics core to Artifact repositories from Jenkins job

Introduction

Jenkins is used by Automatics for following activities. 

  • To perform test execution.
  • To deploy Automatics Core to maven artifact repository.

Jenkins Setup

Automatics jenkins setup documentation can be found in the page : Automatics Jenkins Setup

Jenkins pipeline concept

Table of Contents

Generic Overview

What is Jenkins Pipeline?

...

In simple words, Jenkins Pipeline is a combination of plugins that supports the integration and implementation of continuous delivery pipelines using Jenkins. A pipeline has an extensible automation server for creating simple or complex delivery pipelines "as code," via pipeline DSL (Domain-specific Language).

What is Jenkins File?

Jenkins pipelines can be defined using a text file called Jenkins File. You can implement pipeline as code using Jenkins File, and this can be defined by using a domain specific language (DSL). With Jenkins File, you can write the steps needed for running a Jenkins pipeline.

The benefits of using Jenkins File are:

  • You can create pipelines automatically for all branches and execute pull requests with just one JenkinsFile.
  • You can review your code on the pipeline
  • You can audit your Jenkins pipeline
  • This is the singular source for your pipeline and can be modified by multiple users.

Jenkins File can be defined by either Web UI or with a Jenkins File.

Declarative versus Scripted pipeline syntax:

There are two types of syntax used for defining your Jenkins File.

  1. Declarative
  2. Scripted

Declarative:

Declarative pipeline syntax offers an easy way to create pipelines. It contains a predefined hierarchy to create Jenkins pipelines. It gives you the ability to control all aspects of a pipeline execution in a simple, straight-forward manner.

Scripted:

Scripted Jenkins pipeline runs on the Jenkins master with the help of a lightweight executor. It uses very few resources to translate the pipeline into atomic commands. Both declarative and scripted syntax are different from each other and are defined totally differently.

Why use Jenkins pipeline?

Jenkins is an open continuous integration server which has the ability to support the automation of software development processes. You can create multiple automation jobs with the help of use cases, and run them as a Jenkins pipeline.

Here are the reasons why you use should use Jenkins pipeline:

  • Jenkins pipeline is implemented as a code which allows multiple users to edit and execute the pipeline process.
  • Pipelines are robust. So if your server undergoes an unforeseen restart, the pipeline will be automatically resumed.
  • You can pause the pipeline process and make it wait to resume until there is an input from the user.
  • Jenkins Pipelines support big projects. You can run multiple jobs, and even use pipelines in a loop.

Jenkins pipeline concept

...

Term

...

Description

...

Pipeline

...

The pipeline is a set of instructions given in the form of code for continuous delivery and consists of instructions needed for the entire build process. With pipeline, you can build, test, and deliver the application.

...

Node

...

The machine on which Jenkins runs is called a node. A node block is mainly used in scripted pipeline syntax.

...

Stage

...

A stage block contains a series of steps in a pipeline. That is, the build, test, and deploy processes all come together in a stage. Generally, a stage block is used to visualize the Jenkins pipeline process.

...

Step

...

A step is nothing but a single task that executes a specific process at a defined time. A pipeline involves a series of steps.

Introduction

Automatics 3.0 Custom API can be added by the partner by following the below steps

Steps to develop custom API 

  • Api Development 

Refer Automatics 3.0 - API Development to get more details on how to define Automatics API

  • Deploy the latest code to articraft

Jenkins Job can be triggered to deploy the latest code changes of project where new API is developed

Refer Jenkins Deployment Jobs for deployment jobs configurations.

  • Parse the project to update newly added API to data base

Utility parser need to be triggered for latest code changes to parse the new API and update the API details to micro service for test executions.

Refer Automatics 3.0 Utility Parser Jobs for Parser job configurations.

Automate the Deployment and Parsing jobs

For automating the deployment and parser jobs for Automatics, a new Pipeline job is introduced. What this pipeline job will do is it will invoke the existing jenkins freestyle jobs which does the deployment and API scanning in the correct order. The overview of jenkins pipeline job as well as the steps to create the Automatics pipeline job below.

Deployment and Parser Job creation

URL:<<Jenkins url>>

Go to the Dashboard of after logging in to Jenkins UI.

 <Jenkins URL >

URL: https://automatics-jenkins.rdkcentral.com:8443/

    • Click on New Item in the Jenkins dashboard.

Image Modified

    • Click on the New Item and Create a job name.

Image Modified

Based on the jobs we need to select the type of projects. Once project created it will be listed in job list 

Created a generic pipeline. for all the utils and Parser. URL give below:

URL: https://rdkauto14.ccp.xcal.tv:8443/job/RDKM_CODE_DEPLOY_AND_3.0_API_Parser/.

User can find all the results in stage view of all utils and parser for kind reference. 

Image Removed

Image Removed

Let's now create a pipeline job using the below Groovy script:

...

Click on New Item in the Jenkins dashboard.

...

Set the “Job Name” as parent Job

...

Select the “Job Type” as Pipeline project.

    • Select Pipeline option from the List of options
    • Navigate to the Pipeline section of the job setup page.
    • The below is a sample groovy script for creating the pipeline job. What the below script does is invoke the existing jobs in sequential order. It should invoke the job deploy Automatics Core, RDB/RDKV Utils, and the jobs needs for Automatics 3.0 which are API Scan job for Automatics Core, Scriptless Automation, RDKB/ RDKV Utils projects

...

    • .
Code Block
languagegroovy
themeDJango
Groovy script for RDKM_CODE_DEPLOY_AND_3.0_API_Parser
titleAutomatics 3.0 Deployment and parser Jobscript
linenumbers
Code Block
languagegroovy
themeDJango
collapsetrue
node {
     
      stage('Deployment DEPLOY_AUTOMATICS_CORE') {
           echoecho "Calling RDKM_DEPLOY_AUTOMATICS_COREDeployment-Automatics-Core Job"
           buildbuild job: 'RDKM_DEPLOY_AUTOMATICS_CORE<<Name_of_Deployment_Job_for_automatics_core>>', wait: true, propagate: true
      }
       
      stage('Deployment RDKM_DEPLOY_RDKB_TEST_UTILS') {
           echoecho "Calling RDKM_DEPLOY_RDKB_TEST_UTILSDeployment-RDKB-Utils Job"
           buildbuild job: 'RDKM_DEPLOY_RDKB_TEST_UTILS<<Name_of_Deployment_Job_for_rdkb_utils>>', wait: true, propagate: true
      }
       
      stage('Deployment RDKM_DEPLOY_RDKV_TEST_UTILS') {
           echoecho "Calling RDKM_DEPLOY_RDKV_TEST_UTILSDeployment-RDKV-Utils Job"
           buildbuild job: 'RDKM_DEPLOY_RDKV_TEST_UTILS<<Name_of_Deployment_Job_for_rdkv_utils>>', wait: true, propagate: true
      }
       
        stagestage('Run utility parser for Automatics Core') {
           echoecho "Calling RDKM_AUTOMATICS_API_SCAN_FOR_AUTOMATICS_CORE Job"
           buildbuild job: 'RDKM<<Name_AUTOMATICSof_APIUtility_SCANParser_FORfor_AUTOMATICSAutomatics_CORECore>>', wait: true, propagate: true
      }
       
      stage('Run utility parser for Scriptless Automation') {
           echoecho "Calling RDKM_AUTOMATICS_API_SCAN_FOR_SCRIPTLESS_AUTOMATION Job"
           buildbuild job: 'RDKM<<Name_AUTOMATICSof_APIUtility_SCANParser_FORfor_SCRIPTLESSscriptless_AUTOMATIONautomation>>', wait: true, propagate: true
      }
       
         stage('Run utility parser for RDKB Test Utils') {
           echoecho "Calling RDKM_AUTOMATICS_API_SCAN_FOR_RDKB_UTILS Job"
           buildbuild job: 'RDKM<<Name_AUTOMATICSof_APIUtility_SCANParser_FORfor_RDKBrdkb_UTILSutils>>', wait: true, propagate: true
      }
       
      stage('Run utility parser for RDKV Test Utils') {
           echoecho "Calling RDKM_AUTOMATICS_API_SCAN_FOR_RDKV_UTILS Job"
           buildbuild job: 'RDKM<<Name_AUTOMATICSof_APIUtility_SCANParser_FORfor_RDKVrdkv_UTILSutils>>', wait: true, propagate: true
      }
}

Steps to create a separate job.

Inside the Repository URL mention the gerrit link of the specific project.

Image Removed

In Branch specifier user needs to be mention the correct branch 

Image Removed

Root POM? should be pom.xml

Following command should be entered inside Goals and options field.

Image Removed

Code Block
languagegroovy
themeDJango
clean package -DskipTests exec:java -Dautomatics.properties.file="https://rdk-automatics01.stb.r53.xcal.tv:8443/AutomaticsProps/automatics.properties"

Once user entered all the details successfully. Job creation done successfully.

Dummy job creation

Now, it’s time to give your job something to do. Click on the Build tab on the configure page.

ScreenshotImage Removed

This will take you to the build section. Click on the Add build step menu and select Execute shell.

ScreenshotImage Removed

We’re going to use a one-line shell step for this job.

ScreenshotImage Removed

Enter the single line of shell code and click Save.

Click Build Now. The job will run and complete almost immediately. Next, click the build number to see your results.

ScreenshotImage Removed

Next, click on Console Output, and you’ll see the shell message.

ScreenshotImage Removed

Your job is ready for scheduling!

Add a Schedule to a Jenkins Job

Head back to the job configuration and click the Build Triggers tab.

ScreenshotImage Removed

Now, check the Build periodically box in the Build Triggers section.

ScreenshotImage Removed

This will open the scheduling text area.

ScreenshotImage Removed

Next, let’s set the job to run every five minutes.

Enter H/5 * * * * into the box, click Save, and reopen the configuration. Jenkins will show you when the job will run.

ScreenshotImage Removed

Save the job again and wait a few minutes. Depending on the value Jenkins selects for H, the job will run after a few minutes.

Here is a screenshot of a couple of builds on our system. You can see that the first build corresponds to the time shown above on the configure page.

ScreenshotImage Removed

The timestamps show that you’ve scheduled a job to run every five minutes.

Wait for a bit longer and you will see that it continues to run every five minutes.

...