From dff1c0620266e9536096c4d53534daa2c8da5916 Mon Sep 17 00:00:00 2001 From: Hang Date: Mon, 14 Aug 2023 10:59:13 +0800 Subject: [PATCH 01/16] Init --- .dockerignore | 2 + Dockerfile.azure | 31 ++++++++ azure-pipelines.yml | 111 ++++++++++++++++++++++++----- scripts/release/docker/pipeline.sh | 1 + 4 files changed, 127 insertions(+), 18 deletions(-) create mode 100644 Dockerfile.azure diff --git a/.dockerignore b/.dockerignore index 46e140101cf..f2166d5e08e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,6 +10,8 @@ !az.completion # Make an exception for the license file !LICENSE.txt +# Make an exception for docker related files +!docker/* # Exclude build droppings, as mentioned in .gitignore src/build* # Exclude tests diff --git a/Dockerfile.azure b/Dockerfile.azure new file mode 100644 index 00000000000..94cb7474797 --- /dev/null +++ b/Dockerfile.azure @@ -0,0 +1,31 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +#--------------------------------------------------------------------------------------------- + +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 + +ARG CLI_VERSION + +# Metadata as defined at http://label-schema.org +ARG BUILD_DATE + +LABEL maintainer="Microsoft" \ + org.label-schema.schema-version="1.0" \ + org.label-schema.vendor="Microsoft" \ + org.label-schema.name="Azure CLI" \ + org.label-schema.version=$CLI_VERSION \ + org.label-schema.license="MIT" \ + org.label-schema.description="The Azure CLI is used for all Resource Manager deployments in Azure." \ + org.label-schema.url="https://docs.microsoft.com/cli/azure/overview" \ + org.label-schema.usage="https://learn.microsoft.com/en-us/cli/azure/run-azure-cli-docker" \ + org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.vcs-url="https://github.com/Azure/azure-cli.git" \ + org.label-schema.docker.cmd="docker run -v \${HOME}/.azure:/root/.azure -it mcr.microsoft.com/azure-cli:$CLI_VERSION-azure" + + +# Azure Linux does not contain Mozilla CA certificates, install ca-certificates package to prevent CERTIFICATE_VERIFY_FAILED errors, see https://github.com/Azure/azure-cli/issues/26026 +RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker/azure-cli.rpm pwd && ls && tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all + +ENV AZ_INSTALLER=DOCKER +CMD bash diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bd0f52822dd..3cb78895e7c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -301,17 +301,13 @@ jobs: - job: BuildDockerImage displayName: Build Docker Image - - dependsOn: ExtractMetadata - condition: succeeded() strategy: matrix: - AMD64: - pool: ${{ variables.ubuntu_pool }} - artifactName: docker-amd64 - ARM64: - pool: ${{ variables.ubuntu_arm64_pool }} - artifactName: docker-arm64 + ${{ each arch in parameters.architectures }}: + Alpine {{ arch.name }}: + pool: ${{ arch.pool }} + artifactName: docker-{{ arch.name }} + dockerfile: Dockerfile pool: name: $(pool) steps: @@ -337,17 +333,16 @@ jobs: - job: TestDockerImage displayName: Test Docker Image - - dependsOn: BuildDockerImage + dependsOn: + - BuildDockerImage + - ExtractMetadata condition: succeeded() strategy: matrix: - AMD64: - pool: ${{ variables.ubuntu_pool }} - artifactName: docker-amd64 - ARM64: - pool: ${{ variables.ubuntu_arm64_pool }} - artifactName: docker-arm64 + ${{ each arch in parameters.architectures }}: + Alpine {{ arch.name }}: + pool: ${{ arch.pool }} + artifactName: docker-{{ arch.name }} pool: name: $(pool) steps: @@ -357,7 +352,6 @@ jobs: TargetPath: '$(Build.ArtifactStagingDirectory)/metadata' artifactName: metadata - - task: DownloadPipelineArtifact@1 displayName: 'Download Docker Image' inputs: @@ -380,6 +374,87 @@ jobs: docker run $IMAGE_NAME /bin/bash -c "time az self-test && time az --version && sleep 5" displayName: 'Bash Script' +- job: BuildExtraDockerImage + displayName: Build Extra Docker Image + dependsOn: BuildRpmPackageMariner + strategy: + matrix: + ${{ each arch in parameters.architectures }}: + Azure Linux {{ arch.name }}: + pool: ${{ arch.pool }} + artifactName: docker-azure-{{ arch.value }} + dockerfile: Dockerfile.azure + packageArtifactName: rpm-mariner2.0-{{ arch.value }} + pool: + name: $(pool) + steps: + - bash: ./scripts/ci/install_docker.sh + displayName: Install Docker + - task: DownloadPipelineArtifact@1 + displayName: 'Download Build Artifacts' + inputs: + TargetPath: '$(Build.ArtifactStagingDirectory)/docker' + artifactName: $(packageArtifactName) + - bash: | + mv $(Build.ArtifactStagingDirectory)/docker/*.rpm $(Build.ArtifactStagingDirectory)/docker/azure-cli.rpm + + bash scripts/release/docker/pipeline.sh + displayName: 'Build Docker' + + - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 + displayName: 'SBOM' + inputs: + BuildDropPath: $(Build.ArtifactStagingDirectory) + DockerImagesToScan: 'clibuild$BUILD_BUILDNUMBER:latest' + + - task: PublishPipelineArtifact@0 + displayName: 'Publish Artifact: docker image' + inputs: + TargetPath: $(Build.ArtifactStagingDirectory) + ArtifactName: $(artifactName) + +- job: TestExtraDockerImage + displayName: Test Extra Docker Image + dependsOn: + - BuildExtraDockerImage + - ExtractMetadata + strategy: + matrix: + ${{ each arch in parameters.architectures }}: + Azure Linux {{ arch.name }}: + pool: ${{ arch.pool }} + artifactName: docker-azure-{{ arch.value }} + pool: + name: $(pool) + steps: + - task: DownloadPipelineArtifact@1 + displayName: 'Download Metadata' + inputs: + TargetPath: '$(Build.ArtifactStagingDirectory)/metadata' + artifactName: metadata + + - task: DownloadPipelineArtifact@1 + displayName: 'Download Docker Image' + inputs: + TargetPath: '$(Build.ArtifactStagingDirectory)/docker' + artifactName: $(artifactName) + + - bash: ./scripts/ci/install_docker.sh + displayName: Install Docker + + - bash: | + set -exv + + CLI_VERSION=`cat $SYSTEM_ARTIFACTSDIRECTORY/metadata/version` + IMAGE_NAME=clibuild$BUILD_BUILDNUMBER:latest + TAR_FILE=$SYSTEM_ARTIFACTSDIRECTORY/docker/docker-azure-cli-$CLI_VERSION.tar + + echo "== Test docker image ==" + + docker load < $TAR_FILE + docker run $IMAGE_NAME /bin/bash -c "time az self-test && time az --version && sleep 5" + displayName: 'Bash Script' + - job: BuildPythonWheel displayName: Build Python Wheels diff --git a/scripts/release/docker/pipeline.sh b/scripts/release/docker/pipeline.sh index 2050814e7d1..cc91e5602e6 100755 --- a/scripts/release/docker/pipeline.sh +++ b/scripts/release/docker/pipeline.sh @@ -13,6 +13,7 @@ docker build --no-cache \ --build-arg BUILD_DATE="`date -u +"%Y-%m-%dT%H:%M:%SZ"`" \ --build-arg CLI_VERSION=$CLI_VERSION \ --tag $IMAGE_NAME:latest \ + --file $DOCKERFILE $BUILD_SOURCESDIRECTORY docker save -o "$BUILD_STAGINGDIRECTORY/docker-azure-cli-${CLI_VERSION}.tar" $IMAGE_NAME:latest From 0f7dcb7d30383604172d42b2e2f6b379650cbaab Mon Sep 17 00:00:00 2001 From: Hang Date: Thu, 17 Aug 2023 15:37:15 +0800 Subject: [PATCH 02/16] Minor fix --- azure-pipelines.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3cb78895e7c..fbfaa4fdc75 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -304,10 +304,11 @@ jobs: strategy: matrix: ${{ each arch in parameters.architectures }}: - Alpine {{ arch.name }}: + Alpine ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-{{ arch.name }} + artifactName: docker-${{ arch.name }} dockerfile: Dockerfile + pool: name: $(pool) steps: @@ -340,9 +341,9 @@ jobs: strategy: matrix: ${{ each arch in parameters.architectures }}: - Alpine {{ arch.name }}: + Alpine ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-{{ arch.name }} + artifactName: docker-${{ arch.name }} pool: name: $(pool) steps: @@ -380,11 +381,11 @@ jobs: strategy: matrix: ${{ each arch in parameters.architectures }}: - Azure Linux {{ arch.name }}: + Azure Linux ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-azure-{{ arch.value }} + artifactName: docker-azure-${{ arch.value }} dockerfile: Dockerfile.azure - packageArtifactName: rpm-mariner2.0-{{ arch.value }} + packageArtifactName: rpm-mariner2.0-${{ arch.value }} pool: name: $(pool) steps: @@ -421,9 +422,9 @@ jobs: strategy: matrix: ${{ each arch in parameters.architectures }}: - Azure Linux {{ arch.name }}: + Azure Linux ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-azure-{{ arch.value }} + artifactName: docker-azure-${{ arch.value }} pool: name: $(pool) steps: From 9943174dc27f277ba24a7a7ff45a29b8f5cb82cd Mon Sep 17 00:00:00 2001 From: Hang Date: Thu, 17 Aug 2023 16:59:19 +0800 Subject: [PATCH 03/16] Minor fix --- azure-pipelines.yml | 1 - scripts/release/docker/pipeline.sh | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fbfaa4fdc75..0e3dc53083a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -308,7 +308,6 @@ jobs: pool: ${{ arch.pool }} artifactName: docker-${{ arch.name }} dockerfile: Dockerfile - pool: name: $(pool) steps: diff --git a/scripts/release/docker/pipeline.sh b/scripts/release/docker/pipeline.sh index cc91e5602e6..5a6dad3c443 100755 --- a/scripts/release/docker/pipeline.sh +++ b/scripts/release/docker/pipeline.sh @@ -13,7 +13,7 @@ docker build --no-cache \ --build-arg BUILD_DATE="`date -u +"%Y-%m-%dT%H:%M:%SZ"`" \ --build-arg CLI_VERSION=$CLI_VERSION \ --tag $IMAGE_NAME:latest \ - --file $DOCKERFILE + --file $DOCKERFILE \ $BUILD_SOURCESDIRECTORY docker save -o "$BUILD_STAGINGDIRECTORY/docker-azure-cli-${CLI_VERSION}.tar" $IMAGE_NAME:latest From 51dcee375adfedc871f48fc196884f2e0b972f19 Mon Sep 17 00:00:00 2001 From: Hang Date: Fri, 18 Aug 2023 14:57:01 +0800 Subject: [PATCH 04/16] Test --- azure-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0e3dc53083a..db9b96f232f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -396,7 +396,10 @@ jobs: TargetPath: '$(Build.ArtifactStagingDirectory)/docker' artifactName: $(packageArtifactName) - bash: | + set -ex mv $(Build.ArtifactStagingDirectory)/docker/*.rpm $(Build.ArtifactStagingDirectory)/docker/azure-cli.rpm + pwd + ls ./docker bash scripts/release/docker/pipeline.sh displayName: 'Build Docker' From a38084d84a42cffe844b480b4ee16751de37a6f7 Mon Sep 17 00:00:00 2001 From: Hang Date: Fri, 18 Aug 2023 16:27:10 +0800 Subject: [PATCH 05/16] Fix rpm path --- azure-pipelines.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index db9b96f232f..d66b6bc1298 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -397,9 +397,8 @@ jobs: artifactName: $(packageArtifactName) - bash: | set -ex - mv $(Build.ArtifactStagingDirectory)/docker/*.rpm $(Build.ArtifactStagingDirectory)/docker/azure-cli.rpm - pwd - ls ./docker + mkdir docker + mv $(Build.ArtifactStagingDirectory)/docker/*.rpm ./docker/azure-cli.rpm bash scripts/release/docker/pipeline.sh displayName: 'Build Docker' From 021c340bc81e19224275c5e2eb2b0469f7e08dc9 Mon Sep 17 00:00:00 2001 From: Hang Date: Tue, 22 Aug 2023 11:36:47 +0800 Subject: [PATCH 06/16] Minor fix --- Dockerfile.azure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.azure b/Dockerfile.azure index 94cb7474797..fb87f4a50c2 100644 --- a/Dockerfile.azure +++ b/Dockerfile.azure @@ -25,7 +25,7 @@ LABEL maintainer="Microsoft" \ # Azure Linux does not contain Mozilla CA certificates, install ca-certificates package to prevent CERTIFICATE_VERIFY_FAILED errors, see https://github.com/Azure/azure-cli/issues/26026 -RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker/azure-cli.rpm pwd && ls && tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all +RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker/azure-cli.rpm tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all ENV AZ_INSTALLER=DOCKER CMD bash From a7d03606bfc6725135fc195c646e447d9e6f0994 Mon Sep 17 00:00:00 2001 From: Hang Date: Fri, 25 Aug 2023 17:20:10 +0800 Subject: [PATCH 07/16] Rename --- azure-pipelines.yml | 12 ++++++------ Dockerfile.azure => azure.dockerfile | 0 2 files changed, 6 insertions(+), 6 deletions(-) rename Dockerfile.azure => azure.dockerfile (100%) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 63c5a768c7a..1fabb5d8c42 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -374,8 +374,8 @@ jobs: docker run $IMAGE_NAME /bin/bash -c "time az self-test && time az --version && sleep 5" displayName: 'Bash Script' -- job: BuildExtraDockerImage - displayName: Build Extra Docker Image +- job: BuildAzureDockerImage + displayName: Build Azure Docker Image dependsOn: BuildRpmPackageMariner strategy: matrix: @@ -383,7 +383,7 @@ jobs: Azure Linux ${{ arch.name }}: pool: ${{ arch.pool }} artifactName: docker-azure-${{ arch.value }} - dockerfile: Dockerfile.azure + dockerfile: azure.dockerfile packageArtifactName: rpm-mariner2.0-${{ arch.value }} pool: name: $(pool) @@ -415,10 +415,10 @@ jobs: TargetPath: $(Build.ArtifactStagingDirectory) ArtifactName: $(artifactName) -- job: TestExtraDockerImage - displayName: Test Extra Docker Image +- job: TestAzureDockerImage + displayName: Test Azure Docker Image dependsOn: - - BuildExtraDockerImage + - BuildAzureDockerImage - ExtractMetadata strategy: matrix: diff --git a/Dockerfile.azure b/azure.dockerfile similarity index 100% rename from Dockerfile.azure rename to azure.dockerfile From 8bafcb2d2f1672506e7305f70084e5d56decc3d2 Mon Sep 17 00:00:00 2001 From: Hang Date: Mon, 11 Sep 2023 16:27:43 +0800 Subject: [PATCH 08/16] Minor fix --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1fabb5d8c42..bc23015d3d3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -306,7 +306,7 @@ jobs: ${{ each arch in parameters.architectures }}: Alpine ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-${{ arch.name }} + artifactName: docker-${{ arch.value }} dockerfile: Dockerfile pool: name: $(pool) From 01c58d53b7eb19bd868c5368d1538795b12ded3c Mon Sep 17 00:00:00 2001 From: Hang Date: Tue, 12 Sep 2023 15:46:52 +0800 Subject: [PATCH 09/16] Minor fix --- azure.dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure.dockerfile b/azure.dockerfile index fb87f4a50c2..4b7ea338433 100644 --- a/azure.dockerfile +++ b/azure.dockerfile @@ -24,8 +24,8 @@ LABEL maintainer="Microsoft" \ org.label-schema.docker.cmd="docker run -v \${HOME}/.azure:/root/.azure -it mcr.microsoft.com/azure-cli:$CLI_VERSION-azure" -# Azure Linux does not contain Mozilla CA certificates, install ca-certificates package to prevent CERTIFICATE_VERIFY_FAILED errors, see https://github.com/Azure/azure-cli/issues/26026 -RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker/azure-cli.rpm tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all +# Azure Linux base image does not contain Mozilla CA certificates, install ca-certificates package to prevent CERTIFICATE_VERIFY_FAILED errors, see https://github.com/Azure/azure-cli/issues/26026 +RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker/azure-cli.rpm tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all && rm -rf /var/cache/tdnf ENV AZ_INSTALLER=DOCKER CMD bash From a454719bb383944bc8fa45dc77002349e20ef640 Mon Sep 17 00:00:00 2001 From: Hang Date: Fri, 15 Sep 2023 10:39:15 +0800 Subject: [PATCH 10/16] User mariner 2.0 in name --- azure-pipelines.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bc23015d3d3..55d354fa4e1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -380,9 +380,9 @@ jobs: strategy: matrix: ${{ each arch in parameters.architectures }}: - Azure Linux ${{ arch.name }}: + Mariner 2.0 ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-azure-${{ arch.value }} + artifactName: docker-mariner2.0-${{ arch.value }} dockerfile: azure.dockerfile packageArtifactName: rpm-mariner2.0-${{ arch.value }} pool: @@ -423,9 +423,9 @@ jobs: strategy: matrix: ${{ each arch in parameters.architectures }}: - Azure Linux ${{ arch.name }}: + Mariner 2.0 ${{ arch.name }}: pool: ${{ arch.pool }} - artifactName: docker-azure-${{ arch.value }} + artifactName: docker-mariner2.0-${{ arch.value }} pool: name: $(pool) steps: From 0f101c2b0e3d2b2aa7df4085e6957ca27358db2d Mon Sep 17 00:00:00 2001 From: Hang Date: Mon, 18 Sep 2023 15:18:33 +0800 Subject: [PATCH 11/16] Change dockerfile name --- Dockerfile => alpine.dockerfile | 2 +- azure.dockerfile => azure-linux.dockerfile | 2 +- azure-pipelines.yml | 20 ++++++++------------ 3 files changed, 10 insertions(+), 14 deletions(-) rename Dockerfile => alpine.dockerfile (94%) rename azure.dockerfile => azure-linux.dockerfile (89%) diff --git a/Dockerfile b/alpine.dockerfile similarity index 94% rename from Dockerfile rename to alpine.dockerfile index 37374bba5aa..ee354cfd3e8 100644 --- a/Dockerfile +++ b/alpine.dockerfile @@ -18,7 +18,7 @@ LABEL maintainer="Microsoft" \ org.label-schema.name="Azure CLI" \ org.label-schema.version=$CLI_VERSION \ org.label-schema.license="MIT" \ - org.label-schema.description="The Azure CLI is used for all Resource Manager deployments in Azure." \ + org.label-schema.description="A great cloud needs great tools; we're excited to introduce Azure CLI, our next generation multi-platform command line experience for Azure." \ org.label-schema.url="https://docs.microsoft.com/cli/azure/overview" \ org.label-schema.usage="https://docs.microsoft.com/cli/azure/install-az-cli2#docker" \ org.label-schema.build-date=$BUILD_DATE \ diff --git a/azure.dockerfile b/azure-linux.dockerfile similarity index 89% rename from azure.dockerfile rename to azure-linux.dockerfile index 4b7ea338433..4d2867d12e4 100644 --- a/azure.dockerfile +++ b/azure-linux.dockerfile @@ -16,7 +16,7 @@ LABEL maintainer="Microsoft" \ org.label-schema.name="Azure CLI" \ org.label-schema.version=$CLI_VERSION \ org.label-schema.license="MIT" \ - org.label-schema.description="The Azure CLI is used for all Resource Manager deployments in Azure." \ + org.label-schema.description="A great cloud needs great tools; we're excited to introduce Azure CLI, our next generation multi-platform command line experience for Azure." \ org.label-schema.url="https://docs.microsoft.com/cli/azure/overview" \ org.label-schema.usage="https://learn.microsoft.com/en-us/cli/azure/run-azure-cli-docker" \ org.label-schema.build-date=$BUILD_DATE \ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 55d354fa4e1..84bf297f562 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -299,15 +299,14 @@ jobs: Get-Content .\install_logs.txt -- job: BuildDockerImage - displayName: Build Docker Image +- job: BuildDockerImageAlpine strategy: matrix: ${{ each arch in parameters.architectures }}: Alpine ${{ arch.name }}: pool: ${{ arch.pool }} artifactName: docker-${{ arch.value }} - dockerfile: Dockerfile + dockerfile: alpine.dockerfile pool: name: $(pool) steps: @@ -331,10 +330,9 @@ jobs: TargetPath: $(Build.ArtifactStagingDirectory) ArtifactName: $(artifactName) -- job: TestDockerImage - displayName: Test Docker Image +- job: TestDockerImageAlpine dependsOn: - - BuildDockerImage + - BuildDockerImageAlpine - ExtractMetadata condition: succeeded() strategy: @@ -374,7 +372,7 @@ jobs: docker run $IMAGE_NAME /bin/bash -c "time az self-test && time az --version && sleep 5" displayName: 'Bash Script' -- job: BuildAzureDockerImage +- job: BuildDockerImageAzureLinux displayName: Build Azure Docker Image dependsOn: BuildRpmPackageMariner strategy: @@ -383,7 +381,7 @@ jobs: Mariner 2.0 ${{ arch.name }}: pool: ${{ arch.pool }} artifactName: docker-mariner2.0-${{ arch.value }} - dockerfile: azure.dockerfile + dockerfile: azure-linux.dockerfile packageArtifactName: rpm-mariner2.0-${{ arch.value }} pool: name: $(pool) @@ -410,15 +408,13 @@ jobs: DockerImagesToScan: 'clibuild$BUILD_BUILDNUMBER:latest' - task: PublishPipelineArtifact@0 - displayName: 'Publish Artifact: docker image' inputs: TargetPath: $(Build.ArtifactStagingDirectory) ArtifactName: $(artifactName) -- job: TestAzureDockerImage - displayName: Test Azure Docker Image +- job: TestDockerImageAzureLinux dependsOn: - - BuildAzureDockerImage + - BuildDockerImageAzureLinux - ExtractMetadata strategy: matrix: From 2bade4ee186acb58ce33740077aa2cdd48e205c1 Mon Sep 17 00:00:00 2001 From: Hang Date: Mon, 18 Sep 2023 15:54:29 +0800 Subject: [PATCH 12/16] Use docker-temp folder --- .dockerignore | 4 ++-- azure-pipelines.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.dockerignore b/.dockerignore index f2166d5e08e..2da023fdc61 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,8 +10,8 @@ !az.completion # Make an exception for the license file !LICENSE.txt -# Make an exception for docker related files -!docker/* +# Make an exception for docker temp files when build images +!docker-temp/* # Exclude build droppings, as mentioned in .gitignore src/build* # Exclude tests diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 84bf297f562..f4a5c0008e8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -391,12 +391,12 @@ jobs: - task: DownloadPipelineArtifact@1 displayName: 'Download Build Artifacts' inputs: - TargetPath: '$(Build.ArtifactStagingDirectory)/docker' + TargetPath: '$(Build.ArtifactStagingDirectory)/docker-temp' artifactName: $(packageArtifactName) - bash: | set -ex mkdir docker - mv $(Build.ArtifactStagingDirectory)/docker/*.rpm ./docker/azure-cli.rpm + mv $(Build.ArtifactStagingDirectory)/docker-temp/*.rpm ./docker/azure-cli.rpm bash scripts/release/docker/pipeline.sh displayName: 'Build Docker' From 33f1f6dcbe7a7d4a881bfa2a4c296929e6315bff Mon Sep 17 00:00:00 2001 From: Hang Date: Wed, 27 Sep 2023 11:44:04 +0800 Subject: [PATCH 13/16] Fix path --- azure-linux.dockerfile | 2 +- azure-pipelines.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-linux.dockerfile b/azure-linux.dockerfile index 4d2867d12e4..856c53547bd 100644 --- a/azure-linux.dockerfile +++ b/azure-linux.dockerfile @@ -25,7 +25,7 @@ LABEL maintainer="Microsoft" \ # Azure Linux base image does not contain Mozilla CA certificates, install ca-certificates package to prevent CERTIFICATE_VERIFY_FAILED errors, see https://github.com/Azure/azure-cli/issues/26026 -RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker/azure-cli.rpm tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all && rm -rf /var/cache/tdnf +RUN --mount=type=bind,target=/azure-cli.rpm,source=./docker-temp/azure-cli.rpm tdnf install ca-certificates /azure-cli.rpm -y && tdnf clean all && rm -rf /var/cache/tdnf ENV AZ_INSTALLER=DOCKER CMD bash diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 72ed5d0d561..b44a9d5406d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -351,12 +351,12 @@ jobs: - task: DownloadPipelineArtifact@1 displayName: 'Download Build Artifacts' inputs: - TargetPath: '$(Build.ArtifactStagingDirectory)/docker-temp' + TargetPath: '$(Build.ArtifactStagingDirectory)/docker' artifactName: $(packageArtifactName) - bash: | set -ex - mkdir docker - mv $(Build.ArtifactStagingDirectory)/docker-temp/*.rpm ./docker/azure-cli.rpm + mkdir docker-temp + mv $(Build.ArtifactStagingDirectory)/docker/*.rpm ./docker-temp/azure-cli.rpm bash scripts/release/docker/pipeline.sh displayName: 'Build Docker' From e327a2d8f02137ae069392b453b30f84f1a14870 Mon Sep 17 00:00:00 2001 From: Hang Date: Wed, 27 Sep 2023 15:52:49 +0800 Subject: [PATCH 14/16] Update test name --- azure-pipelines.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b44a9d5406d..1c7f6bb85d3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1171,8 +1171,10 @@ jobs: - VerifyVersions - BuildWindowsMSI - TestMsiInstallation - - BuildDockerImage - - TestDockerImage + - BuildDockerImageAlpine + - TestDockerImageAlpine + - BuildDockerImageAzureLinux + - TestDockerImageAzureLinux - BuildPythonWheel - TestPythonWheel - TestCore From cb3786e1108c2dab990fd67984331173b9743d30 Mon Sep 17 00:00:00 2001 From: Hang Date: Mon, 9 Oct 2023 15:49:43 +0800 Subject: [PATCH 15/16] Minor fix --- azure-pipelines.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e7a5224a8ea..025c163a5a4 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -260,6 +260,7 @@ jobs: filePath: build_scripts\windows\scripts\test_msi_installation.ps1 - job: BuildDockerImageAlpine + displayName: Build Docker Image Alpine strategy: matrix: ${{ each arch in parameters.architectures }}: @@ -291,6 +292,7 @@ jobs: ArtifactName: $(artifactName) - job: TestDockerImageAlpine + displayName: Test Docker Image Alpine dependsOn: - BuildDockerImageAlpine - ExtractMetadata @@ -333,7 +335,7 @@ jobs: displayName: 'Bash Script' - job: BuildDockerImageAzureLinux - displayName: Build Azure Docker Image + displayName: Build Docker Image Azure Linux dependsOn: BuildRpmPackageMariner strategy: matrix: @@ -373,6 +375,7 @@ jobs: ArtifactName: $(artifactName) - job: TestDockerImageAzureLinux + displayName: Test Docker Image Azure Linux dependsOn: - BuildDockerImageAzureLinux - ExtractMetadata From 2dcab39d10c2c53f58f310cca6ad1820724e5bb9 Mon Sep 17 00:00:00 2001 From: Hang Date: Mon, 16 Oct 2023 13:35:28 +0800 Subject: [PATCH 16/16] Update .dockerignore Co-authored-by: Jiashuo Li <4003950+jiasli@users.noreply.github.com> --- .dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 2da023fdc61..48ae73ade65 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,7 +10,7 @@ !az.completion # Make an exception for the license file !LICENSE.txt -# Make an exception for docker temp files when build images +# Make an exception for Azure CLI RPMs !docker-temp/* # Exclude build droppings, as mentioned in .gitignore src/build*