---
title: "Helm Chart"
description: "pull GitHub repositories and Docker images to scan for symbol content\
  \ from Helm charts"
source: "https://github.com/log-10x/modules/tree/main/pipelines/compile/modules/pull/helm/module.yaml"
icon: "simple/helm"

---
Scan Helm [chart](https://helm.sh/docs/topics/charts/){target="\_blank"}, [template](https://helm.sh/docs/helm/helm_template/){target="\_blank"}, and [values](https://helm.sh/docs/chart_template_guide/values_files/){target="\_blank"} files
for Docker container [image](https://doc.log10x.com/compile/pull/docker/ "Pull Docker image files to scan for symbol content") and [GitHub](https://doc.log10x.com/compile/pull/github/ "Pull folders from GitHub repositories to scan for symbol content") repositories to pull and [scan](https://doc.log10x.com/compile/scan/ "Capture symbol values from source code/binary files and link to an output symbol library") for symbols.

!!! tenx-helm "Helm CLI"

    The scanner uses the Helm CLI to connect and [show charts](https://helm.sh/docs/helm/helm_show_chart/), so ensure the CLI is installed on your local machine or use the compiler [Docker image](https://doc.log10x.com/install/docker/).

## :material-wrench-outline: Config Files

To configure the Helm chart module, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files.  

Below is the default configuration from: [helm/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/helm/config.yaml "helm/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
<div class="edit-options">
    <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/compile/pull/helm/config.yaml" target="_blank" rel="noopener noreferrer">
        <span class="twemoji" style="margin-right: 0.3rem;">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
            </svg>
        </span> Edit Online
    </a>
    <button class="md-button tenx-config.yaml0-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml0-dialog">
        <span style="margin-right: 0.3rem;">
            <span class="twemoji">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                </svg>
            </span>
        </span>Edit Locally
    </button>
</div>

<dialog id="config-yaml0-dialog" class="md-dialog md-dialog--editor">
    <div class="editor-dialog-wrapper">
        <div class="editor-dialog-header">
            <span class="editor-dialog-title">Edit config.yaml Locally</span>
            <div class="editor-header-actions">
                <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                </button>
                <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                </button>
                <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                    <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                    <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                </button>
                <span class="header-divider"></span>
                <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                    <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                    <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                </button>
                <span class="header-divider"></span>
                <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml0-dialog')" data-tooltip="Close">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                </button>
            </div>
        </div>
        <div class="editor-dialog-content">
            <div class="yaml-editor-container"></div>
        </div>
        <div class="yaml-editor-statusbar">
            <span class="yaml-editor-status"></span>
        </div>
    </div>
    <!-- Locations Popup -->
    <div class="locations-popup" style="display: none;">
        <div class="locations-popup-content">
            <div class="locations-popup-header">
                <span class="locations-header-label">Download and save to:</span>
                <button class="locations-popup-close" aria-label="Close">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                        <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                    </svg>
                </button>
            </div>
            <ul class="locations-list">
                <li>
                    <span class="location-label">Linux / Docker / macOS
                        <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="default-path location-path" data-tooltip=""
                            data-copy-osx="/etc/log10x/config/compile/pull/helm/config.yaml"
                            data-copy-nix="/etc/log10x/config/compile/pull/helm/config.yaml"
                            data-copy-win="C:\log10x\configs/compile/pull/helm/config.yaml"></code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
                <li>
                    <span class="location-label">Custom directory
                        <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="location-path" data-tooltip="$TENX_CONFIG/compile/pull/helm/config.yaml">$TENX_CONFIG/compile/pull/helm/config.yaml</code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
                <li>
                    <span class="location-label">Within cloned repo
                        <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="location-path" data-tooltip="./pipelines/compile/pull/helm/config.yaml">./pipelines/compile/pull/helm/config.yaml</code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
            </ul>
            <div class="locations-popup-footer">
                <button class="locations-download-btn" title="Download config file">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                        <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                    </svg>
                    <span>Download</span>
                </button>
            </div>
        </div>
    </div>
</dialog>

<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiaGVsbSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiY2hhcnROYW1lcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjaGFydHMgdG8gcHVsbFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGNoYXJ0IG5hbWVzIChlLmcuLCBvcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWRlbW8pIHRvIHBhc3MgdG8gW2hlbG1Db21tYW5kXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9oZWxtLyNoZWxtY29tbWFuZCkuIFRoZSBzY2FubmVyIHdpbGwgaW52b2tlIHRoZSBbdGVtcGxhdGVdKGh0dHBzOi8vaGVsbS5zaC9kb2NzL2hlbG0vaGVsbV90ZW1wbGF0ZS8pIGFuZCBbc2hvdyBjaGFydF0oaHR0cHM6Ly9oZWxtLnNoL2RvY3MvaGVsbS9oZWxtX3Nob3dfY2hhcnQvKSBjb21tYW5kcyB0byBwdWxsIGl0cyB2YWx1ZXMueWFtbCBhbmQgY2hhcnQueWFtbCBmaWxlcyB0byBzY2FuIGZvciBEb2NrZXIgY29udGFpbmVyIGltYWdlcyBhbmQgR2l0SHViIHJlcG8gZmlsZXMuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiY2hhcnRGaWxlcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjaGFydHMgdGVtcGxhdGVzIGFuZCB2YWx1ZSBmaWxlcyB0byBzY2FuXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgY2hhcnQgdmFsdWUgYW5kIHRlbXBsYXRlcyBmaWxlcyB0byBzY2FuLiBUaGVzZSBmaWxlIHBhdGhzIG1heSBiZSByZWxhdGl2ZSB0byB0aGUgaW5jbHVkZSBwYXRocyBsaXN0LiBJZiBmaWxlIHBhdGhzIGFyZSBjYW5vbmljYWwsIHRoZWlyIGVuY2xvc2luZyBmb2xkZXJzIG11c3QgYmUgaW5jbHVkZWQgaW4gdGhlIGluY2x1ZGVQYXRocyBhcmd1bWVudC4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJwdWxsIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAiZ2l0aHViIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAgICAgInJlcG9zIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlB1bGwgR2l0SHViIHJlcG9zXG5cblNwZWNpZmllcyB3aGV0aGVyIHRvIHB1bGwgW0dpdEh1YiByZXBvc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3B1bGwvZ2l0aHViLykgcmVmZXJlbmNlZCBieSBhbiBpbnB1dCBIZWxtIHRlbXBsYXRlIGZpbGVzLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAidG9rZW4iIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJHaXRIdWIgQVBJIHRva2VuIGZvciBwdWxsaW5nIHJlcG9zaXRvcmllc1xuXG5EZWZpbmVzIGFuIGFjY2VzcyB0b2tlbiBmb3IgcHVsbGluZyBbR2l0aHViIHJlcG9zXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9naXRodWIvKSByZWZlcmVuY2VkIGJ5IEhlbG0gY2hhcnRzLiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkb2NrZXJJbWFnZXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUHVsbCBkb2NrZXIgY29udGFpbmVyIGltYWdlc1xuXG5TcGVjaWZpZXMgd2hldGhlciB0byBwdWxsIFtEb2NrZXIgaW1hZ2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9kb2NrZXIvKSByZWZlcmVuY2VkIGJ5IGFuIGlucHV0IEhlbG0gdmFsdWVzIGFuZCB0ZW1wbGF0ZSBmaWxlcy4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjb21tYW5kIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQYXRoIHRvIEhlbG0gY29tbWFuZFxuXG5EZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBbSGVsbV0oaHR0cHM6Ly9oZWxtLnNoLykgcHJvZ3JhbSB1c2VkIGZvciBxdWVyeWluZyBjaGFydCB0ZW1wbGF0ZXMgYW5kIHZhbHVlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHNldCBpZiBbaGVsbUNoYXJ0TmFtZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2hlbG0vI2hlbG1jaGFydG5hbWVzKSBpcyBzZXQuIChEZWZhdWx0OiAqTklYOiAvdXNyL2xvY2FsL2Jpbi9oZWxtLCBXaW46IEM6L1Byb2dyYW0gRmlsZXMvaGVsbS9oZWxtLmV4ZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIipOSVg6IC91c3IvbG9jYWwvYmluL2hlbG0sIFdpbjogQzovUHJvZ3JhbSBGaWxlcy9oZWxtL2hlbG0uZXhlIgogICAgICAgIH0sCiAgICAgICAgImdpdEh1YlJlcG9QYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiWUFNTCBET00gcGF0aHMgZm9yIGV4dHJhY3RpbmcgR2l0SHViIHJlcG9zXG5cblNwZWNpZmllcyBwYXRocyB3aXRoaW4gYSBZQU1MIGZpbGUgdG8gdHJlYXQgYXMgaG9sZGVycyBmb3IgR2l0SHViIHJlcG8gbmFtZXMuIEZvciBleGFtcGxlLCBmb3IgdGhlIGZvbGxvd2luZyBzZWN0aW9uIGZyb20gYW4gaW5wdXQgY2hhcnQueWFtbCBmaWxlOiBgYGB5YW1sIHNvdXJjZXM6ICAgLSBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1kZW1vICMgY2FwdHVyZSB0aGlzIEdpdEh1YiByZXBvIHJlZmVyZW5jZSBgYGAgKERlZmF1bHQ6IFttZXRhZGF0YS5yZXBvc2l0b3J5LCBzcGVjLnNvdXJjZS5naXQsIGNoYXJ0LnJlcG9zaXRvcnldKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiW21ldGFkYXRhLnJlcG9zaXRvcnksIHNwZWMuc291cmNlLmdpdCwgY2hhcnQucmVwb3NpdG9yeV0iCiAgICAgICAgfSwKICAgICAgICAiZG9ja2VySW1hZ2VQYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiWUFNTCBET00gcGF0aHMgZm9yIGV4dHJhY3RpbmcgRG9ja2VyIHJlcG8gcmVmZXJlbmNlc1xuXG5TcGVjaWZpZXMgcGF0aHMgd2l0aGluIGEgaGVsbSBZQU1MIGZpbGUgdG8gdHJlYXQgYXMgaG9sZGVycyBmb3IgRG9ja2VyIGltYWdlIG5hbWVzLiBGb3IgZXhhbXBsZSwgZm9yIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiBmcm9tIGFuIGlucHV0IHZhbHVlcy55YW1sIGZpbGU6IGBgYHlhbWwgICAgIHNwZWM6ICAgc2VydmljZUFjY291bnROYW1lOiBvcGVudGVsZW1ldHJ5LWRlbW8gICBjb250YWluZXJzOiAgIC0gbmFtZTogYWNjb3VudGluZ3NlcnZpY2UgICAgICBpbWFnZTogJ2RvY2tlci5pby9ncmFmYW5hL2dyYWZhbmE6MTEuMS4wJyAjIGNhcHR1cmUgdGhpcyBkb2NrZXIgaW1hZ2UgcmVmZXJlbmNlIGBgYCAoRGVmYXVsdDogW3NwZWMudGVtcGxhdGUuc3BlYy5jb250YWluZXJzLmltYWdlLCB2YWx1ZXMuaW1hZ2UsIHNwZWMuY29udGFpbmVycy5pbWFnZSwgc291cmNlc10pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3BlYy50ZW1wbGF0ZS5zcGVjLmNvbnRhaW5lcnMuaW1hZ2UsIHZhbHVlcy5pbWFnZSwgc3BlYy5jb250YWluZXJzLmltYWdlLCBzb3VyY2VzXSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

```yaml
# 🔟❎ 'compile' k8s Helm scanner configuration

# Configures the k8s Helm chart symbol scanner which pulls referenced GitHub source repositories and
# Docker container images to scan for symbol values.

# To learn more see https://doc.log10x.com/compile/pull/helm

# For a reference list of common infrastructure charts, see:
#   modules/pipelines/compile/modules/pull/helm/library.yaml

# Set the 10x pipeline to 'compile'
tenx: compile

# =============================== Helm Options ===============================

helm:

  # Charts can be specified as Helm chart names OR as local chart files.

  # 'chartNames' specifies a list of remote chart names to scan for values and template files.
  chartNames: [
    # open-telemetry/opentelemetry-demo,
    # ingress-nginx/ingress-nginx,
  ]

  # 'chartFiles' specifies a list of local chart template and values.yaml files on disk.
  #  File paths may be relative to the 'includePaths' list. If canonical, enclosing folders must added to 'includePaths'.
  chartFiles: [
    # charts/opentelemetry-demo/values.yaml
  ]

  pull:

    # 'dockerImages' specifies whether to pull docker container images referenced by input charts
    #  To learn more see https://doc.log10x.com/compile/pull/docker
    dockerImages: true

    github:

      # 'repos' specifies whether to pull GitHub repos referenced by 'org.opencontainers.image.source' annotations
      #  To learn more see https://github.com/opencontainers/image-spec/blob/v1.0.1/annotations.md#pre-defined-annotation-keys
      repos: true

      # 'token' specifies the GitHub access token for pulling from referenced repos
      #  To learn more see: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
      token: $=TenXEnv.get("GH_TOKEN")  # (❗ EnvVar REQUIRED)
```

## :material-menu: Options

Specify the options below to [configure](/config "configure") the Helm chart:

|Name|Description|Category|
|---|---|---|
|[helmChartNames](#helmchartnames "list of charts to pull")|List of charts to pull|General|
|[helmChartFiles](#helmchartfiles "list of charts templates and value files to scan")|List of charts templates and value files to scan|General|
|[helmPullGithubRepos](#helmpullgithubrepos "pull GitHub repos")|Pull GitHub repos|General|
|[helmPullGithubToken](#helmpullgithubtoken "GitHub API token for pulling repositories")|GitHub API token for pulling repositories|General|
|[helmPullDockerImages](#helmpulldockerimages "pull docker container images")|Pull docker container images|General|
|[helmCommand](#helmcommand "path to Helm command")|Path to Helm command|Process|
|[helmGitHubRepoPaths](#helmgithubrepopaths "YAML DOM paths for extracting GitHub repos")|YAML DOM paths for extracting GitHub repos|Process|
|[helmDockerImagePaths](#helmdockerimagepaths "YAML DOM paths for extracting Docker repo references")|YAML DOM paths for extracting Docker repo references|Process|

### General

#### :material-menu-right-outline:**`helmChartNames`**

List of charts to pull.

|Type|Default|Category|
|---|---|---|
|List|\[\]|General|

Specifies a list of chart names (e.g., open-telemetry/opentelemetry-demo) to pass to [helmCommand](https://doc.log10x.com/compile/pull/helm/#helmcommand "path to Helm command").

The scanner will invoke the [template](https://helm.sh/docs/helm/helm_template/){target="\_blank"} and [show chart](https://helm.sh/docs/helm/helm_show_chart/){target="\_blank"}
commands to pull its values.yaml and chart.yaml files to scan for Docker container images and GitHub repo files.


#### :material-menu-right-outline:**`helmChartFiles`**

List of charts templates and value files to scan.

|Type|Default|Category|
|---|---|---|
|List|\[\]|General|

Specifies a list of chart value and templates files to scan. These file paths may be relative to the include paths list.
If file paths are canonical, their enclosing folders must be included in the includePaths argument.


#### :material-menu-right-outline:**`helmPullGithubRepos`**

Pull GitHub repos.

|Type|Default|Category|
|---|---|---|
|Boolean|false|General|

Specifies whether to pull [GitHub repos](https://doc.log10x.com/compile/pull/github/ "Pull folders from GitHub repositories to scan for symbol content") referenced by an input Helm template files.


#### :material-menu-right-outline:**`helmPullGithubToken`**

GitHub API token for pulling repositories.

|Type|Default|Category|
|---|---|---|
|String|""|General|

Defines an access token for pulling [Github repos](https://doc.log10x.com/compile/pull/github/ "Pull folders from GitHub repositories to scan for symbol content") referenced by Helm charts.


#### :material-menu-right-outline:**`helmPullDockerImages`**

Pull docker container images.

|Type|Default|Category|
|---|---|---|
|Boolean|true|General|

Specifies whether to pull [Docker images](https://doc.log10x.com/compile/pull/docker/ "Pull Docker image files to scan for symbol content") referenced by an input Helm values and template files.


### Process

#### :material-menu-right-outline:**`helmCommand`**

Path to Helm command.

|Type|Default|Category|
|---|---|---|
|String|\*NIX: /usr/local/bin/helm, Win: C:/Program Files/helm/helm.exe|Process|

Defines the path to the [Helm](https://helm.sh/){target="\_blank"} program used for querying chart templates and values.
This value must be set if [helmChartNames](https://doc.log10x.com/compile/pull/helm/#helmchartnames "list of charts to pull") is set.


#### :material-menu-right-outline:**`helmGitHubRepoPaths`**

YAML DOM paths for extracting GitHub repos.

|Type|Default|Category|
|---|---|---|
|String|\[metadata.repository, spec.source.git, chart.repository\]|Process|

specifies paths within a YAML file to treat as holders for GitHub repo names.
For example, for the following section from an input chart.yaml file:

```yaml
sources:
  - https://github.com/open-telemetry/opentelemetry-demo # capture this GitHub repo reference
```


#### :material-menu-right-outline:**`helmDockerImagePaths`**

YAML DOM paths for extracting Docker repo references.

|Type|Default|Category|
|---|---|---|
|String|\[spec.template.spec.containers.image, values.image, spec.containers.image, sources\]|Process|

specifies paths within a helm YAML file to treat as holders for Docker image names.
For example, for the following section from an input values.yaml file:

```yaml
spec:
  serviceAccountName: opentelemetry-demo
  containers:
  - name: accountingservice 
    image: 'docker.io/grafana/grafana:11.1.0' # capture this docker image reference
```


<br/>:material-github: This module is defined in [helm/module.yaml](https://github.com/log-10x/modules/tree/main/pipelines/compile/modules/pull/helm/module.yaml "helm/module.yaml"){target="\_blank"}.

