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

19 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!

2 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

8 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

7 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: https://github.com/AndreiBarbuOz/uipath-sample-project

And the webinar part can be found here:

Thanks,
Andrei

6 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: https://github.com/UiPath/orchestrator-powershell
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

2 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

2 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

@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:
https://github.com/UiPath/orchestrator-powershell 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’