Alternate language/runtime for orbs

is there a way to use a language other than shell for orbs? There are numerous issues with writing stable, bug free code in shell. Security is the biggest. Here’s a startling example:

What happened:

Added a commit message with a simple * into a dynamic template section e.g.

Expected behavior:

it should show * as the notification content, not the directory contents.

Hello @klsetzer You do not need to write the logic of your orb in bash, but the interaction with the container is via the shell, and the orb itself only contains CircleCI config (which contains the run step which sends commands to the shell).

So there are a few ways to do this:

REPL:

As mentioned above, the run step sends commands to the shell, and the shell can be changed, for instance, to python.
So you could embed basic python scripts in your orb. But this is fairly limiting so I wouldn’t recommend it for the most part.

Download:

But, the orb can download and execute anything. If the script/program you want to use is hosted on GitHub for instance, you could download/clone it as part of the orb’s commands and execute that code.

Many orbs just download and install a CLI application and the CLI is what does the real work.

Docker Image:
Is your orb going to be used as a job? Create a docker image for it with any of the files/scripts you need included and use the orb to build a job that will use this image and execute the script within.

1 Like