docs: add notes related to Revision Cache Expiration settings (#23986) (#23963)

Signed-off-by: Eugene Doudine <eugene.doudine@octopus.com>
Signed-off-by: dudinea <eugene.doudine@octopus.com>
Co-authored-by: Papapetrou Patroklos <1743100+ppapapetrou76@users.noreply.github.com>
Co-authored-by: Nitish Kumar <justnitish06@gmail.com>
This commit is contained in:
dudinea 2025-07-29 18:17:26 +03:00 committed by GitHub
parent 69d1d88807
commit 998253aa41
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 39 additions and 4 deletions

View file

@ -422,11 +422,40 @@ spec:
In `values` we can also interpolate all fields set by the git files generator as mentioned above.
## Git Polling Interval
When using a Git generator, the ApplicationSet controller polls Git
repositories, by default, every 3 minutes to detect changes, unless
different default value is set by the
`ARGOCD_APPLICATIONSET_CONTROLLER_REQUEUE_AFTER` environment variable.
You can customize this interval per ApplicationSet using
`requeueAfterSeconds`.
!!!note
The Git generator uses the ArgoCD Repo Server to retrieve file
and directory lists from Git. Therefore, the Git generator is
affected by the Repo Server's Revision Cache Expiration setting
(see the description of the `timeout.reconciliation` parameter in
[argocd-cm.yaml](../argocd-cm-yaml.md/#:~:text=timeout.reconciliation%3A)).
If this value exceeds the configured Git Polling Interval, the
Git generator might not see files or directories from new commits
until the previous cache entry expires.
## The `argocd.argoproj.io/application-set-refresh` Annotation
Setting the `argocd.argoproj.io/application-set-refresh` annotation
(to any value) triggers an ApplicationSet refresh. This annotation
forces the Git provider to resolve Git references directly, bypassing
the Revision Cache. The ApplicationSet controller removes this
annotation after reconciliation.
## Webhook Configuration
When using a Git generator, the ApplicationSet controller polls Git repositories every 3 minutes (this can be customized per ApplicationSet with `requeueAfterSeconds`) to detect changes. To eliminate
this delay from polling, the ApplicationSet webhook server can be configured to receive webhook events. ApplicationSet supports
Git webhook notifications from GitHub and GitLab. The following explains how to configure a Git webhook for GitHub, but the same process should be applicable to other providers.
To eliminate the polling delay, the ApplicationSet webhook
server can be configured to receive webhook events. ApplicationSet
supports Git webhook notifications from GitHub and GitLab. The
following explains how to configure a Git webhook for GitHub, but the
same process should be applicable to other providers.
```yaml
apiVersion: argoproj.io/v1alpha1

View file

@ -330,6 +330,12 @@ data:
# Application reconciliation timeout is the amount of time spent before Argo tries to discover if a new manifests version got
# published to the repository. Reconciliation by timeout is disabled if timeout is set to 0. Two minutes by default with additional jitter.
# For the argocd-repo-server this setting defines the expiration
# value for cached git revisions.
# When set to 0, the cache expiration value will be taken from the
# --default-cache-expiration parameter, which is 24 hours by
# default, unless another value is set using the
# ARGOCD_DEFAULT_CACHE_EXPIRATION variable).
# > Note: The argocd-repo-server deployment and the argocd-application-controller statefulset (or deployment, if
# configured) must be manually restarted after changing the setting.
timeout.reconciliation: 120s
@ -432,4 +438,4 @@ data:
webhook.maxPayloadSizeMB: "50"
# application.sync.impersonation.enabled enables application sync to use a custom service account, via impersonation. This allows decoupling sync from control-plane service account.
application.sync.impersonation.enabled: "false"
application.sync.impersonation.enabled: "false"