CI/CD in the context of RPA

Hi all,

There have been discussions regarding how continuous integration and deployment concepts can be applied to the RPA development cycle. The lack of proper implementations has led to scalability issues, brittleness in the practice, limited view of the health of the automations.
Generally, being behind the curve in an environment which is not owned by the RPA practice, with changing landscapes (versions of the automated applications being pushed to production and breaking automations because of the lack of isomorphism between them)

Having stated these, we’ve started work on a series of streams/webinars on the topic. They would cover topics such as:

  • what is CI/CD in the context of RPA
  • how the UiPath Robot can be run in a docker container
  • how can the docker container be placed inside a CI/CD pipeline
  • implementing the CI/CD pipeline in multiple cloud providers
  • desired Orchestrator state mechanisms as part of CI/CD pipelines
  • branching strategies
  • blue-green/canary deployments
  • using IaC with UiPath

The first one of these webinars can be found here:

Let me know what you think about the topics that we plan to cover moving forward
Thanks,
Andrei

39 Likes

Hi Andrei,

Really excited about CI/CD, development/deployment workflows etc. in general, so looking forward to this series. One question from my end: could you delve deeper into the practical application of Git repository setup and branching strategies in the context of UiPath/XAML, knowing the technical difficulties of merging such files?

Also, a Jenkins pipeline has been made available, I would say a discussion on that option would also be interesting. Thank you!

3 Likes

Hey @JD_1992,

Usually git branching strategies are decided by the team or the organization, as they are not really a product specific concept.
We will probably have some documents and webinars on that as well, probably choosing one of the CI providers as an example

3-way diff is on the roadmap without a release date yet. We can do pre-merge diffs in Studio, but it would be tricky to do it for code reviews during PR’s

Regarding the tools available, we have a few options we are looking at, and will exemplify:

  • Azure DevOps
  • AWS Codepipeline
  • Jenkins
  • not sure if Google Build supports custom windows containers

The Jenkins pipeline is very similar, but it does require an agent pool to be available, while Azure DevOps offers this as a service with Azure hosted, so it makes life a little easier when a small number of builds are required, and it does not make sense to have a large pool of resources at the ready

In the meantime, we’ve created the dockerized robot here:

with the source code available here:

Regards,
Andrei

13 Likes

Hi all,

We’ve added a new video to the webinar, creating the first RPA pipeline in Azure DevOps. It results in a basic .yaml file, which builds the .nupkg and then uploads it to the first environment after dev.

It will, at the end, implement this pipeline:


to which we will add:

  • manual approval gates
  • branch strategies and build rules for PR’s
  • unit/smoke testing in UAT, using the new StudioPro 20.4 functionality
  • automatic state transfer for assets and queues between environments

The latest addition to the webinar series can be found here:

Thanks,
Andrei

16 Likes

Hello again,

We’ve just added a new part to our series of webinars. It updates the .yaml pipeline, adding stages for deploying to UAT and to Prod. Also, manual approvals were added to the project, so the build artifact (the UiPath package) is uploaded to the respective Orchestrator tenant.

The project containing the pipeline can be found here: GitHub - AndreiBarbuOz/uipath-sample-project: UiPath sample project for CI/CD pipelines

And the webinar part can be found here:

Thanks,
Andrei

11 Likes

Hi Andrei,

Thanks for putting this functionality together and creating this content. Your posts are great!

What is the recommended solution for migrating objects stored in Orchestrator related to an automation? By Orchestrator objects I mean items like: Robots, Assets, Queues, Triggers, Processes, Jobs, etc. All the manual configuration items in Orchestrator for setting up a job to run.

Thanks,
Ryan

1 Like

Hi @ryan.metcalf,

I’m glad you find them useful.

When it comes to migrating Orchestrator objects from one tenant to another, there isn’t a migration tool in place yet. We usually recommend the powershell library found here: GitHub - UiPath/orchestrator-powershell: UiPath Orchestrator PowerShell cmdlet library
There are some limitations as of now, using this approach (especially when it comes to passwords)

I’m looking for a more comprehensive script already in place, please give me a couple of days and see if I can find it published on some public repo.

Thanks,
Andrei

3 Likes

@Andrei_Barbu,

Thanks for letting me know about the PowerShell option. I read the repo and am looking forward to any comprehensive script you can find.

Cheers,
Ryan

Hi Andrei- It would be great if you share some user manual documents to implement whole CI/CD mechanism.

Hi there @Andrei_Barbu,
I just wanted to thank you for producing these :smiley:

They are extremely helpful and your delivery is superb - I am learning lots!
Thanks once again,
Josh

4 Likes

@Andrei_Barbu is it possible to also dockerize the orchestrator? What are drawbacks of this if possible?

@Andrei_Barbu

If I am following this CI/CD pipeline only automate the building of workflow/xaml into a package which is then deployed to various orchestrator instances (DEV, UAT, PROD), is that correct?

Does it handle the creation of a process and/or the ability to update all processes using this package or is this something that could be done using Orchestrator API.

Does orchestrator API allow you to create processes?

TIA

1 Like

@Andrei_Barbu Thank you again for providing some context with CI/CD in RPA. I currently automate our builds and deploys of packages to multiple instances of Orchestrator. I’m looking for a way to automate custom libraries. Please advise if you have seen success in publishing libraries from one Orchestrator Server to another. The source library would be available in a Git Repository. It seems like this would be pretty similar to deploying packages, however, instead, I need them to be uploaded as Libraries within Orchestrator.

1 Like

I was able to automate libraries via UiPath’s Powershell Module:
GitHub - UiPath/orchestrator-powershell: UiPath Orchestrator PowerShell cmdlet library and using the command Add-UiPathLibrary

Prior to this command you need to obtain an Auth Token:
Get-UiPathAuthToken -URL ‘yourorchestratordomain.com’ -Username ‘orchestratorusername’ -Password ‘orchestratorpassword’ -Session -OrganizationUnit ‘OrgUnitNameIfYouHaveMultipleOrgUnitsWithinOrchestrator’

Then you will need your package already bundled as a NuGet Package. You can package your Library NugetPack command:
nuget pack .nuspec

Then the following command will add the Library to Orchestrator
Add-UiPathLibrary -LibraryPackage ‘C:\UiPathDemo\libraries\TestLibrary.nupkg’

1 Like

Hi @Andrei_Barbu. I’m interested in the topic, but before going any deeper, I would like to know: is any of this possible while using the UiPath Cloud Orchestration (Automation Cloud)?

Thanks

#DevOps is a mindset, a way of working for an organization so that new features reach to the users as quickly as possible and smoothly too.

There have been discussions regarding how continuous integration and deployment concepts can be applied to the RPA development cycle.

I have tried and documented the steps to build the CI CD Pipeline for UiPath using the Azure DevOps as a blogpost inclduing building self hosted agents.

Thanks @Andrei_Barbu for your detailed guideline to use adding stages for deploying to UAT and to Prod. I have used your sample .yaml file to explain how it works.

Topics covered in this article -

:ballot_box_with_check: What is CI/CD in the context of RPA (Focus on UiPath)
:ballot_box_with_check: Key Concepts in Azure Pipelines
:ballot_box_with_check: Build the first pipeline to package UiPath project
:ballot_box_with_check: Different ways of UiPath CI/CD pipeline creation using Azure Extension or Pure Powershell
:ballot_box_with_check:Required configuration/ Configure the self-hosted agent
:ballot_box_with_check:Complete working example.

You can go through the first version of the article, I will be improving this in the next few weeks to include other stuff in pipeline as well.

You can read deatils here - Azure CI CD Pipelines for UiPath

7 Likes

Is that PW entry power the powershell tools or asset management for credentials that you are working on? I am currently wanting to enhance the powershell scripts with an auth manager. Maybe this is something that is similar?

Hi @Andrei_Barbu

Do you have documentation for GITLAB CI/CD pipeline setup for UiPath RPA projects? I am keen to know any documents regarding the same.

Thank you
VJ