diff --git a/.github/workflows/pr-checker.yml b/.github/workflows/pr-checker.yml index 91e81dc16..036c7edd3 100644 --- a/.github/workflows/pr-checker.yml +++ b/.github/workflows/pr-checker.yml @@ -91,7 +91,7 @@ jobs: run: cd ./build/windows/ && & .\Makefile.ps1 - name: Create-docker-image run: | - cd ./kubernetes/windows/ && docker build . --file Dockerfile -t $env:IMAGETAG --build-arg IMAGE_TAG=$env:IMAGETAG_TELEMETRY + cd ./kubernetes/windows/ && docker build . --file Dockerfile -t $env:IMAGETAG --build-arg WINDOWS_VERSION=ltsc2019 --build-arg IMAGE_TAG=$env:IMAGETAG_TELEMETRY - name: List-docker-images run: docker images --digests --all - + diff --git a/.pipelines/azure_pipeline_dev.yaml b/.pipelines/azure_pipeline_dev.yaml index 4834bcac5..c4723e8e1 100644 --- a/.pipelines/azure_pipeline_dev.yaml +++ b/.pipelines/azure_pipeline_dev.yaml @@ -91,7 +91,7 @@ jobs: pool: name: Azure-Pipelines-CI-Test-EO variables: - linuxImagetag: $[ dependencies.common.outputs['setup.linuxImagetag'] ] + linuxImagetag: $[ dependencies.common.outputs['setup.linuxImagetag'] ] steps: - task: AzureCLI@2 @@ -141,13 +141,14 @@ jobs: pathToPublish: '$(Build.ArtifactStagingDirectory)' artifactName: drop -- job: build_windows - dependsOn: common +- job: build_windows_2019 + dependsOn: + - common pool: name: Azure-Pipelines-Windows-CI-Test-EO variables: - windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] - + windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] + windows2019BaseImageVersion: ltsc2019 steps: - task: PowerShell@2 inputs: @@ -163,7 +164,7 @@ jobs: displayName: 'build base' - task: AzureCLI@2 - displayName: "Docker windows build" + displayName: "Docker windows build for ltsc2019" inputs: azureSubscription: ${{ variables.armServiceConnectionName }} scriptType: ps @@ -177,28 +178,99 @@ jobs: az account set -s ${{ variables.subscription }} az acr login -n ${{ variables.containerRegistry }} - @{"image.name"="${{ variables.repoImageName }}:$(windowsImageTag)"} | ConvertTo-Json -Compress | Out-File -Encoding ascii $(Build.ArtifactStagingDirectory)/windows/metadata.json + docker build --isolation=hyperv --tag ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2019BaseImageVersion) --build-arg WINDOWS_VERSION=$(windows2019BaseImageVersion) --build-arg IMAGE_TAG=$(windowsImageTag) . + if ("$(Build.Reason)" -ne "PullRequest") { + docker push ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2019BaseImageVersion) + } - docker build --tag ${{ variables.repoImageName }}:$(windowsImageTag) --build-arg IMAGE_TAG=$(windowsImageTag) . +- job: build_windows_2022 + dependsOn: + - common + pool: + name: Azure-Pipelines-Windows-CI-Test-EO + variables: + windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] + windows2022BaseImageVersion: ltsc2022 + steps: + - task: PowerShell@2 + inputs: + targetType: 'filePath' + filePath: $(System.DefaultWorkingDirectory)/scripts/build/windows/install-build-pre-requisites.ps1 + displayName: 'install prereqs' + + - script: | + setlocal enabledelayedexpansion + powershell.exe -ExecutionPolicy Unrestricted -NoProfile -WindowStyle Hidden -File "build\windows\Makefile.ps1" + endlocal + exit /B %ERRORLEVEL% + displayName: 'build base' + + - task: AzureCLI@2 + displayName: "Docker windows build for ltsc2022" + inputs: + azureSubscription: ${{ variables.armServiceConnectionName }} + scriptType: ps + scriptLocation: inlineScript + inlineScript: | + mkdir -p $(Build.ArtifactStagingDirectory)/windows + cd kubernetes/windows + az --version + az account show + az account set -s ${{ variables.subscription }} + az acr login -n ${{ variables.containerRegistry }} + + docker build --isolation=hyperv --tag ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2022BaseImageVersion) --build-arg WINDOWS_VERSION=$(windows2022BaseImageVersion) --build-arg IMAGE_TAG=$(windowsImageTag) . if ("$(Build.Reason)" -ne "PullRequest") { - docker push ${{ variables.repoImageName }}:$(windowsImageTag) + docker push ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2022BaseImageVersion) } +- job: build_windows_multi_arc + dependsOn: + - common + - build_windows_2019 + - build_windows_2022 + pool: + name: Azure-Pipelines-Windows-CI-Test-EO + variables: + windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] + windows2019BaseImageVersion: ltsc2019 + windows2022BaseImageVersion: ltsc2022 + steps: + - task: AzureCLI@2 + displayName: "Docker windows build for multi-arc image" + inputs: + azureSubscription: ${{ variables.armServiceConnectionName }} + scriptType: ps + scriptLocation: inlineScript + inlineScript: | + mkdir -p $(Build.ArtifactStagingDirectory)/windows + cd kubernetes/windows + + az --version + az account show + az account set -s ${{ variables.subscription }} + az acr login -n ${{ variables.containerRegistry }} + + @{"image.name"="${{ variables.repoImageName }}:$(windowsImageTag)"} | ConvertTo-Json -Compress | Out-File -Encoding ascii $(Build.ArtifactStagingDirectory)/windows/metadata.json + + if ("$(Build.Reason)" -ne "PullRequest") { + docker manifest create ${{ variables.repoImageName }}:$(windowsImageTag) ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2019BaseImageVersion) ${{ variables.repoImageName }}:$(windowsImageTag)-$(windows2022BaseImageVersion) + docker manifest push ${{ variables.repoImageName }}:$(windowsImageTag) + } - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'Generation Task' condition: eq(variables.IS_PR, true) inputs: BuildDropPath: '$(Build.ArtifactStagingDirectory)/windows' - DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019' + DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019, mcr.microsoft.com/windows/servercore:ltsc2022' - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'Generation Task' condition: eq(variables.IS_PR, false) inputs: BuildDropPath: '$(Build.ArtifactStagingDirectory)/windows' - DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019, ${{ variables.repoImageName }}:$(windowsImageTag)' - + DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019, mcr.microsoft.com/windows/servercore:ltsc2022, ${{ variables.repoImageName }}:$(windowsImageTag)' - task: PublishBuildArtifacts@1 inputs: pathToPublish: '$(Build.ArtifactStagingDirectory)' diff --git a/.pipelines/azure_pipeline_prod.yaml b/.pipelines/azure_pipeline_prod.yaml index 28071786d..8239a7058 100644 --- a/.pipelines/azure_pipeline_prod.yaml +++ b/.pipelines/azure_pipeline_prod.yaml @@ -95,7 +95,7 @@ jobs: pool: name: Azure-Pipelines-CI-Prod-EO variables: - linuxImagetag: $[ dependencies.common.outputs['setup.linuxImagetag'] ] + linuxImagetag: $[ dependencies.common.outputs['setup.linuxImagetag'] ] steps: - task: AzureCLI@2 @@ -146,13 +146,14 @@ jobs: pathToPublish: '$(Build.ArtifactStagingDirectory)' artifactName: drop -- job: build_windows - dependsOn: common +- job: build_windows_2019 + dependsOn: + - common pool: name: Azure-Pipelines-Windows-CI-Prod-EO variables: - windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] - + windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] + windows2019BaseImageVersion: ltsc2019 steps: - task: PowerShell@2 inputs: @@ -168,7 +169,7 @@ jobs: displayName: 'build base' - task: AzureCLI@2 - displayName: "Docker windows build" + displayName: "Docker windows build for ltsc2019" inputs: azureSubscription: ${{ variables.armServiceConnectionName }} scriptType: ps @@ -182,28 +183,99 @@ jobs: az account set -s ${{ variables.subscription }} az acr login -n ${{ variables.containerRegistry }} - @{"image.name"="${{ variables.repoImageNameWindows }}:$(windowsImageTag)"} | ConvertTo-Json -Compress | Out-File -Encoding ascii $(Build.ArtifactStagingDirectory)/windows/metadata.json + docker build --isolation=hyperv --tag ${{ variables.repoImageNameWindows }}:$(windowsImageTag)-$(windows2019BaseImageVersion) --build-arg WINDOWS_VERSION=$(windows2019BaseImageVersion) . + if ("$(Build.Reason)" -ne "PullRequest") { + docker push ${{ variables.repoImageNameWindows }}:$(windowsImageTag)-$(windows2019BaseImageVersion) + } - docker build --tag ${{ variables.repoImageNameWindows }}:$(windowsImageTag) . +- job: build_windows_2022 + dependsOn: + - common + pool: + name: Azure-Pipelines-Windows-CI-Prod-EO + variables: + windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] + windows2022BaseImageVersion: ltsc2022 + steps: + - task: PowerShell@2 + inputs: + targetType: 'filePath' + filePath: $(System.DefaultWorkingDirectory)/scripts/build/windows/install-build-pre-requisites.ps1 + displayName: 'install prereqs' + + - script: | + setlocal enabledelayedexpansion + powershell.exe -ExecutionPolicy Unrestricted -NoProfile -WindowStyle Hidden -File "build\windows\Makefile.ps1" + endlocal + exit /B %ERRORLEVEL% + displayName: 'build base' + + - task: AzureCLI@2 + displayName: "Docker windows build for ltsc2022" + inputs: + azureSubscription: ${{ variables.armServiceConnectionName }} + scriptType: ps + scriptLocation: inlineScript + inlineScript: | + mkdir -p $(Build.ArtifactStagingDirectory)/windows + cd kubernetes/windows + az --version + az account show + az account set -s ${{ variables.subscription }} + az acr login -n ${{ variables.containerRegistry }} + + docker build --isolation=hyperv --tag ${{ variables.repoImageNameWindows }}:$(windowsImageTag)-$(windows2022BaseImageVersion) --build-arg WINDOWS_VERSION=$(windows2022BaseImageVersion) . if ("$(Build.Reason)" -ne "PullRequest") { - docker push ${{ variables.repoImageNameWindows }}:$(windowsImageTag) + docker push ${{ variables.repoImageNameWindows }}:$(windowsImageTag)-$(windows2022BaseImageVersion) } +- job: build_windows_multi_arc + dependsOn: + - common + - build_windows_2019 + - build_windows_2022 + pool: + name: Azure-Pipelines-Windows-CI-Prod-EO + variables: + windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ] + windows2019BaseImageVersion: ltsc2019 + windows2022BaseImageVersion: ltsc2022 + steps: + - task: AzureCLI@2 + displayName: "Docker windows build for multi-arc image" + inputs: + azureSubscription: ${{ variables.armServiceConnectionName }} + scriptType: ps + scriptLocation: inlineScript + inlineScript: | + mkdir -p $(Build.ArtifactStagingDirectory)/windows + cd kubernetes/windows + + az --version + az account show + az account set -s ${{ variables.subscription }} + az acr login -n ${{ variables.containerRegistry }} + + @{"image.name"="${{ variables.repoImageNameWindows }}:$(windowsImageTag)"} | ConvertTo-Json -Compress | Out-File -Encoding ascii $(Build.ArtifactStagingDirectory)/windows/metadata.json + + if ("$(Build.Reason)" -ne "PullRequest") { + docker manifest create ${{ variables.repoImageNameWindows }}:$(windowsImageTag) ${{ variables.repoImageNameWindows }}:$(windowsImageTag)-$(windows2019BaseImageVersion) ${{ variables.repoImageNameWindows }}:$(windowsImageTag)-$(windows2022BaseImageVersion) + docker manifest push ${{ variables.repoImageNameWindows }}:$(windowsImageTag) + } - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'Generation Task' condition: eq(variables.IS_PR, true) inputs: BuildDropPath: '$(Build.ArtifactStagingDirectory)/windows' - DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019' + DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019, mcr.microsoft.com/windows/servercore:ltsc2022' - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 displayName: 'Generation Task' condition: eq(variables.IS_PR, false) inputs: BuildDropPath: '$(Build.ArtifactStagingDirectory)/windows' - DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019, ${{ variables.repoImageNameWindows }}:$(windowsImageTag)' - + DockerImagesToScan: 'mcr.microsoft.com/windows/servercore:ltsc2019, mcr.microsoft.com/windows/servercore:ltsc2022, ${{ variables.repoImageName }}:$(windowsImageTag)' - task: PublishBuildArtifacts@1 inputs: pathToPublish: '$(Build.ArtifactStagingDirectory)' diff --git a/README.md b/README.md index e7206c492..6e51d256b 100644 --- a/README.md +++ b/README.md @@ -246,12 +246,28 @@ powershell -ExecutionPolicy bypass # switch to powershell if you are not on pow And then run the script to build the image consisting of code and conf changes. ``` .\build-and-publish-dev-docker-image.ps1 -image /: # trigger build code and image and publish docker hub or acr +By default, multi-arc docker image will be built, but if you want generate test image either with ltsc2019 or ltsc2022 base image, then you can follow the instructions below + +For building image with base image version ltsc2019 +.\build-and-publish-dev-docker-image.ps1 -image /: -windowsBaseImageVersion ltsc2019 + +For building image with base image version ltsc2022 +.\build-and-publish-dev-docker-image.ps1 -image /: -windowsBaseImageVersion ltsc2022 + + ``` For the subsequent builds, you can just run - ``` .\build-and-publish-dev-docker-image.ps1 -image /: # trigger build code and image and publish docker hub or acr +By default, multi-arc docker image will be built, but if you want generate test image either with ltsc2019 or ltsc2022 base image, then you can follow the instructions below + +For building image with base image version ltsc2019 +.\build-and-publish-dev-docker-image.ps1 -image /: -windowsBaseImageVersion ltsc2019 + +For building image with base image version ltsc2022 +.\build-and-publish-dev-docker-image.ps1 -image /: -windowsBaseImageVersion ltsc2022 ``` ###### Note - If you have changes in setup.ps1 and want to test those changes, uncomment the section consisting of setup.ps1 in the Dockerfile-dev-image file. diff --git a/kubernetes/windows/Dockerfile b/kubernetes/windows/Dockerfile index 7c514a777..672dfb1f7 100644 --- a/kubernetes/windows/Dockerfile +++ b/kubernetes/windows/Dockerfile @@ -1,4 +1,6 @@ -FROM mcr.microsoft.com/windows/servercore:ltsc2019 +# Supported values of windows version are ltsc2019 or ltsc2022 which are being passed by the build script or build pipeline +ARG WINDOWS_VERSION= +FROM mcr.microsoft.com/windows/servercore:${WINDOWS_VERSION} MAINTAINER OMSContainers@microsoft.com LABEL vendor=Microsoft\ Corp \ com.microsoft.product="Azure Monitor for containers" diff --git a/kubernetes/windows/Dockerfile-dev-base-image b/kubernetes/windows/Dockerfile-dev-base-image index 6a758060a..3aca6ae20 100644 --- a/kubernetes/windows/Dockerfile-dev-base-image +++ b/kubernetes/windows/Dockerfile-dev-base-image @@ -1,4 +1,5 @@ -FROM mcr.microsoft.com/windows/servercore:ltsc2019 +ARG WINDOWS_VERSION= +FROM mcr.microsoft.com/windows/servercore:${WINDOWS_VERSION} MAINTAINER OMSContainers@microsoft.com LABEL vendor=Microsoft\ Corp \ com.microsoft.product="Azure Monitor for containers" diff --git a/kubernetes/windows/dockerbuild/build-and-publish-dev-docker-image.ps1 b/kubernetes/windows/dockerbuild/build-and-publish-dev-docker-image.ps1 index b87132218..f62851eac 100644 --- a/kubernetes/windows/dockerbuild/build-and-publish-dev-docker-image.ps1 +++ b/kubernetes/windows/dockerbuild/build-and-publish-dev-docker-image.ps1 @@ -7,7 +7,8 @@ #> param( [Parameter(mandatory = $true)] - [string]$image + [string]$image, + [string]$windowsBaseImageVersion="" # Supported values are ltsc2019 or ltsc2022. Default is multi-arc image unless this value specified ) $currentdir = $PSScriptRoot @@ -55,10 +56,50 @@ Write-Host "changing directory to DockerFile dir: $dockerFileDir" Set-Location -Path $dockerFileDir $updateImage = ${imagerepo} + ":" + ${imageTag} -Write-Host "STAT:Triggering docker image build: $image" -docker build -t $updateImage --build-arg IMAGE_TAG=$imageTag -f Dockerfile-dev-image . -Write-Host "END:Triggering docker image build: $updateImage" +if ([string]::IsNullOrEmpty($windowsBaseImageVersion)) { + Write-Host "START:Triggering multi-arc docker image build for ltsc2019 & ltsc2022: $image" -Write-Host "STAT:pushing docker image : $updateImage" -docker push $updateImage -Write-Host "EnD:pushing docker image : $updateImage" + $WINDOWS_VERSION="ltsc2019" + $updateImageLTSC2019 = ${imagerepo} + ":" + ${imageTag} + "-" + ${WINDOWS_VERSION} + Write-Host "START:Triggering docker image build for ltsc2019: $updateImageLTSC2019" + docker build --isolation=hyperv -t $updateImageLTSC2019 --build-arg WINDOWS_VERSION=$WINDOWS_VERSION --build-arg IMAGE_TAG=$imageTag -f Dockerfile-dev-image . + Write-Host "END:Triggering docker image build for ltsc2019: $updateImageLTSC2019" + + $WINDOWS_VERSION="ltsc2022" + $updateImageLTSC2022 = ${imagerepo} + ":" + ${imageTag} + "-" + ${WINDOWS_VERSION} + Write-Host "START:Triggering docker image build for ltsc2022: $updateImageLTSC2022" + docker build --isolation=hyperv -t $updateImageLTSC2022 --build-arg WINDOWS_VERSION=$WINDOWS_VERSION --build-arg IMAGE_TAG=$imageTag -f Dockerfile-dev-image . + Write-Host "END:Triggering docker image build for ltsc2022: $updateImageLTSC2022" + + Write-Host "START:pushing docker image with base image ltsc2019 : $updateImageLTSC2019" + docker push $updateImageLTSC2019 + Write-Host "END:pushing docker image : $updateImageLTSC2019" + + Write-Host "START:pushing docker image with base image ltsc2022 : $updateImageLTSC2022" + docker push $updateImageLTSC2022 + Write-Host "END:pushing docker image : $updateImageLTSC2022" + + Write-Host "START:Triggering manigest for multi-arc docker image: $updateImage" + docker manifest create $updateImage $updateImageLTSC2019 $updateImageLTSC2022 + docker manifest push $updateImage + Write-Host "END:Triggering manifest for multi-arc docker image: $updateImage" + + Write-Host "END:Triggering multi-arc docker image build for ltsc2019 & ltsc2022: $image" + +} else { + + if (($windowsBaseImageVersion -eq "ltsc2019") -or ($windowsBaseImageVersion -eq "ltsc2022")) { + Write-Host "Provided baseimage version valid and supported: ${windowsBaseImageVersion}" + } else { + Write-Host "Provided baseimage version neither valid nor supported: ${windowsBaseImageVersion}" -ForegroundColor Red + exit 1 + } + + Write-Host "STAT:Triggering docker image build: $image with base image version: $windowsBaseImageVersion" + docker build -t $updateImage --build-arg WINDOWS_VERSION=$windowsBaseImageVersion --build-arg IMAGE_TAG=$imageTag -f Dockerfile-dev-image . + Write-Host "END:Triggering docker image build: $updateImage" + + Write-Host "STAT:pushing docker image : $updateImage" + docker push $updateImage + Write-Host "EnD:pushing docker image : $updateImage" +} diff --git a/kubernetes/windows/dockerbuild/build-and-publish-docker-image.ps1 b/kubernetes/windows/dockerbuild/build-and-publish-docker-image.ps1 index c1f655882..a5c78cc72 100644 --- a/kubernetes/windows/dockerbuild/build-and-publish-docker-image.ps1 +++ b/kubernetes/windows/dockerbuild/build-and-publish-docker-image.ps1 @@ -7,7 +7,8 @@ #> param( [Parameter(mandatory = $true)] - [string]$image + [string]$image, + [string]$windowsBaseImageVersion="" # Supported values are ltsc2019 or ltsc2022. Default is multi-arc image unless this value specified ) $currentdir = $PSScriptRoot @@ -55,10 +56,49 @@ Write-Host "changing directory to DockerFile dir: $dockerFileDir" Set-Location -Path $dockerFileDir $updateImage = ${imagerepo} + ":" + ${imageTag} -Write-Host "STAT:Triggering docker image build: $image" -docker build -t $updateImage --build-arg IMAGE_TAG=$imageTag . -Write-Host "END:Triggering docker image build: $updateImage" +if ([string]::IsNullOrEmpty($windowsBaseImageVersion)) { + Write-Host "START:Triggering multi-arc docker image build for ltsc2019 & ltsc2022: $image" + + $WINDOWS_VERSION="ltsc2019" + $updateImageLTSC2019 = ${imagerepo} + ":" + ${imageTag} + "-" + ${WINDOWS_VERSION} + Write-Host "START:Triggering docker image build for ltsc2019: $updateImageLTSC2019" + docker build --isolation=hyperv -t $updateImageLTSC2019 --build-arg WINDOWS_VERSION=$WINDOWS_VERSION --build-arg IMAGE_TAG=$imageTag . + Write-Host "END:Triggering docker image build for ltsc2019: $updateImageLTSC2019" + + $WINDOWS_VERSION="ltsc2022" + $updateImageLTSC2022 = ${imagerepo} + ":" + ${imageTag} + "-" + ${WINDOWS_VERSION} + Write-Host "START:Triggering docker image build for ltsc2022: $updateImageLTSC2022" + docker build --isolation=hyperv -t $updateImageLTSC2022 --build-arg WINDOWS_VERSION=$WINDOWS_VERSION --build-arg IMAGE_TAG=$imageTag . + Write-Host "END:Triggering docker image build for ltsc2022: $updateImageLTSC2022" + + Write-Host "START:pushing docker image with base image ltsc2019 : $updateImageLTSC2019" + docker push $updateImageLTSC2019 + Write-Host "END:pushing docker image : $updateImageLTSC2019" + + Write-Host "START:pushing docker image with base image ltsc2022 : $updateImageLTSC2022" + docker push $updateImageLTSC2022 + Write-Host "END:pushing docker image : $updateImageLTSC2022" + + Write-Host "START:Triggering manigest for multi-arc docker image: $updateImage" + docker manifest create $updateImage $updateImageLTSC2019 $updateImageLTSC2022 + docker manifest push $updateImage + Write-Host "END:Triggering manifest for multi-arc docker image: $updateImage" + + Write-Host "END:Triggering multi-arc docker image build for ltsc2019 & ltsc2022: $image" +} else { + if (($windowsBaseImageVersion -eq "ltsc2019") -or ($windowsBaseImageVersion -eq "ltsc2022")) { + Write-Host "Provided baseimage version valid and supported: ${windowsBaseImageVersion}" + } else { + Write-Host "Provided baseimage version neither valid nor supported: ${windowsBaseImageVersion}" -ForegroundColor Red + exit 1 + } + + Write-Host "START:Triggering docker image build: $image with baseImage version: ${windowsBaseImageVersion}" + docker build --isolation=hyperv -t $updateImage --build-arg WINDOWS_VERSION=$windowsBaseImageVersion --build-arg IMAGE_TAG=$imageTag . + Write-Host "END:Triggering docker image build: $updateImage" + + Write-Host "START:pushing docker image : $updateImage" + docker push $updateImage + Write-Host "END:pushing docker image : $updateImage" +} -Write-Host "STAT:pushing docker image : $updateImage" -docker push $updateImage -Write-Host "EnD:pushing docker image : $updateImage" diff --git a/test/prometheus-scraping/win-prometheus-ref-app-ltsc2019.yml b/test/prometheus-scraping/win-prometheus-ref-app-ltsc2019.yml new file mode 100644 index 000000000..6dde6346c --- /dev/null +++ b/test/prometheus-scraping/win-prometheus-ref-app-ltsc2019.yml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: win-prometheus-reference-app-ltsc2019 +spec: + selector: + matchLabels: + app: win-prometheus-reference-app-ltsc2019 + replicas: 1 + template: + metadata: + annotations: + prometheus.io/port: '2112' + prometheus.io/scrape: 'true' + labels: + app: win-prometheus-reference-app-ltsc2019 + spec: + containers: + - name: win-prometheus-reference-app-golang + image: mcr.microsoft.com/azuremonitor/containerinsights/cidev:win-prometheus-reference-app-golang + env: + - name: RUN_PERF_TEST + value: "false" + - name: SCRAPE_INTERVAL + value: "60" + - name: METRIC_COUNT + value: "125000" + ports: + - containerPort: 2112 + protocol: TCP + - containerPort: 2113 + protocol: TCP + - name: win-prometheus-reference-app-python + image: mcr.microsoft.com/azuremonitor/containerinsights/cidev:win-prometheus-reference-app-python + ports: + - containerPort: 2114 + protocol: TCP + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/os + operator: In + values: + - windows + - key: kubernetes.azure.com/os-sku + operator: NotIn + values: + - Windows2022 \ No newline at end of file diff --git a/test/prometheus-scraping/win-prometheus-ref-app-ltsc2022.yml b/test/prometheus-scraping/win-prometheus-ref-app-ltsc2022.yml new file mode 100644 index 000000000..259a959ff --- /dev/null +++ b/test/prometheus-scraping/win-prometheus-ref-app-ltsc2022.yml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: win-prometheus-reference-app-ltsc2022 +spec: + selector: + matchLabels: + app: win-prometheus-reference-app-ltsc2022 + replicas: 1 + template: + metadata: + annotations: + prometheus.io/port: '2112' + prometheus.io/scrape: 'true' + labels: + app: win-prometheus-reference-app-ltsc2022 + spec: + containers: + - name: win-prometheus-reference-app-golang + image: mcr.microsoft.com/azuremonitor/containerinsights/cidev:win-prometheus-reference-app-golang + env: + - name: RUN_PERF_TEST + value: "false" + - name: SCRAPE_INTERVAL + value: "60" + - name: METRIC_COUNT + value: "125000" + ports: + - containerPort: 2112 + protocol: TCP + - containerPort: 2113 + protocol: TCP + - name: win-prometheus-reference-app-python + image: mcr.microsoft.com/azuremonitor/containerinsights/cidev:win-prometheus-reference-app-python + ports: + - containerPort: 2114 + protocol: TCP + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/os + operator: In + values: + - windows + - key: kubernetes.azure.com/os-sku + operator: In + values: + - Windows2022 \ No newline at end of file diff --git a/test/scenario/log-app-win-ltsc2019.yml b/test/scenario/log-app-win-ltsc2019.yml new file mode 100644 index 000000000..67381fa35 --- /dev/null +++ b/test/scenario/log-app-win-ltsc2019.yml @@ -0,0 +1,50 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: windows-log-ltsc2019 + labels: + name: windows-log-ltsc2019 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: second-log-app + namespace: windows-log-ltsc2019 +spec: + replicas: 1 + selector: + matchLabels: + app: second-log-app + template: + metadata: + labels: + app: second-log-app + spec: + volumes: + - name: html + emptyDir: {} + containers: + - name: second-log-app + image: mcr.microsoft.com/windows/servercore:ltsc2019 + command: ["powershell", "-c"] + args: + - "$counter = 1; For(;;) { echo $counter; $counter++; Start-Sleep -Seconds 1; }" + env: + - name: RANOMD_ENV_VAR_1 + value: "#123312'@$98" + - name: RANOMD_ENV_VAR_2 + value: "test" + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/os + operator: In + values: + - windows + - key: kubernetes.azure.com/os-sku + operator: NotIn + values: + - Windows2022 \ No newline at end of file diff --git a/test/scenario/log-app-win-ltsc2022.yml b/test/scenario/log-app-win-ltsc2022.yml new file mode 100644 index 000000000..bdbddbaa4 --- /dev/null +++ b/test/scenario/log-app-win-ltsc2022.yml @@ -0,0 +1,50 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: windows-log-ltsc2022 + labels: + name: windows-log-ltsc2022 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: second-log-app + namespace: windows-log-ltsc2022 +spec: + replicas: 1 + selector: + matchLabels: + app: second-log-app + template: + metadata: + labels: + app: second-log-app + spec: + volumes: + - name: html + emptyDir: {} + containers: + - name: second-log-app + image: mcr.microsoft.com/windows/servercore:ltsc2022 + command: ["powershell", "-c"] + args: + - "$counter = 1; For(;;) { echo $counter; $counter++; Start-Sleep -Seconds 1; }" + env: + - name: RANOMD_ENV_VAR_1 + value: "#123312'@$98" + - name: RANOMD_ENV_VAR_2 + value: "test" + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/os + operator: In + values: + - windows + - key: kubernetes.azure.com/os-sku + operator: In + values: + - Windows2022