Skip to content

Commit a0dfc70

Browse files
committed
delete release.zip if its a php app
1 parent ac9b3a0 commit a0dfc70

File tree

2 files changed

+88
-22
lines changed

2 files changed

+88
-22
lines changed

lib/DeploymentProvider/Providers/WebAppDeploymentProvider.js

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const BaseWebAppDeploymentProvider_1 = require("./BaseWebAppDeploymentProvider")
5454
const AnnotationUtility_1 = require("azure-actions-appservice-rest/Utilities/AnnotationUtility");
5555
const promises_1 = require("fs/promises");
5656
const path_1 = __importDefault(require("path"));
57+
const fs = __importStar(require("fs"));
5758
class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebAppDeploymentProvider {
5859
DeployWebAppStep() {
5960
return __awaiter(this, void 0, void 0, function* () {
@@ -81,18 +82,7 @@ class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebApp
8182
case packageUtility_1.PackageType.folder:
8283
let tempPackagePath = utility.generateTemporaryFolderOrZipPath(`${process.env.RUNNER_TEMP}`, false);
8384
const releaseZipPath = path_1.default.join(webPackage, 'release.zip');
84-
try {
85-
yield (0, promises_1.unlink)(releaseZipPath);
86-
core.info(`Deleted: ${releaseZipPath}`);
87-
}
88-
catch (err) {
89-
if (err.code === 'ENOENT') {
90-
core.error(`File does not exist: ${releaseZipPath}`);
91-
}
92-
else {
93-
core.error(`Error while deleting file ${releaseZipPath}, Error: ${err}`);
94-
}
95-
}
85+
yield this.deleteReleaseZip(webPackage);
9686
webPackage = (yield zipUtility.archiveFolder(webPackage, "", tempPackagePath));
9787
core.debug("Compressed folder into zip " + webPackage);
9888
core.debug("Initiated deployment via kudu service for webapp package : " + webPackage);
@@ -135,5 +125,46 @@ class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider_1.BaseWebApp
135125
core.setOutput('webapp-url', this.applicationURL);
136126
});
137127
}
128+
deleteReleaseZip(folderPath) {
129+
return __awaiter(this, void 0, void 0, function* () {
130+
let isPhpApp = yield this.containsPhpFiles(folderPath);
131+
if (!isPhpApp) {
132+
core.info("No PHP files found in the folder, skipping release.zip deletion.");
133+
return;
134+
}
135+
let releaseZipPath = path_1.default.join(folderPath, 'release.zip');
136+
try {
137+
yield (0, promises_1.unlink)(releaseZipPath);
138+
core.info(`Deleted: ${releaseZipPath}`);
139+
}
140+
catch (err) {
141+
if (err.code === 'ENOENT') {
142+
core.error(`File does not exist: ${releaseZipPath}`);
143+
}
144+
else {
145+
core.error(`Error while deleting file ${releaseZipPath}, Error: ${err}`);
146+
}
147+
}
148+
});
149+
}
150+
containsPhpFiles(directoryPath) {
151+
return __awaiter(this, void 0, void 0, function* () {
152+
try {
153+
const files = fs.readdirSync(directoryPath);
154+
for (const file of files) {
155+
const fullPath = path_1.default.join(directoryPath, file);
156+
const stat = fs.statSync(fullPath);
157+
if (stat.isFile() && path_1.default.extname(file).toLowerCase() === '.php') {
158+
return true;
159+
}
160+
}
161+
return false;
162+
}
163+
catch (error) {
164+
console.error(`Error checking directory: ${error.message}`);
165+
return false;
166+
}
167+
});
168+
}
138169
}
139170
exports.WebAppDeploymentProvider = WebAppDeploymentProvider;

src/DeploymentProvider/Providers/WebAppDeploymentProvider.ts

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { addAnnotation } from 'azure-actions-appservice-rest/Utilities/Annotatio
99

1010
import { unlink } from 'fs/promises';
1111
import path from 'path';
12+
import * as fs from 'fs';
1213

1314
export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider {
1415

@@ -45,16 +46,7 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider {
4546

4647
const releaseZipPath = path.join(webPackage, 'release.zip');
4748

48-
try {
49-
await unlink(releaseZipPath);
50-
core.info(`Deleted: ${releaseZipPath}`);
51-
} catch (err: any) {
52-
if (err.code === 'ENOENT') {
53-
core.error(`File does not exist: ${releaseZipPath}`);
54-
} else {
55-
core.error(`Error while deleting file ${releaseZipPath}, Error: ${err}`);
56-
}
57-
}
49+
await this.deleteReleaseZip(webPackage);
5850

5951
webPackage = await zipUtility.archiveFolder(webPackage, "", tempPackagePath) as string;
6052
core.debug("Compressed folder into zip " + webPackage);
@@ -101,4 +93,47 @@ export class WebAppDeploymentProvider extends BaseWebAppDeploymentProvider {
10193
console.log('App Service Application URL: ' + this.applicationURL);
10294
core.setOutput('webapp-url', this.applicationURL);
10395
}
96+
97+
private async deleteReleaseZip(folderPath: string) {
98+
99+
let isPhpApp = await this.containsPhpFiles(folderPath);
100+
101+
if(!isPhpApp) {
102+
core.info("No PHP files found in the folder, skipping release.zip deletion.");
103+
return;
104+
}
105+
106+
let releaseZipPath = path.join(folderPath, 'release.zip');
107+
108+
try {
109+
await unlink(releaseZipPath);
110+
core.info(`Deleted: ${releaseZipPath}`);
111+
} catch (err: any) {
112+
if (err.code === 'ENOENT') {
113+
core.error(`File does not exist: ${releaseZipPath}`);
114+
} else {
115+
core.error(`Error while deleting file ${releaseZipPath}, Error: ${err}`);
116+
}
117+
}
118+
}
119+
120+
private async containsPhpFiles(directoryPath: string): Promise<boolean> {
121+
try {
122+
const files = fs.readdirSync(directoryPath);
123+
124+
for (const file of files) {
125+
const fullPath = path.join(directoryPath, file);
126+
const stat = fs.statSync(fullPath);
127+
128+
if (stat.isFile() && path.extname(file).toLowerCase() === '.php') {
129+
return true;
130+
}
131+
}
132+
133+
return false;
134+
} catch (error: any) {
135+
console.error(`Error checking directory: ${error.message}`);
136+
return false;
137+
}
138+
}
104139
}

0 commit comments

Comments
 (0)