Skip to content

feat: add automatic compose file location fetching#9

Merged
Crow-Control merged 7 commits intomainfrom
compose-native
Feb 18, 2026
Merged

feat: add automatic compose file location fetching#9
Crow-Control merged 7 commits intomainfrom
compose-native

Conversation

@Crow-Control
Copy link
Member

Description

⚒️ Fixes #

⚙️ Type of change

  • ⚙️ Feature/App addition
  • 🪛 Bugfix
  • ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 🔃 Refactor of current code
  • 📜 Documentation Changes

🧪 How Has This Been Tested?

📃 Notes:

✔️ Checklist:

  • ⚖️ My code follows the style guidelines of this project
  • 👀 I have performed a self-review of my own code
  • #️⃣ I have commented my code, particularly in hard-to-understand areas
  • 📄 I have made changes to the documentation
  • 🧪 I have added tests to this description that prove my fix is effective or that my feature works
  • ⬆️ I increased versions for any altered app according to semantic versioning
  • I made sure the title starts with feat(chart-name):, fix(chart-name):, chore(chart-name):, docs(chart-name): or fix(docs):

➕ App addition

If this PR is an app addition please make sure you have done the following.

  • 🖼️ I have added an icon in the Chart's root directory called icon.png

Please don't blindly check all the boxes. Read them and only check those that apply.
Those checkboxes are there for the reviewer to see what is this all about and
the status of this PR with a quick glance.

Copilot AI review requested due to automatic review settings February 18, 2026 11:07
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends Docker/Compose integration by allowing the Docker watcher to automatically derive a Compose file path from native Docker Compose labels, reducing the need to set dd.compose.file manually.

Changes:

  • Add compose-native discovery via dd.compose.native/wud.compose.native (and watcher-level composenative) to derive compose file paths from com.docker.compose.project.{working_dir,config_files}.
  • Improve dockercompose trigger handling for digest-pinned images and expand related test coverage.
  • Update API/router tests and tighten Vitest coverage thresholds.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
app/watchers/providers/docker/label.ts Adds new label constants for compose-native discovery toggle.
app/watchers/providers/docker/Docker.ts Implements compose-native compose file path resolution and config flag.
app/watchers/providers/docker/Docker.test.ts Adds tests for compose-native discovery and trigger include caching behavior.
app/triggers/providers/dockercompose/Dockercompose.ts Adds digest-aware matching/updating helpers for compose images.
app/triggers/providers/dockercompose/Dockercompose.test.ts Expands tests for digest/tag update matrix and helper functions.
app/api/trigger.ts Tweaks remote trigger warning log formatting.
app/api/trigger.test.ts Adds tests for mustTrigger non-function cases and missing container id behavior.
app/api/container.test.ts Adds tests for missing trigger configuration and remote container trigger filtering.
app/vitest.config.ts Raises coverage thresholds to 100%.
README.md Documents compose-native discovery labels and watcher default.
CHANGELOG.md Adds unreleased entries describing compose-native discovery additions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov-commenter
Copy link

codecov-commenter commented Feb 18, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.93%. Comparing base (7a3817f) to head (851d2b3).

Additional details and impacted files
@@           Coverage Diff           @@
##             main       #9   +/-   ##
=======================================
  Coverage   99.93%   99.93%           
=======================================
  Files         179      179           
  Lines        6632     6664   +32     
  Branches     1444     1451    +7     
=======================================
+ Hits         6628     6660   +32     
  Misses          4        4           
Flag Coverage Δ
app 99.93% <100.00%> (+<0.01%) ⬆️
ui 99.93% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Crow-Control and others added 3 commits February 18, 2026 12:26
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +4828 to +4837
test('getComposeFilePathFromLabels should return undefined when compose-native config files are only empty entries', () => {
const composeFile = testable_getComposeFilePathFromLabels(
{
'com.docker.compose.project.config_files': ' , , ',
'dd.compose.native': 'true',
},
false,
);
expect(composeFile).toBeUndefined();
});
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing test coverage for multiple config files scenario. The implementation includes a comment "first file wins" when multiple files are present in com.docker.compose.project.config_files, but there's no test case verifying this behavior. Consider adding a test case with 'com.docker.compose.project.config_files': 'docker-compose.yml,docker-compose.override.yml' to ensure only the first file is used.

Copilot uses AI. Check for mistakes.
);
expect(composeFile).toBeUndefined();
});

Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing test coverage for the wud.compose.native fallback label. While the integration tests cover dd.compose.native, there's no test verifying that wud.compose.native works as a fallback when dd.compose.native is not set. This is important because the label constants define both variants and getLabel is used to check both.

Suggested change
test('getComposeFilePathFromLabels should use wud.compose.native as a fallback when dd.compose.native is not set', () => {
const composeFile = testable_getComposeFilePathFromLabels(
{
'com.docker.compose.project.config_files': ' , , ',
'wud.compose.native': 'true',
},
false,
);
expect(composeFile).toBeUndefined();
});

Copilot uses AI. Check for mistakes.
@Crow-Control Crow-Control merged commit 1748064 into main Feb 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants