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

ResourcePermissions
TransformationsEdit, Connect, Create & Delete
Transformation LibrariesEdit
  • For testing purposes only: Personal Access Token with minimum Read-Write role
  • A project directory with your transformation YAML files

Token permissions for legacy RBAC system

If you are on the legacy Permissions Management (RBAC) system, your workspace-level Service Access Token should have the Admin role and Grant edit access toggled on under Transformations.

See this documentation for more information on generating the token.

workspace-level Service Access Token with Transformations Admin permission

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 show-default-events

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? We're here to help.

Join the RudderStack Slack community or email us for support