From 40d3af70277464c5b0987da5de187558050cddf3 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Mon, 23 Aug 2021 15:21:49 -0400 Subject: [PATCH 1/4] add server stable image --- .../stable/windowsserver/docker/Dockerfile | 72 +++++++++++++++++++ release/stable/windowsserver/meta.json | 23 ++++++ 2 files changed, 95 insertions(+) create mode 100644 release/stable/windowsserver/docker/Dockerfile create mode 100644 release/stable/windowsserver/meta.json diff --git a/release/stable/windowsserver/docker/Dockerfile b/release/stable/windowsserver/docker/Dockerfile new file mode 100644 index 000000000..71d620bf3 --- /dev/null +++ b/release/stable/windowsserver/docker/Dockerfile @@ -0,0 +1,72 @@ +# escape=` +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +ARG dockerHost=mcr.microsoft.com +ARG WindowsServerRepo=windows/server +ARG tag=ltsc2022 + +# Use server core as an installer container to extract PowerShell, +# As this is a multi-stage build, this stage will eventually be thrown away +FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} AS installer-env + +ARG PS_VERSION=6.2.0 +ARG PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v${PS_VERSION}/PowerShell-${PS_VERSION}-win-x64.zip + +SHELL ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "-command"] + +ARG PS_PACKAGE_URL_BASE64 + +RUN Write-host "Verifying valid Version..."; ` + if (!($env:PS_VERSION -match '^\d+\.\d+\.\d+(-\w+(\.\d+)?)?$' )) { ` + throw ('PS_Version ({0}) must match the regex "^\d+\.\d+\.\d+(-\w+(\.\d+)?)?$"' -f $env:PS_VERSION) ` + } ` + $ProgressPreference = 'SilentlyContinue'; ` + if($env:PS_PACKAGE_URL_BASE64){ ` + Write-host "decoding: $env:PS_PACKAGE_URL_BASE64" ;` + $url = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($env:PS_PACKAGE_URL_BASE64)) ` + } else { ` + Write-host "using url: $env:PS_PACKAGE_URL" ;` + $url = $env:PS_PACKAGE_URL ` + } ` + Write-host "downloading: $url"; ` + [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; ` + Invoke-WebRequest -Uri $url -outfile /powershell.zip -verbose; ` + Expand-Archive powershell.zip -DestinationPath \PowerShell + +# Install PowerShell into WindowsServerCore +FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} + +# Copy PowerShell Core from the installer container +ENV ProgramFiles="C:\Program Files" ` + # set a fixed location for the Module analysis cache + PSModuleAnalysisCachePath="C:\Users\Public\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" ` + # Persist %PSCORE% ENV variable for user convenience + PSCORE="$ProgramFiles\PowerShell\pwsh.exe" ` + POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServerCore-ltsc2022" ` + POWERSHELL_TELEMETRY_OPTOUT="1" + +# Copy PowerShell Core from the installer container +COPY --from=installer-env ["\\PowerShell\\", "$ProgramFiles\\PowerShell\\latest"] + +# Set the path +RUN setx /M PATH "%ProgramFiles%\PowerShell\latest;%PATH%;" + +# intialize powershell module cache +RUN pwsh ` + -NoLogo ` + -NoProfile ` + -Command " ` + $stopTime = (get-date).AddMinutes(15); ` + $ErrorActionPreference = 'Stop' ; ` + $ProgressPreference = 'SilentlyContinue' ; ` + while(!(Test-Path -Path $env:PSModuleAnalysisCachePath)) { ` + Write-Host "'Waiting for $env:PSModuleAnalysisCachePath'" ; ` + if((get-date) -gt $stopTime) { throw 'timout expired'} ` + Start-Sleep -Seconds 6 ; ` + }" + +# re-enable telemetry +ENV POWERSHELL_TELEMETRY_OPTOUT="0" + +CMD ["pwsh.exe"] diff --git a/release/stable/windowsserver/meta.json b/release/stable/windowsserver/meta.json new file mode 100644 index 000000000..da3e35cb8 --- /dev/null +++ b/release/stable/windowsserver/meta.json @@ -0,0 +1,23 @@ +{ + "IsLinux": false, + "PackageFormat": "PowerShell-${PS_VERSION}-win-x64.zip", + "osVersion": "Windows Server, LTSC 2022", + "shortTags": [ + { + "Tag": "ltsc2022" + } + ], + "Base64EncodePackageUrl": true, + "tagTemplates": [ + "#psversion#-windowsserver-#shorttag#", + "#psversion#-windowsserver-#shorttag#-#fulltag#", + "windowsserver-#shorttag#" + ], + "manifestLists": [ + "windowsserver" + ], + "TestProperties": { + "size": 1 + }, + "UseAcr": true +} From e8432a55272c6d0c7b95bd13b2ad435af91cb07c Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Mon, 23 Aug 2021 16:01:56 -0400 Subject: [PATCH 2/4] add windowsserver preview and lts images --- release/lts/windowsserver/docker/Dockerfile | 72 +++++++++++++++++++ release/lts/windowsserver/meta.json | 23 ++++++ .../preview/windowsserver/docker/Dockerfile | 72 +++++++++++++++++++ release/preview/windowsserver/meta.json | 23 ++++++ 4 files changed, 190 insertions(+) create mode 100644 release/lts/windowsserver/docker/Dockerfile create mode 100644 release/lts/windowsserver/meta.json create mode 100644 release/preview/windowsserver/docker/Dockerfile create mode 100644 release/preview/windowsserver/meta.json diff --git a/release/lts/windowsserver/docker/Dockerfile b/release/lts/windowsserver/docker/Dockerfile new file mode 100644 index 000000000..71d620bf3 --- /dev/null +++ b/release/lts/windowsserver/docker/Dockerfile @@ -0,0 +1,72 @@ +# escape=` +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +ARG dockerHost=mcr.microsoft.com +ARG WindowsServerRepo=windows/server +ARG tag=ltsc2022 + +# Use server core as an installer container to extract PowerShell, +# As this is a multi-stage build, this stage will eventually be thrown away +FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} AS installer-env + +ARG PS_VERSION=6.2.0 +ARG PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v${PS_VERSION}/PowerShell-${PS_VERSION}-win-x64.zip + +SHELL ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "-command"] + +ARG PS_PACKAGE_URL_BASE64 + +RUN Write-host "Verifying valid Version..."; ` + if (!($env:PS_VERSION -match '^\d+\.\d+\.\d+(-\w+(\.\d+)?)?$' )) { ` + throw ('PS_Version ({0}) must match the regex "^\d+\.\d+\.\d+(-\w+(\.\d+)?)?$"' -f $env:PS_VERSION) ` + } ` + $ProgressPreference = 'SilentlyContinue'; ` + if($env:PS_PACKAGE_URL_BASE64){ ` + Write-host "decoding: $env:PS_PACKAGE_URL_BASE64" ;` + $url = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($env:PS_PACKAGE_URL_BASE64)) ` + } else { ` + Write-host "using url: $env:PS_PACKAGE_URL" ;` + $url = $env:PS_PACKAGE_URL ` + } ` + Write-host "downloading: $url"; ` + [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; ` + Invoke-WebRequest -Uri $url -outfile /powershell.zip -verbose; ` + Expand-Archive powershell.zip -DestinationPath \PowerShell + +# Install PowerShell into WindowsServerCore +FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} + +# Copy PowerShell Core from the installer container +ENV ProgramFiles="C:\Program Files" ` + # set a fixed location for the Module analysis cache + PSModuleAnalysisCachePath="C:\Users\Public\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" ` + # Persist %PSCORE% ENV variable for user convenience + PSCORE="$ProgramFiles\PowerShell\pwsh.exe" ` + POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServerCore-ltsc2022" ` + POWERSHELL_TELEMETRY_OPTOUT="1" + +# Copy PowerShell Core from the installer container +COPY --from=installer-env ["\\PowerShell\\", "$ProgramFiles\\PowerShell\\latest"] + +# Set the path +RUN setx /M PATH "%ProgramFiles%\PowerShell\latest;%PATH%;" + +# intialize powershell module cache +RUN pwsh ` + -NoLogo ` + -NoProfile ` + -Command " ` + $stopTime = (get-date).AddMinutes(15); ` + $ErrorActionPreference = 'Stop' ; ` + $ProgressPreference = 'SilentlyContinue' ; ` + while(!(Test-Path -Path $env:PSModuleAnalysisCachePath)) { ` + Write-Host "'Waiting for $env:PSModuleAnalysisCachePath'" ; ` + if((get-date) -gt $stopTime) { throw 'timout expired'} ` + Start-Sleep -Seconds 6 ; ` + }" + +# re-enable telemetry +ENV POWERSHELL_TELEMETRY_OPTOUT="0" + +CMD ["pwsh.exe"] diff --git a/release/lts/windowsserver/meta.json b/release/lts/windowsserver/meta.json new file mode 100644 index 000000000..d9f4c7ef3 --- /dev/null +++ b/release/lts/windowsserver/meta.json @@ -0,0 +1,23 @@ +{ + "IsLinux": false, + "PackageFormat": "PowerShell-${PS_VERSION}-win-x64.zip", + "osVersion": "Windows Server, LTSC 2022", + "shortTags": [ + { + "Tag": "ltsc2022" + } + ], + "Base64EncodePackageUrl": true, + "tagTemplates": [ + "lts-#psversion#-windowsserver-#shorttag#", + "lts-windowsserver-#shorttag#", + "lts-windowsserver-#shorttag#-#fulltag#" + ], + "manifestLists": [ + "lts" + ], + "TestProperties": { + "size": 1 + }, + "UseAcr": true +} diff --git a/release/preview/windowsserver/docker/Dockerfile b/release/preview/windowsserver/docker/Dockerfile new file mode 100644 index 000000000..71d620bf3 --- /dev/null +++ b/release/preview/windowsserver/docker/Dockerfile @@ -0,0 +1,72 @@ +# escape=` +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +ARG dockerHost=mcr.microsoft.com +ARG WindowsServerRepo=windows/server +ARG tag=ltsc2022 + +# Use server core as an installer container to extract PowerShell, +# As this is a multi-stage build, this stage will eventually be thrown away +FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} AS installer-env + +ARG PS_VERSION=6.2.0 +ARG PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v${PS_VERSION}/PowerShell-${PS_VERSION}-win-x64.zip + +SHELL ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "-command"] + +ARG PS_PACKAGE_URL_BASE64 + +RUN Write-host "Verifying valid Version..."; ` + if (!($env:PS_VERSION -match '^\d+\.\d+\.\d+(-\w+(\.\d+)?)?$' )) { ` + throw ('PS_Version ({0}) must match the regex "^\d+\.\d+\.\d+(-\w+(\.\d+)?)?$"' -f $env:PS_VERSION) ` + } ` + $ProgressPreference = 'SilentlyContinue'; ` + if($env:PS_PACKAGE_URL_BASE64){ ` + Write-host "decoding: $env:PS_PACKAGE_URL_BASE64" ;` + $url = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($env:PS_PACKAGE_URL_BASE64)) ` + } else { ` + Write-host "using url: $env:PS_PACKAGE_URL" ;` + $url = $env:PS_PACKAGE_URL ` + } ` + Write-host "downloading: $url"; ` + [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; ` + Invoke-WebRequest -Uri $url -outfile /powershell.zip -verbose; ` + Expand-Archive powershell.zip -DestinationPath \PowerShell + +# Install PowerShell into WindowsServerCore +FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} + +# Copy PowerShell Core from the installer container +ENV ProgramFiles="C:\Program Files" ` + # set a fixed location for the Module analysis cache + PSModuleAnalysisCachePath="C:\Users\Public\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" ` + # Persist %PSCORE% ENV variable for user convenience + PSCORE="$ProgramFiles\PowerShell\pwsh.exe" ` + POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServerCore-ltsc2022" ` + POWERSHELL_TELEMETRY_OPTOUT="1" + +# Copy PowerShell Core from the installer container +COPY --from=installer-env ["\\PowerShell\\", "$ProgramFiles\\PowerShell\\latest"] + +# Set the path +RUN setx /M PATH "%ProgramFiles%\PowerShell\latest;%PATH%;" + +# intialize powershell module cache +RUN pwsh ` + -NoLogo ` + -NoProfile ` + -Command " ` + $stopTime = (get-date).AddMinutes(15); ` + $ErrorActionPreference = 'Stop' ; ` + $ProgressPreference = 'SilentlyContinue' ; ` + while(!(Test-Path -Path $env:PSModuleAnalysisCachePath)) { ` + Write-Host "'Waiting for $env:PSModuleAnalysisCachePath'" ; ` + if((get-date) -gt $stopTime) { throw 'timout expired'} ` + Start-Sleep -Seconds 6 ; ` + }" + +# re-enable telemetry +ENV POWERSHELL_TELEMETRY_OPTOUT="0" + +CMD ["pwsh.exe"] diff --git a/release/preview/windowsserver/meta.json b/release/preview/windowsserver/meta.json new file mode 100644 index 000000000..652feb0fb --- /dev/null +++ b/release/preview/windowsserver/meta.json @@ -0,0 +1,23 @@ +{ + "IsLinux": false, + "PackageFormat": "PowerShell-${PS_VERSION}-win-x64.zip", + "osVersion": "Windows Server, LTSC 2022", + "shortTags": [ + { + "Tag": "ltsc2022" + } + ], + "Base64EncodePackageUrl": true, + "tagTemplates": [ + "#psversion#-windowsserver-#shorttag#", + "#psversion#-windowsserver-#shorttag#-#fulltag#", + "preview-windowsserver-#shorttag#" + ], + "manifestLists": [ + "preview-windowsserver" + ], + "TestProperties": { + "size": 1 + }, + "UseAcr": true +} From eaf6cce9d0c8e6d0ab8e5317eea2640dccc24752 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Mon, 23 Aug 2021 16:14:32 -0400 Subject: [PATCH 3/4] fix typo --- release/lts/windowsserver/docker/Dockerfile | 4 ++-- release/preview/windowsserver/docker/Dockerfile | 4 ++-- release/stable/windowsserver/docker/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/release/lts/windowsserver/docker/Dockerfile b/release/lts/windowsserver/docker/Dockerfile index 71d620bf3..88389cfe8 100644 --- a/release/lts/windowsserver/docker/Dockerfile +++ b/release/lts/windowsserver/docker/Dockerfile @@ -34,7 +34,7 @@ RUN Write-host "Verifying valid Version..."; ` Invoke-WebRequest -Uri $url -outfile /powershell.zip -verbose; ` Expand-Archive powershell.zip -DestinationPath \PowerShell -# Install PowerShell into WindowsServerCore +# Install PowerShell into WindowsServer FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} # Copy PowerShell Core from the installer container @@ -43,7 +43,7 @@ ENV ProgramFiles="C:\Program Files" ` PSModuleAnalysisCachePath="C:\Users\Public\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" ` # Persist %PSCORE% ENV variable for user convenience PSCORE="$ProgramFiles\PowerShell\pwsh.exe" ` - POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServerCore-ltsc2022" ` + POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServer-ltsc2022" ` POWERSHELL_TELEMETRY_OPTOUT="1" # Copy PowerShell Core from the installer container diff --git a/release/preview/windowsserver/docker/Dockerfile b/release/preview/windowsserver/docker/Dockerfile index 71d620bf3..88389cfe8 100644 --- a/release/preview/windowsserver/docker/Dockerfile +++ b/release/preview/windowsserver/docker/Dockerfile @@ -34,7 +34,7 @@ RUN Write-host "Verifying valid Version..."; ` Invoke-WebRequest -Uri $url -outfile /powershell.zip -verbose; ` Expand-Archive powershell.zip -DestinationPath \PowerShell -# Install PowerShell into WindowsServerCore +# Install PowerShell into WindowsServer FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} # Copy PowerShell Core from the installer container @@ -43,7 +43,7 @@ ENV ProgramFiles="C:\Program Files" ` PSModuleAnalysisCachePath="C:\Users\Public\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" ` # Persist %PSCORE% ENV variable for user convenience PSCORE="$ProgramFiles\PowerShell\pwsh.exe" ` - POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServerCore-ltsc2022" ` + POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServer-ltsc2022" ` POWERSHELL_TELEMETRY_OPTOUT="1" # Copy PowerShell Core from the installer container diff --git a/release/stable/windowsserver/docker/Dockerfile b/release/stable/windowsserver/docker/Dockerfile index 71d620bf3..88389cfe8 100644 --- a/release/stable/windowsserver/docker/Dockerfile +++ b/release/stable/windowsserver/docker/Dockerfile @@ -34,7 +34,7 @@ RUN Write-host "Verifying valid Version..."; ` Invoke-WebRequest -Uri $url -outfile /powershell.zip -verbose; ` Expand-Archive powershell.zip -DestinationPath \PowerShell -# Install PowerShell into WindowsServerCore +# Install PowerShell into WindowsServer FROM mcr.microsoft.com/${WindowsServerRepo}:${tag} # Copy PowerShell Core from the installer container @@ -43,7 +43,7 @@ ENV ProgramFiles="C:\Program Files" ` PSModuleAnalysisCachePath="C:\Users\Public\AppData\Local\Microsoft\Windows\PowerShell\docker\ModuleAnalysisCache" ` # Persist %PSCORE% ENV variable for user convenience PSCORE="$ProgramFiles\PowerShell\pwsh.exe" ` - POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServerCore-ltsc2022" ` + POWERSHELL_DISTRIBUTION_CHANNEL="PSDocker-WindowsServer-ltsc2022" ` POWERSHELL_TELEMETRY_OPTOUT="1" # Copy PowerShell Core from the installer container From 5d20108540e2ca910d118ef0898017a484f15c35 Mon Sep 17 00:00:00 2001 From: Anam Navied Date: Mon, 27 Sep 2021 20:10:56 -0400 Subject: [PATCH 4/4] rename to include version in folder name --- .../lts/{windowsserver => windowsserver2022}/docker/Dockerfile | 0 release/lts/{windowsserver => windowsserver2022}/meta.json | 0 .../{windowsserver => windowsserver2022}/docker/Dockerfile | 0 release/preview/{windowsserver => windowsserver2022}/meta.json | 0 .../stable/{windowsserver => windowsserver2022}/docker/Dockerfile | 0 release/stable/{windowsserver => windowsserver2022}/meta.json | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename release/lts/{windowsserver => windowsserver2022}/docker/Dockerfile (100%) rename release/lts/{windowsserver => windowsserver2022}/meta.json (100%) rename release/preview/{windowsserver => windowsserver2022}/docker/Dockerfile (100%) rename release/preview/{windowsserver => windowsserver2022}/meta.json (100%) rename release/stable/{windowsserver => windowsserver2022}/docker/Dockerfile (100%) rename release/stable/{windowsserver => windowsserver2022}/meta.json (100%) diff --git a/release/lts/windowsserver/docker/Dockerfile b/release/lts/windowsserver2022/docker/Dockerfile similarity index 100% rename from release/lts/windowsserver/docker/Dockerfile rename to release/lts/windowsserver2022/docker/Dockerfile diff --git a/release/lts/windowsserver/meta.json b/release/lts/windowsserver2022/meta.json similarity index 100% rename from release/lts/windowsserver/meta.json rename to release/lts/windowsserver2022/meta.json diff --git a/release/preview/windowsserver/docker/Dockerfile b/release/preview/windowsserver2022/docker/Dockerfile similarity index 100% rename from release/preview/windowsserver/docker/Dockerfile rename to release/preview/windowsserver2022/docker/Dockerfile diff --git a/release/preview/windowsserver/meta.json b/release/preview/windowsserver2022/meta.json similarity index 100% rename from release/preview/windowsserver/meta.json rename to release/preview/windowsserver2022/meta.json diff --git a/release/stable/windowsserver/docker/Dockerfile b/release/stable/windowsserver2022/docker/Dockerfile similarity index 100% rename from release/stable/windowsserver/docker/Dockerfile rename to release/stable/windowsserver2022/docker/Dockerfile diff --git a/release/stable/windowsserver/meta.json b/release/stable/windowsserver2022/meta.json similarity index 100% rename from release/stable/windowsserver/meta.json rename to release/stable/windowsserver2022/meta.json