function getParentTagForVersion()

in build/src/utils/config.js [474:502]


function getParentTagForVersion(definitionId, version, registry, registryPath, variant) {
    let parentId = config.definitionBuildSettings[definitionId].parent;
    if (parentId) {
        if(typeof parentId !== 'string') {
            // Use variant to figure out correct parent, or return first parent if child has no variant
            parentId = variant ? parentId[variant] : parentId[Object.keys(parentId)[0]];
        }
    
        // Determine right parent variant to use (assuming there are variants)
        const parentVariantList = getVariants(parentId);
        let parentVariant;
        if(parentVariantList) {
            // If a variant is specified in the parentVariant property in build, use it - otherwise default to the child definition's variant
            parentVariant = config.definitionBuildSettings[definitionId].parentVariant || variant;
            if(typeof parentVariant !== 'string') {
                // Use variant to figure out correct variant it not the same across all parents, or return first variant if child has no variant
                parentVariant = variant ? parentVariant[variant] : parentVariant[Object.keys(parentId)[0]];
            }
            if(!parentVariantList.includes(parentVariant)) {
                throw `Unable to determine variant for parent. Variant ${parentVariant} is not in ${parentId} list: ${parentVariantList}`;
            }
        }
        
        // Parent image version may be different than child's
        const parentVersion = getVersionFromRelease(version, parentId);
        return getTagsForVersion(parentId, parentVersion, registry, registryPath, parentVariant)[0];
    }
    return null;
}