When setting spec.repo.execTimeout in ArgoCD custom resource, the value is applied as int instead of string causing the value to not be correctly picked up. The value for ARGOCD_EXEC_TIMEOUT though is required as string as it does expecrt the unit of time to be specified. Otherwise, the default value will remain in place and prevent long lasting processing of helm or kustomize to fail and trigger an error.
Below we can see the implementation as per the documentation which will remove any unit specification and therefore apply a value that is ignored by repo-server.
apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: argocd spec: [...] repo: execTimeout: 600
As a workaround ARGOCD_EXEC_TIMEOUT can be set directly via spec.repo.env[]. Hence it's not clear whether spec.repo.execTimeout is really required or actually also could be deprecated and removed.
Below is an example of how the implemention can be done and is actually working as the value is picked up and respected.
apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: finalizers: - argoproj.io/finalizer name: argo-demo namespace: project-argo spec: applicationSet: resources: limits: cpu: "2" memory: 1Gi requests: cpu: 250m memory: 512Mi [...] redis: resources: limits: cpu: 500m memory: 256Mi requests: cpu: 250m memory: 128Mi repo: env: - name: ARGOCD_EXEC_TIMEOUT value: 20m resources: limits: cpu: "1" memory: 1Gi requests: cpu: 250m