diff --git a/lib/ActionInputValidator/ValidatorFactory.js b/lib/ActionInputValidator/ValidatorFactory.js index 953923101..d15b01453 100644 --- a/lib/ActionInputValidator/ValidatorFactory.js +++ b/lib/ActionInputValidator/ValidatorFactory.js @@ -1,4 +1,37 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -13,6 +46,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ValidatorFactory = void 0; +const core = __importStar(require("@actions/core")); const actionparameters_1 = require("../actionparameters"); const AzureResourceFilterUtility_1 = require("azure-actions-appservice-rest/Utilities/AzureResourceFilterUtility"); const BaseWebAppDeploymentProvider_1 = require("../DeploymentProvider/Providers/BaseWebAppDeploymentProvider"); @@ -35,6 +69,12 @@ class ValidatorFactory { return new PublishProfileContainerWebAppValidator_1.PublishProfileContainerWebAppValidator(); } else { + try { + yield this.setResourceDetails(actionParams); + } + catch (error) { + core.warning(`Failed to set resource details: ${error.message}`); + } return new PublishProfileWebAppValidator_1.PublishProfileWebAppValidator(); } } diff --git a/lib/DeploymentProvider/Providers/WebAppDeploymentProvider.js b/lib/DeploymentProvider/Providers/WebAppDeploymentProvider.js index 604484857..4917b981a 100644 --- a/lib/DeploymentProvider/Providers/WebAppDeploymentProvider.js +++ b/lib/DeploymentProvider/Providers/WebAppDeploymentProvider.js @@ -126,14 +126,20 @@ class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebApp } deleteReleaseZipForLinuxPhpApps(webPackage) { return __awaiter(this, void 0, void 0, function* () { + // If the app is not a Linux app, skip the deletion of release.zip + if (!this.actionParams.isLinux) { + core.debug(`It's not a Linux app, skipping deletion of release.zip`); + return; + } const releaseZipPath = path_1.default.join(webPackage, 'release.zip'); - // Ignore if the app is not a Linux app or if release.zip does not exist - if (!this.actionParams.isLinux || !fs_1.default.existsSync(releaseZipPath)) { + if (!fs_1.default.existsSync(releaseZipPath)) { + core.debug(`release.zip does not exist, skipping deletion: ${releaseZipPath}`); return; } let isPhpApp = yield this.checkIfTheAppIsPhpApp(webPackage); // No need to delete release.zip for non-PHP apps if (!isPhpApp) { + core.debug(`Not a PHP app, skipping deletion of release.zip: ${releaseZipPath}`); return; } // Delete release.zip if it exists @@ -152,10 +158,18 @@ class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebApp // Check if the webPackage folder contains a composer.json file const composerFile = 'composer.json'; if (fs_1.default.existsSync(path_1.default.join(webPackage, composerFile))) { + core.debug(`Detected PHP app by presence of ${composerFile}`); return true; } // Check if the webPackage folder contains a .php file - const hasPhpFiles = fs_1.default.readdirSync(webPackage).some(file => file.endsWith('.php')); + core.debug(`Checking for .php files in the web package directory: ${webPackage}`); + const hasPhpFiles = fs_1.default.readdirSync(webPackage, { withFileTypes: true, recursive: true }).some(file => file.isFile() && file.name.endsWith('.php')); + if (hasPhpFiles) { + core.debug(`Detected PHP app by presence of .php files`); + } + else { + core.debug(`No .php files found in the web package directory`); + } return hasPhpFiles; } catch (error) { diff --git a/src/ActionInputValidator/ValidatorFactory.ts b/src/ActionInputValidator/ValidatorFactory.ts index 7e0b8b5ca..9ae6facc5 100644 --- a/src/ActionInputValidator/ValidatorFactory.ts +++ b/src/ActionInputValidator/ValidatorFactory.ts @@ -1,3 +1,4 @@ +import * as core from "@actions/core"; import { ActionParameters, WebAppKind, appKindMap } from "../actionparameters"; import { AzureResourceFilterUtility } from "azure-actions-appservice-rest/Utilities/AzureResourceFilterUtility"; @@ -22,7 +23,13 @@ export class ValidatorFactory { return new PublishProfileContainerWebAppValidator(); } else { - return new PublishProfileWebAppValidator(); + try { + await this.setResourceDetails(actionParams); + } + catch (error) { + core.warning(`Failed to set resource details: ${error.message}`); + } + return new PublishProfileWebAppValidator(); } } else if(type == DEPLOYMENT_PROVIDER_TYPES.SPN) { diff --git a/src/DeploymentProvider/Providers/WebAppDeploymentProvider.ts b/src/DeploymentProvider/Providers/WebAppDeploymentProvider.ts index d19f76306..c46106bb3 100644 --- a/src/DeploymentProvider/Providers/WebAppDeploymentProvider.ts +++ b/src/DeploymentProvider/Providers/WebAppDeploymentProvider.ts @@ -93,11 +93,17 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider { } private async deleteReleaseZipForLinuxPhpApps(webPackage: string): Promise { + + // If the app is not a Linux app, skip the deletion of release.zip + if (!this.actionParams.isLinux) { + core.debug(`It's not a Linux app, skipping deletion of release.zip`); + return; + } const releaseZipPath = path.join(webPackage, 'release.zip'); - // Ignore if the app is not a Linux app or if release.zip does not exist - if (!this.actionParams.isLinux || !fs.existsSync(releaseZipPath)) { + if (!fs.existsSync(releaseZipPath)) { + core.debug(`release.zip does not exist, skipping deletion: ${releaseZipPath}`); return; } @@ -105,6 +111,7 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider { // No need to delete release.zip for non-PHP apps if (!isPhpApp) { + core.debug(`Not a PHP app, skipping deletion of release.zip: ${releaseZipPath}`); return; } @@ -124,11 +131,19 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider { // Check if the webPackage folder contains a composer.json file const composerFile = 'composer.json'; if (fs.existsSync(path.join(webPackage, composerFile))) { + core.debug(`Detected PHP app by presence of ${composerFile}`); return true; } // Check if the webPackage folder contains a .php file - const hasPhpFiles = fs.readdirSync(webPackage).some(file => file.endsWith('.php')); + core.debug(`Checking for .php files in the web package directory: ${webPackage}`); + const hasPhpFiles = fs.readdirSync(webPackage, {withFileTypes: true, recursive: true}).some(file => file.isFile() && file.name.endsWith('.php')); + + if (hasPhpFiles) { + core.debug(`Detected PHP app by presence of .php files`); + } else { + core.debug(`No .php files found in the web package directory`); + } return hasPhpFiles; } catch (error) {