Skip to content

Commit 9379ff9

Browse files
committed
releases/v2 changes for sidecar
1 parent 7311eb4 commit 9379ff9

23 files changed

+361
-66
lines changed

lib/ActionInputValidator/ActionValidators/PublishProfileContainerWebAppValidator.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class PublishProfileContainerWebAppValidator {
1919
(0, Validations_1.packageNotAllowed)(actionParams.packageInput);
2020
(0, Validations_1.multiContainerNotAllowed)(actionParams.multiContainerConfigFile);
2121
(0, Validations_1.startupCommandNotAllowed)(actionParams.startupCommand);
22+
(0, Validations_1.siteContainersConfigNotAllowed)(actionParams.siteContainers);
2223
(0, Validations_1.validateAppDetails)();
2324
(0, Validations_1.validateSingleContainerInputs)();
2425
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4+
return new (P || (P = Promise))(function (resolve, reject) {
5+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8+
step((generator = generator.apply(thisArg, _arguments || [])).next());
9+
});
10+
};
11+
Object.defineProperty(exports, "__esModule", { value: true });
12+
exports.PublishProfileWebAppSiteContainersValidator = void 0;
13+
class PublishProfileWebAppSiteContainersValidator {
14+
validate() {
15+
return __awaiter(this, void 0, void 0, function* () {
16+
throw new Error("publish-profile is not supported for Site Containers scenario");
17+
});
18+
}
19+
}
20+
exports.PublishProfileWebAppSiteContainersValidator = PublishProfileWebAppSiteContainersValidator;

lib/ActionInputValidator/ActionValidators/PublishProfileWebAppValidator.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class PublishProfileWebAppValidator {
1919
(0, Validations_1.containerInputsNotAllowed)(actionParams.images, actionParams.multiContainerConfigFile, true);
2020
(0, Validations_1.validateAppDetails)();
2121
(0, Validations_1.startupCommandNotAllowed)(actionParams.startupCommand);
22+
(0, Validations_1.siteContainersConfigNotAllowed)(actionParams.siteContainers);
2223
yield (0, Validations_1.validatePackageInput)();
2324
});
2425
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4+
return new (P || (P = Promise))(function (resolve, reject) {
5+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8+
step((generator = generator.apply(thisArg, _arguments || [])).next());
9+
});
10+
};
11+
Object.defineProperty(exports, "__esModule", { value: true });
12+
exports.SpnWebAppSiteContainersValidator = void 0;
13+
const Validations_1 = require("../Validations");
14+
const SpnLinuxWebAppValidator_1 = require("./SpnLinuxWebAppValidator");
15+
const actionparameters_1 = require("../../actionparameters");
16+
class SpnWebAppSiteContainersValidator extends SpnLinuxWebAppValidator_1.SpnLinuxWebAppValidator {
17+
validate() {
18+
const _super = Object.create(null, {
19+
validate: { get: () => super.validate }
20+
});
21+
return __awaiter(this, void 0, void 0, function* () {
22+
let actionParams = actionparameters_1.ActionParameters.getActionParams();
23+
if (!!actionParams.blessedAppSitecontainers) {
24+
yield _super.validate.call(this);
25+
}
26+
(0, Validations_1.validateSiteContainersInputs)();
27+
});
28+
}
29+
}
30+
exports.SpnWebAppSiteContainersValidator = SpnWebAppSiteContainersValidator;

lib/ActionInputValidator/Validations.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ exports.multiContainerNotAllowed = multiContainerNotAllowed;
5151
exports.validateSingleContainerInputs = validateSingleContainerInputs;
5252
exports.validateContainerInputs = validateContainerInputs;
5353
exports.validatePackageInput = validatePackageInput;
54+
exports.siteContainersConfigNotAllowed = siteContainersConfigNotAllowed;
55+
exports.validateSiteContainersInputs = validateSiteContainersInputs;
5456
const core = __importStar(require("@actions/core"));
5557
const packageUtility_1 = require("azure-actions-utility/packageUtility");
5658
const PublishProfile_1 = require("../Utilities/PublishProfile");
@@ -146,3 +148,16 @@ function validatePackageInput() {
146148
}
147149
});
148150
}
151+
// Error if Sitecontainers configuration is provided
152+
function siteContainersConfigNotAllowed(siteContainers) {
153+
if (!!siteContainers) {
154+
throw new Error("SiteContainers not valid input for this web app.");
155+
}
156+
}
157+
// validate Sitecontainers inputs
158+
function validateSiteContainersInputs() {
159+
const actionParams = actionparameters_1.ActionParameters.getActionParams();
160+
if (!actionParams.siteContainers || actionParams.siteContainers.length === 0) {
161+
throw new Error("Site containers not provided.");
162+
}
163+
}

lib/ActionInputValidator/ValidatorFactory.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,17 @@ const SpnWindowsWebAppValidator_1 = require("./ActionValidators/SpnWindowsWebApp
5959
const Validations_1 = require("./Validations");
6060
const PublishProfile_1 = require("../Utilities/PublishProfile");
6161
const RuntimeConstants_1 = __importDefault(require("../RuntimeConstants"));
62+
const SpnWebAppSiteContainersValidator_1 = require("./ActionValidators/SpnWebAppSiteContainersValidator");
63+
const PublishProfileWebAppSiteContainersValidator_1 = require("./ActionValidators/PublishProfileWebAppSiteContainersValidator");
64+
const azure_app_service_1 = require("azure-actions-appservice-rest/Arm/azure-app-service");
6265
class ValidatorFactory {
6366
static getValidator(type) {
6467
return __awaiter(this, void 0, void 0, function* () {
6568
let actionParams = actionparameters_1.ActionParameters.getActionParams();
6669
if (type === BaseWebAppDeploymentProvider_1.DEPLOYMENT_PROVIDER_TYPES.PUBLISHPROFILE) {
70+
if (!!actionParams.blessedAppSitecontainers || !!actionParams.siteContainers) {
71+
return new PublishProfileWebAppSiteContainersValidator_1.PublishProfileWebAppSiteContainersValidator();
72+
}
6773
if (!!actionParams.images) {
6874
yield this.setResourceDetails(actionParams);
6975
return new PublishProfileContainerWebAppValidator_1.PublishProfileContainerWebAppValidator();
@@ -83,7 +89,11 @@ class ValidatorFactory {
8389
(0, Validations_1.appNameIsRequired)(actionParams.appName);
8490
yield this.getResourceDetails(actionParams);
8591
if (!!actionParams.isLinux) {
86-
if (!!actionParams.images || !!actionParams.multiContainerConfigFile) {
92+
if (!!actionParams.siteContainers) {
93+
yield this.setBlessedSitecontainerApp(actionParams);
94+
return new SpnWebAppSiteContainersValidator_1.SpnWebAppSiteContainersValidator();
95+
}
96+
else if (!!actionParams.images || !!actionParams.multiContainerConfigFile) {
8797
return new SpnLinuxContainerWebAppValidator_1.SpnLinuxContainerWebAppValidator();
8898
}
8999
else {
@@ -121,5 +131,17 @@ class ValidatorFactory {
121131
actionParams.isLinux = appOS.includes(RuntimeConstants_1.default.Unix) || appOS.includes(RuntimeConstants_1.default.Unix.toLowerCase());
122132
});
123133
}
134+
static setBlessedSitecontainerApp(actionParams) {
135+
return __awaiter(this, void 0, void 0, function* () {
136+
var _a, _b;
137+
const appService = new azure_app_service_1.AzureAppService(actionParams.endpoint, actionParams.resourceGroupName, actionParams.appName, actionParams.slotName);
138+
let config = yield appService.getConfiguration();
139+
core.debug(`LinuxFxVersion of app is: ${config.properties.linuxFxVersion}`);
140+
actionParams.blessedAppSitecontainers = (((_a = config.properties.linuxFxVersion) === null || _a === void 0 ? void 0 : _a.startsWith("DOCKER|")) !== true
141+
&& ((_b = config.properties.linuxFxVersion) === null || _b === void 0 ? void 0 : _b.startsWith("COMPOSE|")) !== true
142+
&& config.properties.linuxFxVersion !== "SITECONTAINERS");
143+
core.debug(`Is blessed app sitecontainers: ${actionParams.blessedAppSitecontainers}`);
144+
});
145+
}
124146
}
125147
exports.ValidatorFactory = ValidatorFactory;
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
"use strict";
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
var desc = Object.getOwnPropertyDescriptor(m, k);
5+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6+
desc = { enumerable: true, get: function() { return m[k]; } };
7+
}
8+
Object.defineProperty(o, k2, desc);
9+
}) : (function(o, m, k, k2) {
10+
if (k2 === undefined) k2 = k;
11+
o[k2] = m[k];
12+
}));
13+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14+
Object.defineProperty(o, "default", { enumerable: true, value: v });
15+
}) : function(o, v) {
16+
o["default"] = v;
17+
});
18+
var __importStar = (this && this.__importStar) || (function () {
19+
var ownKeys = function(o) {
20+
ownKeys = Object.getOwnPropertyNames || function (o) {
21+
var ar = [];
22+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23+
return ar;
24+
};
25+
return ownKeys(o);
26+
};
27+
return function (mod) {
28+
if (mod && mod.__esModule) return mod;
29+
var result = {};
30+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31+
__setModuleDefault(result, mod);
32+
return result;
33+
};
34+
})();
35+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37+
return new (P || (P = Promise))(function (resolve, reject) {
38+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41+
step((generator = generator.apply(thisArg, _arguments || [])).next());
42+
});
43+
};
44+
Object.defineProperty(exports, "__esModule", { value: true });
45+
exports.WebAppSiteContainersDeploymentProvider = void 0;
46+
const SiteContainerDeploymentUtility_1 = require("azure-actions-appservice-rest/Utilities/SiteContainerDeploymentUtility");
47+
const core = __importStar(require("@actions/core"));
48+
const WebAppDeploymentProvider_1 = require("./WebAppDeploymentProvider");
49+
class WebAppSiteContainersDeploymentProvider extends WebAppDeploymentProvider_1.WebAppDeploymentProvider {
50+
DeployWebAppStep() {
51+
const _super = Object.create(null, {
52+
DeployWebAppStep: { get: () => super.DeployWebAppStep }
53+
});
54+
return __awaiter(this, void 0, void 0, function* () {
55+
if (!!this.actionParams.blessedAppSitecontainers) {
56+
core.debug("Blessed site containers detected, using WebAppDeploymentProvider for deployment.");
57+
yield _super.DeployWebAppStep.call(this);
58+
}
59+
let siteContainerDeploymentUtility = new SiteContainerDeploymentUtility_1.SiteContainerDeploymentUtility(this.appService);
60+
let siteContainers = this.actionParams.siteContainers;
61+
core.debug("Updating site containers");
62+
for (let i = 0; i < siteContainers.length; i++) {
63+
let siteContainer = siteContainers[i];
64+
core.debug("updating site container: " + siteContainer.getName());
65+
yield siteContainerDeploymentUtility.updateSiteContainer(siteContainer);
66+
}
67+
});
68+
}
69+
}
70+
exports.WebAppSiteContainersDeploymentProvider = WebAppSiteContainersDeploymentProvider;

lib/actionparameters.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
3535
Object.defineProperty(exports, "__esModule", { value: true });
3636
exports.ActionParameters = exports.appKindMap = exports.WebAppKind = void 0;
3737
const core = __importStar(require("@actions/core"));
38+
const SiteContainer_1 = require("azure-actions-appservice-rest/Arm/SiteContainer");
3839
const github = require('@actions/github');
3940
var WebAppKind;
4041
(function (WebAppKind) {
@@ -66,6 +67,16 @@ class ActionParameters {
6667
*/
6768
this._commitMessage = github.context.eventName === 'push' ? github.context.payload.head_commit.message.slice(0, 1000) : "";
6869
this._endpoint = endpoint;
70+
// Used for Sitecontainers app.
71+
const siteContainersConfigInput = core.getInput('sitecontainers-config');
72+
if (siteContainersConfigInput) {
73+
const raw = JSON.parse(siteContainersConfigInput);
74+
this._siteContainers = raw.map(SiteContainer_1.SiteContainer.fromJson);
75+
}
76+
else {
77+
this._siteContainers = null;
78+
}
79+
this._blessedAppSitecontainers = false;
6980
}
7081
static getActionParams(endpoint) {
7182
if (!this.actionparams) {
@@ -139,5 +150,17 @@ class ActionParameters {
139150
get multiContainerConfigFile() {
140151
return this._multiContainerConfigFile;
141152
}
153+
get siteContainers() {
154+
return this._siteContainers;
155+
}
156+
set siteContainers(siteContainers) {
157+
this._siteContainers = siteContainers;
158+
}
159+
get blessedAppSitecontainers() {
160+
return this._blessedAppSitecontainers;
161+
}
162+
set blessedAppSitecontainers(blessedAppSitecontainers) {
163+
this._blessedAppSitecontainers = blessedAppSitecontainers;
164+
}
142165
}
143166
exports.ActionParameters = ActionParameters;

node_modules/.package-lock.json

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node_modules/azure-actions-appservice-rest/Arm/SiteContainer.d.ts

Lines changed: 12 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)