What's on this page

CICD Pipeline demonstration

Objectives

This working demonstration showcases Stratoss™ Lifecycle Manager (LM) automated CICD capabilities. The demo will show the following

Pre-requisites

Installing the Demo

Clone the Stratoss LM demo artifacts from Github to your local machine

On your local machine run the following commands:

mkdir cicd-demo
cd cicd-demo
git clone https://github.com/accanto-systems/marketplace

Copy the following script to your local machine and run it in the cicd-demo directory. This will load all required demo packages into nexus to prepare your environment to run the rest of the demonstration. Make sure to change <> and user/password credentials in the script to point to your CI/CD Hub environment.

#!/usr/bin/env bash
NEXUS_URL="http://<<YOUR NEXUS ADDRESS>>:8002/repository/raw/packages"
NEXUS_CREDENTIALS="<<USER:PASSWORD>>"
TEST_ENV=test


function build {
    name=${1}
    version=${2}
    type=${3}
    cd ./marketplace/${type}/${name}
    lmctl project build
    cp ./_lmctl/_build/${name}-${version}.tgz ../../../packages
    cd ../../..
}

function upload {
    name=${1}
    version=${2}
    package=${name}-${version}.tgz
    echo uploading ${package}-${version} package to nexus and push to Stratoss LM environment named ${TEST_ENV}
    curl -v -u ${NEXUS_CREDENTIALS} --upload-file ./packages/${package} ${NEXUS_URL}/${name}/${package}
    
}

function set_up {
    build $1 $2 $3
    upload $1 $2
}

function create_ns_project {
    source="./marketplace/network-services/voice-service"
    target="./voice-service"

    mkdir -p ./packages
    mkdir -p ${target}
    
    cp -r ${source}/Behaviour ${target}
    cp -r ${source}/Descriptor ${target}
    cp ${source}/lmproject.yml ${target}
    cp ${source}/.gitignore ${target}
}

create_ns_project

set_up chaos-monkey 1.0 vnfs
set_up network 1.0 vnfs
set_up ip-pbx 1.0 vnfs
set_up sip-performance 1.0 vnfs
set_up sip-traffic-manager 1.0 vnfs
set_up voice-load-generator 1.0 network-services
set_up voice-overlay-networks 1.0 network-services
set_up voip-gateway 1.0 vnfs

Run the script in your cicd-demo directory:

  chmod +x ./setup_demo.sh
  ./setup_demo.sh

The script will create a voice-service directory which is the start of the network service the demonstration is based upon. Run the following commands to create a new local git project.

  cd ./voice-service
  git init
  git add .
  git commit -m 'initial project'

Create a new project for this voice service on the CI/CD Hub Git Server (Gogs), by performing the following tasks

Create a git develop branch

  git checkout -b develop

Set up the CI Pipeline for Jenkins by following the create ci pipeline instructions. The pipeline uses dependency files to determine what packages are used by the project. For this demo, create the following test.deps and release.deps file in your ./voice-service project directory:

./voice-service/test.deps:

network 1.0
ip-pbx 1.0
sip-performance 1.0
sip-traffic-manager 1.0
voice-overlay-networks 1.0
voice-load-generator 1.0
voip-gateway 1.0

./voice-service/release.deps:

network 1.0
ip-pbx 1.0
voice-overlay-networks 1.0
voip-gateway 1.0

Set up Release and Deployment Pipeline in Jenkins:

Follow the create Release and deployment pipeline instructions to create a pipeline that will make the voice-service project a released package that can be used in production.

Run Demo Scenario

Demo Scenario

You should now be ready to run the demo. Installing the demo has:

Demo Steps

Look at Enviroment before CI pipeline triggered

  1. Log into the pre-production/test Stratoss LM UI and see there are no designs, Stratoss LM is ‘clean’ and ready to test
  2. Log into Nexus and browse to raw/packages. You will see the dependent VNF and Network Service packages, but there is no ‘voice-service’ package.
  3. Log into Gogs and browse to marketplace/voice-service. Note there are no ‘releases’ yet.

Trigger the CI Pipeline

  1. Make a change to your voice service project. Open ./voice-service/Descrptor/assembly.yml in an editor and change the second line ‘description: Voice Service’ to ‘description: Scalable Voice Service’
  2. Save the change and commit change to git:

    git checkout develop
    git add .
    git commit -m 'updated voice service description'
    
  3. You have now made changes, tested them locally in your dev environment. Now you want submit your changes so others can use or test ‘voice-service’. You need to merge on the master branch:

    git checkout master
    git merge --no-ff develop -m 'validate version'
    git push
    
  4. Monitor pipeline automation

  1. Clean up after demo (ready to run demo again)