Skip to content

Commit 5b64b44

Browse files
Merge pull request #2051 from Accenture/bug/2035-deploy-asset-fails-if-pre-existing-cbbk-dependencies-are-not-also-deployed
Bug/2035 deploy asset fails if pre existing cbbk dependencies are not also deployed
2 parents 5b3399a + a425c26 commit 5b64b44

17 files changed

+448
-27
lines changed

@types/lib/metadataTypes/Asset.d.ts

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

@types/lib/metadataTypes/Asset.d.ts.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

@types/lib/util/replaceContentBlockReference.d.ts

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

@types/lib/util/replaceContentBlockReference.d.ts.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/metadataTypes/Asset.js

+19-13
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,13 @@ class Asset extends MetadataType {
188188
}
189189

190190
/**
191-
* Returns Order in which metadata needs to be retrieved/deployed
191+
* Returns Order in which metadata needs to be retrieved/deployed and skips components with missing components
192192
*
193193
* @param {AssetMap} metadataMap metadata mapped by their keyField
194194
* @param {string} deployDir directory where deploy metadata are saved
195195
* @returns {Promise.<AssetMap>} keyField => metadata map but sorted to ensure dependencies are deployed in correct order
196196
*/
197-
static async _getUpsertOrder(metadataMap, deployDir) {
197+
static async _getUpsertOrderAndSkipMissing(metadataMap, deployDir) {
198198
/**
199199
* one entry for each dependency with the first item being the key thats required by the second item
200200
*
@@ -225,11 +225,14 @@ class Asset extends MetadataType {
225225
dependencies.push([undefined, key]);
226226
}
227227
} catch (ex) {
228-
if (ex.code !== 200) {
229-
Util.logger.errorStack(ex, 'Cannot find related code blocks for ' + key);
228+
if (ex.code === 200) {
229+
// no dependent keys found
230+
dependencies.push([undefined, key]);
231+
} else {
232+
Util.logger.error(
233+
` ☇ skipping ${this.definition.type} ${key}: content block ${ex.message} that is referenced via ContentBlockByX was not found on BU nor in deployment package`
234+
);
230235
}
231-
// no dependent keys found
232-
dependencies.push([undefined, key]);
233236
}
234237
}
235238

@@ -240,7 +243,9 @@ class Asset extends MetadataType {
240243
const metadataTypeMapSorted = {};
241244
// group subtypes per type
242245
for (const key of flatList) {
243-
metadataTypeMapSorted[key] = metadataMap[key];
246+
if (metadataMap[key]) {
247+
metadataTypeMapSorted[key] = metadataMap[key];
248+
}
244249
}
245250
return metadataTypeMapSorted;
246251
}
@@ -253,12 +258,13 @@ class Asset extends MetadataType {
253258
* @returns {Promise.<AssetMap>} keyField => metadata map
254259
*/
255260
static async upsert(metadataMap, deployDir) {
256-
if (Object.keys(metadataMap).length > 1) {
257-
// fill the cache map with our deployment package to ensure we can find
258-
ReplaceCbReference.createCacheForMap(metadataMap);
259-
// assets can link to other assets (via template, content block reference and SSJS/AMPscript) and deployment would fail if we did not sort this here
260-
metadataMap = await this._getUpsertOrder(metadataMap, deployDir);
261-
}
261+
// add already existing, cached items to our cache map to ensure we can find them
262+
ReplaceCbReference.createCacheForMap(cache.getCache().asset);
263+
// await ReplaceCbReference.createCache(this.properties, this.buObject, true);
264+
// fill the cache map with our deployment package to ensure we can find
265+
ReplaceCbReference.createCacheForMap(metadataMap);
266+
// assets can link to other assets (via template, content block reference and SSJS/AMPscript) and deployment would fail if we did not sort this here
267+
metadataMap = await this._getUpsertOrderAndSkipMissing(metadataMap, deployDir);
262268
return super.upsert(metadataMap, deployDir, true);
263269
}
264270

0 commit comments

Comments
 (0)