Mass library update tool?

Hello,

I’m wondering if there is any sort of “mass library update” tool in Robocorp, perhaps using the rcc cli tool. I’m referring to something like UiPath’s Project Dependencies Mass Update) tool.

If not, would a few scripts be able to emulate it? I’m imagining something that

  1. Reads from all your git (GitHub) repos
  2. Checks every conda.yaml to detect which bots are using the library you wish to update
  3. For each bot, update the relevant line in conda.yaml (maybe also robot.yaml?) and push the change
  4. Re-upload each bot to Control Room

Does that exist? Are the above steps logical and feasible for me to implement as some admin script I can launch from my computer?

Thanks!

Hi, I’m not aware of such a tool, but definitely, your steps described here make sense.

You should be able to create a bot which is started with a directory path as input containing all the bots subject for the update, then:

  1. Explore every conda.yaml and check the version of the libs you want to update against a pre-set configuration.
  2. For every outdated version, just replace it with the desired one.
  3. Commit changes, push, then use rcc to upload the bot to CR.

Still, you might need some sort of sanity check to ensure that the newly updated bot still works as expected. Maybe triggering a Process in CR which does some end-to-end integration testing so you’re ensured that the newly updated version doesn’t make the bot crash. (and maybe you should do that from a separate branch before pushing directly into master without knowing first if the bot is going to succeed or not)

You can find the latest released versions right in our PyPI.

Hi @cosmin,

Thanks for the confirmation. I’m thinking something like Turbolift can take care of the first few steps. Then, as you mentioned, it would be smart to create a qa or staging branch to upload the new bot via rcc and trigger each process for E2E testing.

As a sidenote, I suppose triggering a process in the Control Room just for testing purposes is not ideal since the minutes are ultimately consumed and charged. Maybe running the entire process in github actions, if possible, could be a workaround, idk.

Thanks

1 Like

Should I be going with something like turbolift or would dependabot be able to do what I want?

The idea is to replace dependencies in conda.yaml and requirements.txt and then upload those changes to the robot in the control room, with some qa thrown in.