feat: add build-aware compose stack updates (#1561)

Detect services with build: in the update preview and run compose build --pull
plus pull --ignore-buildable when Update is triggered on those stacks, while
keeping the existing pull-only path for image-only stacks.
This commit is contained in:
Anso
2026-07-05 04:45:45 -04:00
committed by GitHub
parent 4077546492
commit f2b5c68d84
15 changed files with 450 additions and 76 deletions
@@ -189,6 +189,26 @@ describe('buildSummary', () => {
expect(preview.summary.has_update).toBe(false);
expect(preview.summary.primary_image).toBeNull();
expect(preview.rollback_target).toBeNull();
expect(preview.summary.has_build_services).toBe(false);
expect(preview.summary.rebuild_available).toBe(false);
});
it('flags rebuild_available for build-only stacks', () => {
const preview = buildSummary('build-stack', [], ['app']);
expect(preview.build_services).toEqual(['app']);
expect(preview.summary.has_update).toBe(false);
expect(preview.summary.has_build_services).toBe(true);
expect(preview.summary.rebuild_available).toBe(true);
});
it('supports mixed image and build services', () => {
const images = [
baseImage({ service: 'web', has_update: true, semver_bump: 'patch', next_tag: '1.0.1', current_tag: '1.0.0' }),
];
const preview = buildSummary('mixed', images, ['worker']);
expect(preview.summary.has_update).toBe(true);
expect(preview.summary.has_build_services).toBe(true);
expect(preview.summary.rebuild_available).toBe(true);
});
it('computes rollback target from current tag of primary', () => {