added files
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<!-- m-wiki: type=concept slug=config-only-detection topic=build base-sha=28f54cf7bef9 generated-at=2026-05-12T00:00:00+00:00 sources=[] -->
|
||||
|
||||
> Generated 2026-05-12 at base-sha 28f54cf7bef9. Type: concept. 0 sources.
|
||||
|
||||
# Config-Only Change Detection
|
||||
|
||||
When a commit only changes YAML config files (no source code), each language builder skips the compile/test/image-build steps and instead fetches the last-built image tag from GAR (Google Artifact Registry). This avoids rebuilding identical binaries when only configs changed.
|
||||
|
||||
## Where it applies in this repo
|
||||
|
||||
Implemented independently in each language builder (`src/com/meesho/stages/buildMaven.groovy`, `buildGo.groovy`, `buildNode.groovy`, etc.).
|
||||
|
||||
The detection pattern varies slightly by builder but follows the same logic:
|
||||
|
||||
1. Run `git diff HEAD~1 -- configs/` (or `git diff ORIG_HEAD -- configs/`).
|
||||
2. If the diff is non-empty AND no source files changed → set `appConfigChanges = true`, skip compilation.
|
||||
3. Fetch the latest image tag from the artifact bucket (S3 or GCS) or GAR.
|
||||
4. Set `env.TAG` to the fetched tag.
|
||||
5. Proceed directly to `deployArgoCD.run()`.
|
||||
|
||||
The check is gated by `skip_s3_check` in `config.yaml`. Setting `skip_s3_check: true` forces a full rebuild even when only configs changed.
|
||||
|
||||
## Why this design
|
||||
|
||||
Config-only deployments are common at Meesho (dynamic config updates, feature flags). Rebuilding the entire Java or Go binary for a one-line YAML change wastes 3–10 minutes. By reusing the last image tag and skipping straight to ArgoCD deploy, the pipeline completes in ~1 minute for config-only changes.
|
||||
|
||||
The detection relies on `git diff` against the previous commit, so it only works when the commit history is linear. Force-pushes or squash merges may produce false negatives (full rebuild triggered unnecessarily).
|
||||
|
||||
## Related
|
||||
|
||||
- [Language builds](../07-LANGUAGE-BUILDS.md) — where this check is embedded per builder
|
||||
- [Build dispatch](build-dispatch.md) — the builder instance that contains this check
|
||||
|
||||
## Sources
|
||||
|
||||
(no raw/ sources at bootstrap)
|
||||
|
||||
## Notes
|
||||
|
||||
<!-- Anything below is human-owned. wiki-init never reads or modifies content under this heading. -->
|
||||
|
||||
---
|
||||
|
||||
[← Wiki index](../../index.md)
|
||||
|
||||
<!-- atomic: keep this page ≤600 words. New scope → new concept page that builds on this one. Do not append paragraphs here. -->
|
||||
Reference in New Issue
Block a user