From 7d51b82a0f0c5623378d6cdc004c1801e227c7fd Mon Sep 17 00:00:00 2001 From: Martin Najemi Date: Mon, 1 Jun 2026 00:37:57 +0100 Subject: [PATCH] fix: Lost app-relationship transitive deps under TARGETS filter Risk: low --- CHANGELOG.md | 7 +++++++ VERSION | 2 +- main.go | 14 ++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 946dada..32e1b40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.21.2] - 2026-06-01 + +### Fixed +- Targets that reference an `app` (e.g. e2e targets with `"app": "gdc-analytical-designer"`) are now triggered when that app is affected via a changed dependency. When `TARGETS` was set, the relevant-package set was seeded only from each matched target's own package and its transitive dependencies — but a target's `app` is a logical relationship, not an npm dependency, so the app and its dependency subtree (e.g. the runtime library whose change is meant to trigger the e2e target) were excluded from analysis, produced no taint, and the app-taint check always came up empty. The seed set now also includes `td.App` (unless `IGNORE_APP_RELATIONSHIP` is set), so the app and its dependencies are analyzed and the app-taint check fires. + ## [0.21.1] - 2026-05-31 ### Fixed @@ -297,6 +302,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Multi-stage Docker build - Automated vendor upgrade workflow +[0.21.2]: https://github.com/gooddata/gooddata-goodchanges/compare/v0.21.1...v0.21.2 +[0.21.1]: https://github.com/gooddata/gooddata-goodchanges/compare/v0.21.0...v0.21.1 [0.21.0]: https://github.com/gooddata/gooddata-goodchanges/compare/v0.20.0...v0.21.0 [0.20.0]: https://github.com/gooddata/gooddata-goodchanges/compare/v0.19.4...v0.20.0 [0.19.4]: https://github.com/gooddata/gooddata-goodchanges/compare/v0.19.3...v0.19.4 diff --git a/VERSION b/VERSION index b9f8e55..2d62101 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.21.1 \ No newline at end of file +0.21.2 \ No newline at end of file diff --git a/main.go b/main.go index ff53c8a..f6851aa 100644 --- a/main.go +++ b/main.go @@ -131,8 +131,18 @@ func main() { continue } for _, td := range cfg.Targets { - if matchesTargetFilter(td.OutputName(rp.PackageName), targetPatterns) { - targetSeeds = append(targetSeeds, rp.PackageName) + if !matchesTargetFilter(td.OutputName(rp.PackageName), targetPatterns) { + continue + } + targetSeeds = append(targetSeeds, rp.PackageName) + // Targets that reference an `app` are triggered when that app is + // affected (see the app-taint check below). The app is not an npm + // dependency of the target's own package, so seed it explicitly — + // otherwise the app and its dependency subtree (e.g. the runtime + // library whose change is meant to trigger the e2e target) would be + // excluded from analysis and never produce taint. + if td.App != nil && !flagIgnoreAppRelationship { + targetSeeds = append(targetSeeds, *td.App) } } }