<p>There are build environment variables (<a href="https://argoproj.github.io/argo-cd/user-guide/build-environment/" rel="noreferrer">https://argoproj.github.io/argo-cd/user-guide/build-environment/</a>) so can inject something like <code>$ARGOCD_APP_NAME</code> on the application/helm yaml file and it resolves to the actual value.</p>
<p>Is there a way we can set custom environment variables so it can be resolved on the argocd application yaml file?</p>
<p>For example on below argocd application yaml, need to set the ENV value so helm can know which values.yaml to use.</p>
<pre><code>apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
    ...
spec:
    ...
    source:
       ...
        helm:
            valueFiles:
                - values_${ENV}.yaml
</code></pre>

<p>It's a late answer, but you can. You can use the plugin field to add the ENV variables in the application level, the example follows:</p>
<pre><code>apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  ...
spec:
  ...
  source:
    plugin:
      env:
          - name: ENV_VARIABLE
            value: ENV_VALUE
</code></pre>
