From 1922f8083df1c17b9fa5d935bcf9d68a27b31a85 Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Mon, 14 Sep 2026 15:39:24 +0100 Subject: [PATCH 1/5] feat(azure): add web app slot support --- .changeset/azure-webapp-slot.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/azure-webapp-slot.md diff --git a/.changeset/azure-webapp-slot.md b/.changeset/azure-webapp-slot.md new file mode 100644 index 000000000..c5350db84 --- /dev/null +++ b/.changeset/azure-webapp-slot.md @@ -0,0 +1,6 @@ +--- +'@gradientedge/cdk-utils-azure': patch +'@gradientedge/cdk-utils': patch +--- + +Add optional Azure Web App deployment slot provisioning with auto-swap configuration support. From d07c0ce2003d37079cdb1a9f8ea53b70c59ca1af Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Mon, 14 Sep 2026 15:43:25 +0100 Subject: [PATCH 2/5] feat(azure): add web app slot support --- .changeset/{azure-webapp-slot.md => crisp-papers-lay.md} | 1 - 1 file changed, 1 deletion(-) rename .changeset/{azure-webapp-slot.md => crisp-papers-lay.md} (81%) diff --git a/.changeset/azure-webapp-slot.md b/.changeset/crisp-papers-lay.md similarity index 81% rename from .changeset/azure-webapp-slot.md rename to .changeset/crisp-papers-lay.md index c5350db84..38b877bbb 100644 --- a/.changeset/azure-webapp-slot.md +++ b/.changeset/crisp-papers-lay.md @@ -1,6 +1,5 @@ --- '@gradientedge/cdk-utils-azure': patch -'@gradientedge/cdk-utils': patch --- Add optional Azure Web App deployment slot provisioning with auto-swap configuration support. From 503f1c41627731c9c39a2073097ef5d8b25c340f Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Mon, 14 Sep 2026 22:55:03 +0100 Subject: [PATCH 3/5] fix(azure): preserve web app slot parent outputs --- .changeset/fair-bars-chew.md | 6 ++++++ .changeset/hot-melons-mate.md | 6 ++++++ packages/azure/src/construct/site-with-webapp/main.ts | 2 +- packages/azure/src/services/app-service/main.ts | 2 +- packages/azure/test/constructs/site-with-webapp.test.ts | 9 +++++++-- packages/azure/test/services/app-service-manager.test.ts | 2 +- 6 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 .changeset/fair-bars-chew.md create mode 100644 .changeset/hot-melons-mate.md diff --git a/.changeset/fair-bars-chew.md b/.changeset/fair-bars-chew.md new file mode 100644 index 000000000..8ddd8053c --- /dev/null +++ b/.changeset/fair-bars-chew.md @@ -0,0 +1,6 @@ +--- +'@gradientedge/cdk-utils-azure': patch +'@gradientedge/cdk-utils': patch +--- + +Create deployment slots before dependent Web App deployment commands. diff --git a/.changeset/hot-melons-mate.md b/.changeset/hot-melons-mate.md new file mode 100644 index 000000000..d7fcb1131 --- /dev/null +++ b/.changeset/hot-melons-mate.md @@ -0,0 +1,6 @@ +--- +'@gradientedge/cdk-utils-azure': patch +'@gradientedge/cdk-utils': patch +--- + +Preserve parent Web App outputs when creating deployment slots. diff --git a/packages/azure/src/construct/site-with-webapp/main.ts b/packages/azure/src/construct/site-with-webapp/main.ts index 909614695..da9f6deac 100644 --- a/packages/azure/src/construct/site-with-webapp/main.ts +++ b/packages/azure/src/construct/site-with-webapp/main.ts @@ -57,7 +57,6 @@ export class SiteWithWebApp extends CommonAzureConstruct { this.createCodePackage() this.createWebAppSiteConfig() this.createWebApp() - this.createWebAppSlot() this.createDiagnosticLog() } @@ -177,6 +176,7 @@ export class SiteWithWebApp extends CommonAzureConstruct { }, { ...resourceOptions } ) + this.createWebAppSlot() } /** @summary Create the optional Azure Web App deployment slot */ diff --git a/packages/azure/src/services/app-service/main.ts b/packages/azure/src/services/app-service/main.ts index 326ea4268..c331ecf45 100644 --- a/packages/azure/src/services/app-service/main.ts +++ b/packages/azure/src/services/app-service/main.ts @@ -156,7 +156,7 @@ export class AzureAppServiceManager { `${id}-was`, { ...props, - name: scope.resourceNameFormatter.format(props.name?.toString(), scope.props.resourceNameOptions?.linuxWebApp), + name: props.name, resourceGroupName, location: props.location ?? scope.props.location, httpsOnly: props.httpsOnly ?? true, diff --git a/packages/azure/test/constructs/site-with-webapp.test.ts b/packages/azure/test/constructs/site-with-webapp.test.ts index dc5f0f542..f2f64563b 100644 --- a/packages/azure/test/constructs/site-with-webapp.test.ts +++ b/packages/azure/test/constructs/site-with-webapp.test.ts @@ -243,9 +243,14 @@ describe('TestSiteWithWebAppConstruct', () => { test('provisions web app slot with auto-swap configuration', () => { pulumi - .all([stack.construct.site.webAppSlot?.id, stack.construct.site.webAppSlot?.siteConfig]) - .apply(([id, siteConfig]) => { + .all([ + stack.construct.site.webAppSlot?.id, + stack.construct.site.webAppSlot?.name, + stack.construct.site.webAppSlot?.siteConfig, + ]) + .apply(([id, name, siteConfig]) => { expect(id).toEqual('test-common-stack-web-app-slot-was-id') + expect(name).toEqual('test-site-web-app-dev') expect(siteConfig?.autoSwapSlotName).toEqual('production') }) }) diff --git a/packages/azure/test/services/app-service-manager.test.ts b/packages/azure/test/services/app-service-manager.test.ts index 1eef4f6e4..6f553513b 100644 --- a/packages/azure/test/services/app-service-manager.test.ts +++ b/packages/azure/test/services/app-service-manager.test.ts @@ -213,7 +213,7 @@ describe('TestAzureWebAppSlotConstruct', () => { expect(urn).toEqual( 'urn:pulumi:stack::project::construct:test-common-stack$azure-native:web:WebAppSlot::test-web-app-slot-dev-was' ) - expect(name).toEqual('test-linux-web-app-dev') + expect(name).toEqual('test-linux-web-app') expect(location).toEqual('eastus') expect(httpsOnly).toEqual(true) expect(tags?.environment).toEqual('dev') From ea8633907d51979ca9039262e1f0d2efd41cf46a Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Mon, 14 Sep 2026 22:59:46 +0100 Subject: [PATCH 4/5] fix(azure): preserve web app slot parent outputs --- .changeset/crisp-papers-lay.md | 5 ----- .changeset/fair-bars-chew.md | 1 - .changeset/hot-melons-mate.md | 6 ------ 3 files changed, 12 deletions(-) delete mode 100644 .changeset/crisp-papers-lay.md delete mode 100644 .changeset/hot-melons-mate.md diff --git a/.changeset/crisp-papers-lay.md b/.changeset/crisp-papers-lay.md deleted file mode 100644 index 38b877bbb..000000000 --- a/.changeset/crisp-papers-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@gradientedge/cdk-utils-azure': patch ---- - -Add optional Azure Web App deployment slot provisioning with auto-swap configuration support. diff --git a/.changeset/fair-bars-chew.md b/.changeset/fair-bars-chew.md index 8ddd8053c..c808c5076 100644 --- a/.changeset/fair-bars-chew.md +++ b/.changeset/fair-bars-chew.md @@ -1,6 +1,5 @@ --- '@gradientedge/cdk-utils-azure': patch -'@gradientedge/cdk-utils': patch --- Create deployment slots before dependent Web App deployment commands. diff --git a/.changeset/hot-melons-mate.md b/.changeset/hot-melons-mate.md deleted file mode 100644 index d7fcb1131..000000000 --- a/.changeset/hot-melons-mate.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@gradientedge/cdk-utils-azure': patch -'@gradientedge/cdk-utils': patch ---- - -Preserve parent Web App outputs when creating deployment slots. From 56a0e0a2fe322490256cfe1c6d21ecbfb7b366a1 Mon Sep 17 00:00:00 2001 From: Hemal Shah Date: Tue, 15 Sep 2026 09:08:11 +0100 Subject: [PATCH 5/5] fix(azure): preserve web app slot parent outputs --- packages/azure/src/services/app-service/main.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/azure/src/services/app-service/main.ts b/packages/azure/src/services/app-service/main.ts index c331ecf45..4e4257213 100644 --- a/packages/azure/src/services/app-service/main.ts +++ b/packages/azure/src/services/app-service/main.ts @@ -179,7 +179,11 @@ export class AzureAppServiceManager { ...props.tags, }, }, - { parent: scope, ...resourceOptions } + { + parent: scope, + ...resourceOptions, + ignoreChanges: [...new Set([...(resourceOptions?.ignoreChanges ?? []), 'siteConfig.autoSwapSlotName'])], + } ) } }