Announcement: CI/CD Pipeline Sample Implementation(s) for UiPath Projects (alpha)

Hello UiPath Community!

I would like to share that I’ve been working on a CI/CD pipeline sample implementation(s) tailored specifically for UiPath projects. With the powerful combination of GitHub, Jenkins, and SonarQube, this initiative is designed to streamline the development and deployment processes for all UiPath enthusiasts out there.

Currently, I’ve reached a milestone with version 0.2 which is a working prototype, and along the way, I’ve created dozens of building block codes to aid in the process.

As a sneak peek, here is how the UiPath Workflow Analyzer outputs “Code Smell” results in SonarQube. All of this magic happens in my homelab where all the components reside.

My Jenkinsfiles are already able to increment the projectVersion number based on e.g. pull request titles (for example if a pull request title contains ‘breaking’ then a major version gets incremented, and written back into the project.json file. This just one example for what I call “building block code”.

Call to Participation: Let’s Shape the Future of CI/CD in UiPath Together!

I’m on a quest to make this initiative as comprehensive and user-friendly as possible, and that’s where you come in!

  • Share Your Thoughts: What have you always wanted to know about CI/CD for UiPath RPA projects?
  • Your Challenges Matter: What obstacles or challenges prevent you from setting up or utilizing a CI/CD pipeline for your UiPath projects?

Your insights will be invaluable. Not only will I aim to address these issues in my ongoing work, but your feedback will directly shape the content and depth of the many publications I’m currently preparing.

Collaboration can take place right here in the UiPath Community Forum. If there’s enough interest, I might even set up a dedicated GitHub repository where issues can be raised, and roadmap items can be communicated in a more structured manner.

Here is what I could imagine are frequent challenges:

  • setting up a R&D environment (I settled on 2 Raspberry Pi and 1 cheap Lenovo ThinkCentre, and work with the UiPath Community Edition)
  • writing and debugging Jenkinsfiles
  • overwhelming complexity: Git branching scheme? Jenkins paths on a Linux server? Authentification with the Orchestrator? Plugin or API? Code syntax in Jenkinsfiles, Groovy, batch/bash/powershell?
  • no best practices as guidelines and no clear picture what can be achieved
  • is it useful at all?
  • no prerequisites, checklists and tutorials at hand, no idea of the time effort required

My primary objective? To understand and solve the problems you face, making CI/CD for UiPath as seamless and effective as possible. So, let’s embark on this journey together and revolutionize the way we approach CI/CD in UiPath!

Looking forward to your invaluable feedback and insights!
I will place them as sticky notes on my project board, with your name and will inform you! :slight_smile:

4 Likes

Hey @cprima this is a really cool initiative - we do a few things with CI/CD but never thought about getting SonarQube to grab results from the Workflow Analyzer, that is super neat.
We have a few things in AzureDevOps or GitHub (with Actions) depending on the project, and not using Jenkins at all. In a high level we leverage the pipelines to control Approvals (pre-deployment approval chain based on branch - QA grabs the UAT approval, feature-branch grabs the peer-review approval via PR) alongside the deployment from lower environments to Production, fairly simple.
It has been in the roadmap to include Tests where appropriate (we leverage UiPath Test Manager) and I love the idea of checking Code Quality via SonarQube integration - we do via policy and its totally isolated in UiPath, but SonarQube is our tool of choice for Code Quality and setting up a Quality Gate to block merge is WorkFlow Analyzer doesnt pass would be awesome.
Do you mind sharing how you did that integration?
Thanks!

Hi @carlosevp !

Glad you find this interesting!

Sure, I will share “everything”, progress is limited to weekends and the occasional evening though. Everything will be in the GitHub repo rpapub/project-basturma-pipelines (github.com), as soon as I push content I will ping/mention you here. (you are now with a yellow sticker on my projectboard :wink: )
That GitHub repo is empty as of 2023-10-30, don’t waste time in the folder structure.

In a nutshell:

  • Workflow Analyzer writes the results into a json file. If you use the Jenkins UiPath plugin you just tick the box “Run workflow analysis” in “UiPath Pack” (defaults to false). Alternatively you can do what the Jenkins UiPath plugin is doing: Calling uipcli.exe
  • a script (sample implementation in Python (github.com)) transforms this into SonarQube’s “Generic Issue Import Format”. That’s the clou: Generic issue import format (sonarsource.com). Weird name, but 100% fits the usecase. ChatGPT suggested it to me, and I got its use in this case confirmed by a Sonar tech guy.
  • then sonar-scanner just ingests the transformed json when JAVA_ARG is set accordingly: sonar-scanner -Dsonar.externalIssuesReportPaths=path/to/your/uipath-workflow-analyzer_results.json …

Thinking ahead: What is being build today, and will become legacy code in the future, is then available for re-scan with updated Workflow Analyzer rules!

“Approvals”, now that’s a great feature! Did not cross my mind when researching “all things pipeline”.

A first “publication” of my journey into CI/CD pipelines with UiPath will be presented in my contribution to the german UiPath Community event next Tuesday: See DevOps: Automatisieren, was wir predigen at UiPath Stuttgart
The event is in german language though. I am sitting on a pile of material that I amassed in the past months, and am about 70% through with what I want to explore. All parts are coming together nicely, I assume from March on I can publish a bunch of blog posts, code examples and lessons learned.