fbpx
spk-logo-tm-2023
0%
1-888-310-4540 (main) / 1-888-707-6150 (support) info@spkaa.com
Select Page

The Power of CloudBees Procedures

windchill features best plm software
Written by Joshua Kling
Published on January 12, 2022

What are Procedures in CloudBees SDA?

In CloudBees SDA, procedures are the basis for reusable code. Any engineer familiar with setting up CD pipelines knows the irritation of re-coding the same task in a multitude of different ways for different teams. With procedures, this can be done once with a limited number of inputs and outputs, then simply dragged-and-dropped right where it needs to be.

How do I use CloudBees SDA Procedures?

Setting up a procedure is a simple process. At its simplest, all you need is a working resource and some kind of task to accomplish. For example, let’s say we want to set up a procedure to return the output of an ls command. We’ll need an input parameter, output parameter, and a command to run.

Open up the procedures tab and create a new one. In my example we’ll just use the default project and local resource.

PowerOfProcedure

From there, we need to set up the input and output parameters. The menu in the upper right has both of these, open it and select “parameters”, then create a new input parameter. We’ll call this one “path”, with a label “Path”, and click the checkbox to mark it as not required. This is a text entry parameter, and should be optional. Hit ok and select output parameters, then create a new one. We’ll call this one “ls”. Think of these two parameters as the external input and output pipes when this procedure is run.

PowerOfProcedure 

Hit ok, then create a new step in the main window. This will be the task that does the actual work, we’ll call it “GetLs”. Go to the definition of this step and ensure it’s a command. From there, we need to put “ec-groovy” in the shell, so it will run in the groovy console. The final step is to give it a command to run. Here is the command we will use:

____________________________________________

import com.electriccloud.client.groovy.ElectricFlow
import com.electriccloud.client.groovy.apis.model.*

ElectricFlow ef = new ElectricFlow()

//set command to run
def command = "ls -al " + "$[path]"

//execute command and get output
def ls = command.execute().text

//log output
println(ls)

//set result to output parameter
def result = ef.setOutputParameter(outputParameterName: 'ls', value: ls)

____________________________________________

Input this into the command line and click OK. From there, you can run the procedure with the play button in the upper-right corner. The procedure will ask for the optional input parameter and run the command, then kick the output to the output parameter. Clicking on the task and log will show the results.

PowerOfProcedure

Use in a pipeline

So now we’ve got a procedure that does a task on its own, how can we deploy this from within a pipeline context? Luckily, this is a very simple task. Open up the pipeline that will use this procedure and create a new task. Select procedure, and navigate to the “GetLs” procedure we just wrote. From here you can change the input path and how the output parameter can be stored in the stage summary. Please note that the input parameter can be a static input, or another parameter/property updated dynamically.

PowerOfProcedure

Run the pipeline normally and you’ll be able to see the output on the task run screen. To use this information in other pipeline tasks, you can use the property picker (upper-right corner of any command screen) to select the output parameter and easily get the necessary path to use it.

PowerOfProcedure

Conclusion

In general, if I find myself performing any task more than once in SDA, I will immediately look to how I could use it in a procedure instead. It’s a powerful way to simplify code, increase readability, and improve consistency all at once. With these techniques at your disposal, you’ll be able to create extensible tasks that other members of your team can use without your input.

Latest White Papers

An Engineer’s Guide to CAD and the Renaissance of Product Design

An Engineer’s Guide to CAD and the Renaissance of Product Design

Modern developers are either upgrading their technology or falling behind. Discover how new CAD technologies and other product design tools are altering the engineering space.What You Will Learn Discover how technologies like Creo and Creo+ from PTC are helping...

Related Resources

AI and DevOps: How should you start?

AI and DevOps: How should you start?

In this episode of All About Accelerating Products, we sit down with John Willis, a leading expert in DevOps, AI and engineering practices. John has spent decades shaping the tech industry and making groundbreaking contributions through his books, podcasts, and...

The Role of CAD in Smart Factory Design and Industry 4.0

The Role of CAD in Smart Factory Design and Industry 4.0

Industry 4.0 is revolutionizing how products are designed, produced, and delivered. At the heart of this transformation is smart factory design. Automation, data, and connected systems all come together to create highly efficient, flexible, and intelligent production...