diff --git a/build.ps1 b/build.ps1 index 4b901c8d4..11f0dbfd2 100644 --- a/build.ps1 +++ b/build.ps1 @@ -199,7 +199,6 @@ End { $dupeTagIssues = @() $toBuild = @() - $builtSubImages = @() foreach ($actualChannel in $Channels) { if ($PSCmdlet.ParameterSetName -match '.*ByName') { @@ -265,31 +264,23 @@ End { { $actualTagData = $allMeta.ActualTagDataByGroup.$tagGroup $SubImagePath = Join-Path -Path $dockerFileName -ChildPath $allMeta.Meta.SubImage - if($builtSubImages -notcontains $SubImagePath) - { - Write-Verbose -Message "getting subimage - fromtag: $($tagGroup.Name) - subimage: $($allMeta.Meta.SubImage)" - $subImageAllMeta = Get-DockerImageMetaDataWrapper ` - -DockerFileName $SubImagePath ` - -CI:$CI.IsPresent ` - -IncludeKnownIssues:$IncludeKnownIssues.IsPresent ` - -ChannelPath $channelPath ` - -TagFilter $TagFilter ` - -Version $windowsVersion ` - -ImageName $ImageName ` - -LinuxVersion $linuxVersion ` - -TagData $allMeta.TagData ` - -BaseImage $actualTagData.ActualTags[0] ` - -BaseRepositry $Repository ` - -Strict:$CheckForDuplicateTags.IsPresent - - - $toBuild += $subImageAllMeta - $builtSubImages += $SubImagePath - } - else - { - Write-Verbose -Message "already got subimage - fromtag: $($tagGroup.Name) - subimage: $($allMeta.Meta.SubImage)" - } + Write-Verbose -Message "getting subimage - fromtag: $($tagGroup.Name) - subimage: $($allMeta.Meta.SubImage)" + $subImageAllMeta = Get-DockerImageMetaDataWrapper ` + -DockerFileName $SubImagePath ` + -CI:$CI.IsPresent ` + -IncludeKnownIssues:$IncludeKnownIssues.IsPresent ` + -ChannelPath $channelPath ` + -TagFilter $TagFilter ` + -Version $windowsVersion ` + -ImageName $ImageName ` + -LinuxVersion $linuxVersion ` + -TagData $allMeta.TagData ` + -BaseImage $actualTagData.ActualTags[0] ` + -BaseRepositry $Repository ` + -Strict:$CheckForDuplicateTags.IsPresent ` + -FromTag $tagGroup.Name + + $toBuild += $subImageAllMeta } } } diff --git a/release/preview/alpine39/test-deps/meta.json b/release/preview/alpine39/test-deps/meta.json index 3a5779890..8c3a220c4 100644 --- a/release/preview/alpine39/test-deps/meta.json +++ b/release/preview/alpine39/test-deps/meta.json @@ -4,7 +4,7 @@ "SkipGssNtlmSspTests": true, "osVersion": "Alpine ${fromTag}", "tagTemplates": [ - "preview-alpine-#shorttag#" + "#tag#" ], "OptionalTests": [ "test-deps", @@ -12,5 +12,9 @@ ], "TestProperties": { "size": 212 + }, + "TagMapping": { + "^.*-alpine-3.9$" : "preview-alpine-3.9", + "^.*-alpine-3.10$" : "preview-alpine-3.10" } } diff --git a/release/preview/fedora/test-deps/meta.json b/release/preview/fedora/test-deps/meta.json index e59800f34..0506d5a74 100644 --- a/release/preview/fedora/test-deps/meta.json +++ b/release/preview/fedora/test-deps/meta.json @@ -4,7 +4,7 @@ "osVersion": "Fedora ${fromTag}", "SkipGssNtlmSspTests": false, "tagTemplates": [ - "preview-fedora-#shorttag#" + "#tag#" ], "SubRepository": "test-deps", "OptionalTests": [ @@ -12,5 +12,10 @@ ], "TestProperties": { "size": 602 + }, + "TagMapping": { + "^.*-fedora-28$" : "preview-fedora-28", + "^.*-fedora-29$" : "preview-fedora-29", + "^.*-fedora-30$" : "preview-fedora-30" } } diff --git a/tools/buildHelper/buildHelper.psm1 b/tools/buildHelper/buildHelper.psm1 index 5c8324937..800cb6e49 100644 --- a/tools/buildHelper/buildHelper.psm1 +++ b/tools/buildHelper/buildHelper.psm1 @@ -162,6 +162,9 @@ class DockerImageMetaData { [PSCustomObject] $TestProperties = ([PSCustomObject]@{}) + + [PSCustomObject] + $TagMapping } class ShortTagMetaData { @@ -333,6 +336,13 @@ class DockerImageFullMetaData [string] $FullRepository } +class UpstreamImageTagData +{ + [string] $Type + [string] $Tag + [string] $FromTag +} + # Get the meta data and the tag data for an image function Get-DockerImageMetaDataWrapper { @@ -373,7 +383,10 @@ function Get-DockerImageMetaDataWrapper $BaseRepositry, [switch] - $Strict + $Strict, + + [string] + $FromTag ) $imagePath = Join-Path -Path $ChannelPath -ChildPath $dockerFileName @@ -419,6 +432,22 @@ function Get-DockerImageMetaDataWrapper $tagDataFromScript = @($tagDataFromScript | Where-Object { $_.FromTag -match $TagFilter }) } } + elseif ($meta.TagMapping) { + foreach($regex in $meta.TagMapping.PSObject.Properties.Name) + { + if($BaseImage -match $regex) + { + $tagName = $meta.TagMapping.$regex + $tagDataFromScript = @( + [UpstreamImageTagData]@{ + Type='Full' + Tag=$tagName + FromTag = $FromTag + } + ) + } + } + } else { $tagDataFromScript = $TagData