From 5a400c9d924231bdda90d49aee92ca09694e2a57 Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 09:40:49 -0700 Subject: [PATCH 1/9] Update Dockerfile --- release/7-4/mariner2/docker/Dockerfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/release/7-4/mariner2/docker/Dockerfile b/release/7-4/mariner2/docker/Dockerfile index 61db08807..90a7e59d7 100644 --- a/release/7-4/mariner2/docker/Dockerfile +++ b/release/7-4/mariner2/docker/Dockerfile @@ -33,7 +33,6 @@ ENV PS_INSTALL_FOLDER=/opt/microsoft/powershell/$PS_INSTALL_VERSION \ PSModuleAnalysisCachePath=/var/cache/microsoft/powershell/PSModuleAnalysisCache/ModuleAnalysisCache \ POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-Mariner-2.0 -# Install dependencies and clean up RUN --mount=type=cache,target=/var/cache/tdnf \ tdnf install -y mariner-repos-microsoft-preview \ && tdnf makecache \ @@ -46,9 +45,18 @@ RUN --mount=type=cache,target=/var/cache/tdnf \ # required for SSH openssh-clients \ ca-certificates \ - dotnet-runtime-7.0 \ - # upgrade packages - && tdnf upgrade -y \ + wget + +RUN --mount=type=cache,target=/var/cache/tdnf \ + --mount=type=cache,target=/installTmp \ + cd /installTmp \ + && wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh \ + && chmod +x ./dotnet-install.sh \ + && ./dotnet-install.ps1 -Channel 8.0 -Quality preview -InstallDir C:\cli + +# Install dependencies and clean up +RUN --mount=type=cache,target=/var/cache/tdnf \ + tdnf upgrade -y \ # clean cached data && tdnf clean all From 190b3276af5f413a615c48e1314dd429558ebc0c Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 09:55:13 -0700 Subject: [PATCH 2/9] Update release/7-4/mariner2/docker/Dockerfile --- release/7-4/mariner2/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/7-4/mariner2/docker/Dockerfile b/release/7-4/mariner2/docker/Dockerfile index 90a7e59d7..7f198b92a 100644 --- a/release/7-4/mariner2/docker/Dockerfile +++ b/release/7-4/mariner2/docker/Dockerfile @@ -52,7 +52,7 @@ RUN --mount=type=cache,target=/var/cache/tdnf \ cd /installTmp \ && wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh \ && chmod +x ./dotnet-install.sh \ - && ./dotnet-install.ps1 -Channel 8.0 -Quality preview -InstallDir C:\cli + && ./dotnet-install.sh -Channel 8.0 -Quality preview -InstallDir C:\cli # Install dependencies and clean up RUN --mount=type=cache,target=/var/cache/tdnf \ From 2037e402d25a6754cf0360a4232a6bd6be7db9dc Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 09:57:00 -0700 Subject: [PATCH 3/9] Update phase.yml --- .vsts-ci/phase.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.vsts-ci/phase.yml b/.vsts-ci/phase.yml index b90817421..29a311b7c 100644 --- a/.vsts-ci/phase.yml +++ b/.vsts-ci/phase.yml @@ -19,6 +19,7 @@ parameters: default: 'Build' - name: maxParallel default: 5 + - group: Cache-ACR jobs: - job: ${{ parameters.jobName }} @@ -72,6 +73,11 @@ jobs: Install-module Pester -Scope CurrentUser -Force -MaximumVersion 4.99 displayName: Install Pester condition: and( succeededOrFailed(), ne(variables['Channel'],'')) + + - pwsh: | + docker login psdockercache.azurecr.io -u $(dockerCacheUserName) -p $(dockerCacheKey) + displayName: 'docker cache login' + condition: and( succeededOrFailed(), ne(variables['Channel'],'')) - pwsh: | $extraParams = @{} From f4571935cddf9f7ead9d3a9d0f460c81109b59ac Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 09:58:41 -0700 Subject: [PATCH 4/9] Update phase.yml --- .vsts-ci/phase.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.vsts-ci/phase.yml b/.vsts-ci/phase.yml index 29a311b7c..e153e10be 100644 --- a/.vsts-ci/phase.yml +++ b/.vsts-ci/phase.yml @@ -19,10 +19,12 @@ parameters: default: 'Build' - name: maxParallel default: 5 - - group: Cache-ACR jobs: - job: ${{ parameters.jobName }} + variables: + - group: Cache-ACR + dependsOn: ${{ parameters.dependsOn }} strategy: matrix: $[ ${{ parameters.matrix }} ] From 8cd1aa9df089dc655cabfb07650eedd7aece5bea Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 10:00:44 -0700 Subject: [PATCH 5/9] Update phase.yml --- .vsts-ci/phase.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.vsts-ci/phase.yml b/.vsts-ci/phase.yml index e153e10be..bbe2a5ac2 100644 --- a/.vsts-ci/phase.yml +++ b/.vsts-ci/phase.yml @@ -21,19 +21,21 @@ parameters: default: 5 jobs: -- job: ${{ parameters.jobName }} - variables: - - group: Cache-ACR - +- job: ${{ parameters.jobName }} dependsOn: ${{ parameters.dependsOn }} + strategy: matrix: $[ ${{ parameters.matrix }} ] maxParallel: ${{ parameters.maxParallel }} variables: - ContinueOnError: ${{ parameters.continueonerror }} - scanType: Register - pool: ${{ parameters.pool }} + - group: Cache-ACR + - name: ContinueOnError + value: ${{ parameters.continueonerror }} + - name: scanType + value: Register + - name: pool + value: ${{ parameters.pool }} pool: ${{ if eq(parameters['pool'],'')}}: From 45f2601236b9c29b9d926fca3ff2e5e202a32560 Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 10:11:42 -0700 Subject: [PATCH 6/9] Apply suggestions from code review --- .vsts-ci/phase.yml | 2 +- release/7-4/mariner2/docker/Dockerfile | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.vsts-ci/phase.yml b/.vsts-ci/phase.yml index bbe2a5ac2..a8445695e 100644 --- a/.vsts-ci/phase.yml +++ b/.vsts-ci/phase.yml @@ -21,7 +21,7 @@ parameters: default: 5 jobs: -- job: ${{ parameters.jobName }} +- job: ${{ parameters.jobName }} dependsOn: ${{ parameters.dependsOn }} strategy: diff --git a/release/7-4/mariner2/docker/Dockerfile b/release/7-4/mariner2/docker/Dockerfile index 7f198b92a..ea8dd1f43 100644 --- a/release/7-4/mariner2/docker/Dockerfile +++ b/release/7-4/mariner2/docker/Dockerfile @@ -45,7 +45,8 @@ RUN --mount=type=cache,target=/var/cache/tdnf \ # required for SSH openssh-clients \ ca-certificates \ - wget + wget \ + awk RUN --mount=type=cache,target=/var/cache/tdnf \ --mount=type=cache,target=/installTmp \ From 7fb69f1fdfa839be2ef520d58a5fa90a09cbd452 Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 15 Mar 2023 10:14:34 -0700 Subject: [PATCH 7/9] Update release/7-4/mariner2/docker/Dockerfile --- release/7-4/mariner2/docker/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/7-4/mariner2/docker/Dockerfile b/release/7-4/mariner2/docker/Dockerfile index ea8dd1f43..1c3516310 100644 --- a/release/7-4/mariner2/docker/Dockerfile +++ b/release/7-4/mariner2/docker/Dockerfile @@ -46,7 +46,8 @@ RUN --mount=type=cache,target=/var/cache/tdnf \ openssh-clients \ ca-certificates \ wget \ - awk + awk \ + tar RUN --mount=type=cache,target=/var/cache/tdnf \ --mount=type=cache,target=/installTmp \ From 7491eb088687021d111602ad68c547e7c9318001 Mon Sep 17 00:00:00 2001 From: travis plunk Date: Wed, 15 Mar 2023 11:15:19 -0700 Subject: [PATCH 8/9] Install dotnet runtime using script --- release/7-4/mariner2/docker/Dockerfile | 47 ++++++++++++++++---------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/release/7-4/mariner2/docker/Dockerfile b/release/7-4/mariner2/docker/Dockerfile index 1c3516310..e50f17aed 100644 --- a/release/7-4/mariner2/docker/Dockerfile +++ b/release/7-4/mariner2/docker/Dockerfile @@ -1,7 +1,14 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. -FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS installer-env +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS setup-tdnf-repa + +RUN --mount=type=cache,target=/var/cache/tdnf \ + tdnf install -y mariner-repos-microsoft-preview \ + && tdnf makecache + +# Move to +FROM setup-tdnf-repa AS installer-env # Define Args for the needed to add the package ARG PS_VERSION=7.3.0-preview.8 @@ -13,10 +20,24 @@ ARG PS_INSTALL_VERSION=7-preview # Download the Linux tar.gz and save it ADD ${PS_PACKAGE_URL} /tmp/powershell.rpm +RUN --mount=type=cache,target=/var/cache/tdnf \ + tdnf install -y \ + wget \ + awk \ + tar \ + ca-certificates + +RUN --mount=type=cache,target=/var/cache/tdnf \ + --mount=type=cache,target=/installTmp \ + cd /installTmp \ + && wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh \ + && chmod +x ./dotnet-install.sh \ + && ./dotnet-install.sh -Channel 8.0 -Quality preview -Runtime dotnet -InstallDir /usr/share/dotnet + RUN echo ${PS_PACKAGE_URL} # Start a new stage so we lose all the tar.gz layers from the final image -FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS powershell +FROM setup-tdnf-repa AS powershell ARG PS_VERSION=7.3.0-preview.8 ARG PS_INSTALL_VERSION=7-preview @@ -34,37 +55,29 @@ ENV PS_INSTALL_FOLDER=/opt/microsoft/powershell/$PS_INSTALL_VERSION \ POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-Mariner-2.0 RUN --mount=type=cache,target=/var/cache/tdnf \ - tdnf install -y mariner-repos-microsoft-preview \ - && tdnf makecache \ # install dependencies - && tdnf install -y \ + tdnf install -y \ # required for localization icu \ # required for help in PowerShell less \ # required for SSH openssh-clients \ - ca-certificates \ - wget \ - awk \ - tar + ca-certificates -RUN --mount=type=cache,target=/var/cache/tdnf \ - --mount=type=cache,target=/installTmp \ - cd /installTmp \ - && wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh \ - && chmod +x ./dotnet-install.sh \ - && ./dotnet-install.sh -Channel 8.0 -Quality preview -InstallDir C:\cli - # Install dependencies and clean up RUN --mount=type=cache,target=/var/cache/tdnf \ tdnf upgrade -y \ # clean cached data && tdnf clean all +COPY --from=installer-env /usr/share/dotnet /usr/share/dotnet + +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet + RUN --mount=type=cache,target=/var/cache/tdnf,rw \ --mount=from=installer-env,target=/mnt/rpm,source=/tmp \ - rpm -i /mnt/rpm/powershell.rpm + rpm -i --nodeps /mnt/rpm/powershell.rpm # Create the pwsh symbolic link that points to powershell RUN if [ -f "/opt/microsoft/powershell/7-preview/pwsh" ]; then ln -sf /opt/microsoft/powershell/7-preview/pwsh /usr/bin/pwsh; fi From e843757689bcd9f9128e208b37cf64d4682cee11 Mon Sep 17 00:00:00 2001 From: travis plunk Date: Wed, 15 Mar 2023 11:40:56 -0700 Subject: [PATCH 9/9] fix unit tests --- unittests/generateMatrixJson.tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittests/generateMatrixJson.tests.ps1 b/unittests/generateMatrixJson.tests.ps1 index 8b27ed81c..1e11fa9fd 100644 --- a/unittests/generateMatrixJson.tests.ps1 +++ b/unittests/generateMatrixJson.tests.ps1 @@ -43,7 +43,7 @@ Describe "build.ps1 -GenerateMatrixJson" { $json = $vstsVariable.Value { $script:matrix += $json | ConvertFrom-Json -AsHashtable } | should -not -Throw } - $script:matrix.count | Should -Be 3 + $script:matrix.count | Should -Be 4 } It "Should have multiple images" { foreach($platforMatrix in $Script:matrix) {