<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – Automate Project Management with Rudder CLI and GitHub Actions</title><link>https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/</link><description>Recent content in Automate Project Management with Rudder CLI and GitHub Actions on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>Dev-Tools: Automate Transformations Management with Rudder CLI and GitHub Actions</title><link>https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/</guid><description>
&lt;p>This guide explains how to validate, test, and manage your RudderStack transformations directly via GitHub workflows using the Rudder CLI Project Manager Action.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;p>By leveraging the &lt;a href="https://github.com/rudderlabs/rudder-cli-action" >Rudder CLI Project Manager Action&lt;/a>, you can:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Validate&lt;/strong>: Check your transformation YAML configurations for syntax and structure.&lt;/li>
&lt;li>&lt;strong>Test&lt;/strong>: Execute transformation code against test events using the specialized &lt;code>transformations-test&lt;/code> action.&lt;/li>
&lt;li>&lt;strong>Apply&lt;/strong>: Deploy your transformations and libraries to your RudderStack workspace automatically.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="prerequisites" data-heading="Prerequisites" data-level="2" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>&lt;ul>
&lt;li>A GitHub repository containing your Rudder CLI project files (transformations and libraries).&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>Generate a &lt;a href="https://www.rudderstack.com/docs/access-management/service-access-tokens/#workspace-sat" >workspace-level Service Access Token&lt;/a> in the RudderStack dashboard with the following &lt;a href="https://www.rudderstack.com/docs/access-management/policies-overview/#resource-permissions" >permissions&lt;/a> to manage Data Catalog and Tracking Plans:&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Resource&lt;/th>
&lt;th style="text-align:left">Permissions&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Tracking Plans&lt;/td>
&lt;td style="text-align:left">&lt;strong>Create &amp;amp; Delete&lt;/strong>, &lt;strong>Edit&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Data Catalog&lt;/td>
&lt;td style="text-align:left">&lt;strong>Edit&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;ul>
&lt;li>&lt;strong>For testing or development purposes only&lt;/strong>: Generate a &lt;a href="https://www.rudderstack.com/docs/access-management/personal-access-tokens/" >Personal Access Token&lt;/a> with &lt;strong>Read-Write&lt;/strong> role&lt;/li>
&lt;/ul>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;p>&lt;strong>RudderStack recommends using a workspace-level Service Access Token for authentication.&lt;/strong>&lt;/p>
&lt;p>Any action authenticated by a Personal Access Token will break if the user is removed from the organization or a breaking change is made to their permissions.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="token-permissions-for-legacy-rbac-system" data-heading="Token permissions for legacy RBAC system" data-level="4" data-permalink="https://www.rudderstack.com/docs/" data-title="RudderStack Documentation" -->
&lt;h4 id="token-permissions-for-legacy-rbac-system">Token permissions for legacy RBAC system&lt;/h4>&lt;p>If you are on the &lt;a href="https://www.rudderstack.com/docs/archive/dashboard-guides/user-management/" >legacy Permissions Management (RBAC) system&lt;/a>, your workspace-level Service Access Token should have &lt;strong>Admin&lt;/strong> permissions.&lt;/p>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/archive/dashboard-guides/service-access-tokens/#generate-service-access-token" >this documentation&lt;/a> for more information on generating the token.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/access-management/permissions/legacy/admin.webp" href="https://www.rudderstack.com/docs/docs/images/access-management/permissions/legacy/admin.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/access-management/permissions/legacy/admin.webp"
alt="workspace-level Service Access Token with Admin permission"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="setup" data-heading="Setup" data-level="2" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h2 id="setup">Setup&lt;/h2>&lt;p>Follow these steps to set up the GitHub Actions workflow for your transformations.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="step-1-configure-repository-secrets" data-heading="Step 1: Configure repository secrets" data-level="3" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h3 id="step-1-configure-repository-secrets">Step 1: Configure repository secrets&lt;/h3>&lt;ol>
&lt;li>In your GitHub repository, go to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Secrets and variables&lt;/strong> &amp;gt; &lt;strong>Actions&lt;/strong>.&lt;/li>
&lt;li>Add a new repository secret:
&lt;ul>
&lt;li>&lt;strong>Name&lt;/strong>: &lt;code>RUDDERSTACK_ACCESS_TOKEN&lt;/code>&lt;/li>
&lt;li>&lt;strong>Value&lt;/strong>: The Service Access Token generated in the &lt;a href="#prerequisites" >Prerequisites&lt;/a> section.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;p>RudderStack recommends storing this token in GitHub Secrets and referencing it in your workflow using &lt;code>${{ secrets.RUDDERSTACK_ACCESS_TOKEN }}&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Do not expose the token directly in your workflow files.&lt;/strong>&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="step-2-create-actions-workflow" data-heading="Step 2: Create Actions workflow" data-level="3" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h3 id="step-2-create-actions-workflow">Step 2: Create Actions workflow&lt;/h3>&lt;p>Create the following workflow in &lt;code>.github/workflows/&lt;/code> within your repository, for example, &lt;code>.github/workflows/transformations.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Manage Transformations&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">push&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="l">main]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pull_request&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="l">main]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">paths&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s2">&amp;#34;project/transformations/**&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">jobs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">validate-and-test&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runs-on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ubuntu-latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/checkout@v4&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Validate Project Files&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudderlabs/rudder-cli-action@v1.0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">RUDDERSTACK_ACCESS_TOKEN&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">${{ secrets.RUDDERSTACK_ACCESS_TOKEN }}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">location&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;project/&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">mode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;validate&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Test Modified Transformations&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudderlabs/rudder-cli-action/transformations-test@v1.0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">RUDDERSTACK_ACCESS_TOKEN&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">${{ secrets.RUDDERSTACK_ACCESS_TOKEN }}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">location&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;project/&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scope&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;modified&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">verbose&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;true&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">apply&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runs-on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ubuntu-latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">needs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">validate-and-test&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">if&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">github.ref == &amp;#39;refs/heads/main&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">actions/checkout@v4&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Apply Changes&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudderlabs/rudder-cli-action@v1.0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">RUDDERSTACK_ACCESS_TOKEN&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">${{ secrets.RUDDERSTACK_ACCESS_TOKEN }}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">location&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;project/&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">mode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;apply&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="action-inputs" data-heading="Action inputs" data-level="2" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h2 id="action-inputs">Action inputs&lt;/h2>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="main-action-rudderlabsrudder-cli-action" data-heading="Main action (&lt;code>rudderlabs/rudder-cli-action&lt;/code>)" data-level="3" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h3 id="main-action-rudderlabsrudder-cli-action">Main action (&lt;code>rudderlabs/rudder-cli-action&lt;/code>)&lt;/h3>&lt;p>Used for &lt;code>validate&lt;/code>, &lt;code>dry-run&lt;/code>, and &lt;code>apply&lt;/code> modes.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Input&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;th style="text-align:left">Default&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>location&lt;/code>&lt;/td>
&lt;td style="text-align:left">Path to the folder containing Rudder CLI project files.&lt;/td>
&lt;td style="text-align:left">-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>mode&lt;/code>&lt;/td>
&lt;td style="text-align:left">Operation mode: &lt;code>validate&lt;/code>, &lt;code>dry-run&lt;/code>, or &lt;code>apply&lt;/code>.&lt;/td>
&lt;td style="text-align:left">-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>cli_version&lt;/code>&lt;/td>
&lt;td style="text-align:left">Version of the Rudder CLI tool to use.&lt;/td>
&lt;td style="text-align:left">&lt;code>v0.13.1&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="test-action-rudderlabsrudder-cli-actiontransformations-test" data-heading="Test action (&lt;code>rudderlabs/rudder-cli-action/transformations-test&lt;/code>)" data-level="3" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h3 id="test-action-rudderlabsrudder-cli-actiontransformations-test">Test action (&lt;code>rudderlabs/rudder-cli-action/transformations-test&lt;/code>)&lt;/h3>&lt;p>Specialized action for running transformation tests.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Input&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;th style="text-align:left">Default&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>location&lt;/code>&lt;/td>
&lt;td style="text-align:left">Path to the folder containing Rudder CLI project files.&lt;/td>
&lt;td style="text-align:left">-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>scope&lt;/code>&lt;/td>
&lt;td style="text-align:left">Test scope: &lt;code>all&lt;/code> (all transformations) or &lt;code>modified&lt;/code> (only changed ones).&lt;/td>
&lt;td style="text-align:left">-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>verbose&lt;/code>&lt;/td>
&lt;td style="text-align:left">Show detailed test output with diffs for failures.&lt;/td>
&lt;td style="text-align:left">&lt;code>false&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>cli_version&lt;/code>&lt;/td>
&lt;td style="text-align:left">Version of the Rudder CLI tool to use.&lt;/td>
&lt;td style="text-align:left">&lt;code>v0.13.1&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-it-works" data-heading="How it works" data-level="2" data-permalink="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/transformations/" data-title="Automate Transformations Management with Rudder CLI and GitHub Actions" -->
&lt;h2 id="how-it-works">How it works&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Validation&lt;/strong>: The &lt;code>validate&lt;/code> mode ensures your YAML files are correctly formatted before any further steps.&lt;/li>
&lt;li>&lt;strong>Testing&lt;/strong>: The &lt;code>transformations-test&lt;/code> action runs your transformation code against the defined test cases. Using &lt;code>scope: modified&lt;/code> in PRs is recommended for faster feedback.&lt;/li>
&lt;li>&lt;strong>Deployment&lt;/strong>: When changes are merged into the &lt;code>main&lt;/code> branch, the &lt;code>apply&lt;/code> mode pushes the updates to your RudderStack workspace.&lt;/li>
&lt;/ul></description></item></channel></rss>