This is an introduction to the Cicada DSL (Domain-specific language). This DSL can be used for defining workflows, which includes CI/CD (Continuous Integration/Continuous Deployment), automated testing/backups, and much more. The Cicada DSL (which may be referred to as "The DSL" or just "Cicada") was designed from the ground up to meet the growing needs of DevOps engineers, Full-stack engineers, or anyone else who spends a lot of time writing and maintaining CI/CD workflows.
Before you get started, make sure you've setup Cicada for your repository or organization. For info on how to set this up, see the Getting Started docs.
To get started, create a file anywhere in your repository ending in
.ci. One advantage of Cicada is that you
can structure your workflows however you want, and are not limited to a single
.yaml file or
for all your workflows.
In your workflow file, add the following:
on git.push echo Hello World!
This workflow file will run every time there is a
git push to a repository. The
echo command is a built-in
shell alias, meaning you can use it as if it where a built-in command. For less common commands, prefix it with
Click here to learn more about the
To make sure that your workflow works, try pushing to your repository. If you are using GitHub or Gitlab, you should see a green check next to the commit indicating that the workflow completed successfully. Clicking on the commit and viewing the details should take you to the Cicada website which will show you the workflow output and other important information.
Now that you've created your first workflow, where can you go from here?
You can add a condition to the
on statement to only run a workflow under certain conditions:
on git.push where event.branch is "main" echo I am running on the main branch!
This workflow will run for every commit to the
main branch of your GitHub repository.
Yes, you heard that right! Cicada is a full-fledged programming language, allowing you to define variables and use them in commands:
let message = "hello world" echo (message)
This workflow defines a variable called
message, which is passed using string-interpolation. Any expression
wrapped in parenthesis (that is in a command such as
echo) will be evaluated, converted to a string, and
finally be passed to the command, in this case,
echo. Think of this like f-strings in Python, or string interpolation
in C#, except they only work with commands (and a few other places as well).
For more information on the
let expression click here.
Secrets allow you to securely use sensitive data (like API tokens) in your workflows:
shell poetry publish -u __token__ -p (secret.PYPI_DEPLOY_TOKEN)
Read the docs for more information about how to use secrets in your workflows.
Now that you've familiarized yourself with the basics of Cicada, keep reading to learn more about the many features that Cicada has to offer.