Transformations Management Using Rudder CLI Quickstart Alpha

Learn how to manage transformations and transformation libraries using Rudder CLI.
Available Plans
  • free
  • starter
  • growth
  • enterprise

In this quickstart, you will use the Rudder CLI tool to define, validate, test, and apply transformations from your local project.

Prerequisites

1. Authenticate the CLI tool

Run the following command and enter your access token when prompted:

rudder-cli auth login

2. Create a project directory

Create a project directory to store your transformation specs, code, and tests:

mkdir -p ~/tutorial-transformations/transformations

Example structure:

tutorial-transformations/
└── transformations/
    ├── my-transformation.yaml
    ├── my-library.yaml
    ├── my-python-transformation.yaml
    ├── my-python-library.yaml
    ├── javascript/
    │   ├── my-transformation.js
    │   └── my-library.js
    ├── python/
    │   ├── my-python-transformation.py
    │   └── my-python-library.py
    └── tests/
        ├── input/
        │   └── product_clicked.json
        └── output/
            └── product_clicked.json
announcement
RudderStack supports Python transformation libraries only in the Growth and Enterprise plans.

3. Add a transformation spec

This section lists the steps to create a transformation YAML spec via the following methods:

Referencing an external file

  1. Create the YAML spec for your transformation:
  1. Create the transformation code file:

Using inline code

You can also write transformation code directly in the YAML spec using code instead of referencing an external file with file:

info
code and file are mutually exclusive — use one or the other in a given spec. See the Transformation YAML Reference for the complete schema.

4. Add a transformation library spec

Create the YAML spec for your transformation library:

Then, create the library code file:

info
For library resources, import_name must be the camelCase form of name. For example, name: my library maps to import_name: myLibrary and name: my python library maps to import_name: myPythonLibrary.

5. Validate YAML and code references

Run validation from the project root:

rudder-cli validate -l ~/tutorial-transformations

This command validates required fields, code/file rules, supported languages, code syntax, and test definitions.

6. Test transformations locally

Rudder CLI supports 3 test modes:

warning
You cannot include multiple test modes in a single command.
  1. Test a specific transformation by ID:
rudder-cli transformations test my-transformation -l ~/tutorial-transformations
  1. Test all transformations:
rudder-cli transformations test --all -l ~/tutorial-transformations
  1. Test only new or modified transformations:
rudder-cli transformations test --modified -l ~/tutorial-transformations

Optional

  • Show detailed failures and diffs:
rudder-cli transformations test --all --verbose -l ~/tutorial-transformations
  • Show the built-in default events:
rudder-cli transformations test default-events --show

How it works

When running tests, Rudder CLI loads input files from each test suite’s input path. If a matching output file (same filename) exists in the output path, it compares the actual output against the expected output. If no matching output file exists, the test still runs but skips the output comparison.

info

Rudder CLI tests the transformation using default RudderStack events if:

  • spec.tests isn’t configured, or
  • No input JSON files are found in the configured input paths

See the Rudder CLI transformations testing framework section for more details.

7. Apply changes

  1. Optional dry-run:
rudder-cli apply -l ~/tutorial-transformations --dry-run
  1. Apply to workspace:
rudder-cli apply -l ~/tutorial-transformations

Next steps


Questions? Contact us by Email or on Slack