Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
286 changes: 185 additions & 101 deletions .pipelines/azure_pipeline_prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,106 +21,190 @@ variables:
armServiceConnectionName: 'ci-1es-acr-connection-prod'
subscription: '30c56c3a-54da-46ea-b004-06eb33432687'
containerRegistry: 'containerinsightsbuild'
repoImageName: '${{ variables.containerRegistry }}.azurecr.io/official/linux'
repoImageNameLinux: '${{ variables.containerRegistry }}.azurecr.io/official/linux'
repoImageNameWindows: '${{ variables.containerRegistry }}.azurecr.io/official/windows'
IS_PR: $[eq(variables['Build.Reason'], 'PullRequest')]

steps:
- bash: |
commit=$(git rev-parse --short HEAD)
echo "##vso[task.setvariable variable=commit;]$commit"

datetime=$(date +'%m%d%Y')
echo "##vso[task.setvariable variable=datetime;]$datetime"

cd $(Build.SourcesDirectory)/deployment/multiarch-agent-deployment/ServiceGroupRoot/Scripts
tar -czvf ../artifacts.tar.gz pushAgentToAcr.sh

cd $(Build.SourcesDirectory)/deployment/arc-k8s-extension/ServiceGroupRoot/Scripts
tar -czvf ../artifacts.tar.gz ../../../../charts/azuremonitor-containers/ pushChartToAcr.sh

- task: CopyFiles@2
displayName: "Copy ev2 deployment artifacts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/deployment"
Contents: |
**/*
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/.pipelines"
Contents: |
**/*.sh
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/kubernetes"
Contents: |
*.yaml
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/charts"
Contents: |
**/*
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/test/e2e"
Contents: |
*.yaml
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: AzureCLI@2
displayName: "Docker multi-arch linux build"
inputs:
azureSubscription: ${{ variables.armServiceConnectionName }}
scriptType: bash
scriptLocation: inlineScript
inlineScript: |

sudo apt-get update && sudo apt-get -y install qemu binfmt-support qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

docker buildx create --name testbuilder
docker buildx use testbuilder

az --version
az account show
az account set -s ${{ variables.subscription }}
az acr login -n ${{ variables.containerRegistry }}

if [ "$(Build.Reason)" != "PullRequest" ]; then
docker buildx build --platform linux/amd64,linux/arm64 --tag ${{ variables.repoImageName }}:ciprod-$(datetime)-$(commit) -f kubernetes/linux/Dockerfile.multiarch --metadata-file $(Build.ArtifactStagingDirectory)/metadata.json --push .

docker pull ${{ variables.repoImageName }}:ciprod-$(datetime)-$(commit)
else
docker buildx build --platform linux/amd64,linux/arm64 --tag ${{ variables.repoImageName }}:ciprod-$(datetime)-$(commit) -f kubernetes/linux/Dockerfile.multiarch --metadata-file $(Build.ArtifactStagingDirectory)/metadata.json .
fi


- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Generation Task'
condition: eq(variables.IS_PR, true)
inputs:
BuildDropPath: '$(Build.ArtifactStagingDirectory)'
DockerImagesToScan: 'golang:1.15.14, ubuntu:18.04'

- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Generation Task'
condition: eq(variables.IS_PR, false)
inputs:
BuildDropPath: '$(Build.ArtifactStagingDirectory)'
DockerImagesToScan: 'golang:1.15.14, ubuntu:18.04, ${{ variables.repoImageName }}:ciprod-$(datetime)-$(commit)'

- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
jobs:
- job: common
pool:
name: Azure-Pipelines-CI-Prod-EO
steps:
- bash: |
commit=$(git rev-parse --short HEAD)
datetime=$(date +'%m%d%Y')
linuxImagetag=ciprod-"$datetime"-"$commit"
windowsImageTag=win-ciprod-"$datetime"-"$commit"
echo "##vso[task.setvariable variable=linuxImagetag;isOutput=true]$linuxImagetag"
echo "##vso[task.setvariable variable=windowsImageTag;isOutput=true]$windowsImageTag"

cd $(Build.SourcesDirectory)/deployment/multiarch-agent-deployment/ServiceGroupRoot/Scripts
tar -czvf ../artifacts.tar.gz pushAgentToAcr.sh

cd $(Build.SourcesDirectory)/deployment/arc-k8s-extension/ServiceGroupRoot/Scripts
tar -czvf ../artifacts.tar.gz ../../../../charts/azuremonitor-containers/ pushChartToAcr.sh
name: setup

- task: CopyFiles@2
displayName: "Copy ev2 deployment artifacts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/deployment"
Contents: |
**/*
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/.pipelines"
Contents: |
**/*.sh
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/kubernetes"
Contents: |
*.yaml
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/charts"
Contents: |
**/*
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: CopyFiles@2
displayName: "Copy ev2 deployment scripts"
inputs:
SourceFolder: "$(Build.SourcesDirectory)/test/e2e"
Contents: |
*.yaml
TargetFolder: '$(Build.ArtifactStagingDirectory)/build'

- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop

- job: build_linux
dependsOn: common
pool:
name: Azure-Pipelines-CI-Prod-EO
variables:
linuxImagetag: $[ dependencies.common.outputs['setup.linuxImagetag'] ]

steps:
- task: AzureCLI@2
displayName: "Docker multi-arch linux build"
inputs:
azureSubscription: ${{ variables.armServiceConnectionName }}
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
mkdir -p $(Build.ArtifactStagingDirectory)/linux

sudo apt-get update && sudo apt-get -y install qemu binfmt-support qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

docker buildx create --name testbuilder
docker buildx use testbuilder

az --version
az account show
az account set -s ${{ variables.subscription }}
az acr login -n ${{ variables.containerRegistry }}

if [ "$(Build.Reason)" != "PullRequest" ]; then
docker buildx build --platform linux/amd64,linux/arm64 --tag ${{ variables.repoImageNameLinux }}:$(linuxImagetag) -f kubernetes/linux/Dockerfile.multiarch --metadata-file $(Build.ArtifactStagingDirectory)/linux/metadata.json --push .

docker pull ${{ variables.repoImageNameLinux }}:$(linuxImagetag)
else
docker buildx build --platform linux/amd64,linux/arm64 --tag ${{ variables.repoImageNameLinux }}:$(linuxImagetag) -f kubernetes/linux/Dockerfile.multiarch --metadata-file $(Build.ArtifactStagingDirectory)/linux/metadata.json .
fi


- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Generation Task'
condition: eq(variables.IS_PR, true)
inputs:
BuildDropPath: '$(Build.ArtifactStagingDirectory)/linux'
DockerImagesToScan: 'golang:1.15.14, ubuntu:18.04'

- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Generation Task'
condition: eq(variables.IS_PR, false)
inputs:
BuildDropPath: '$(Build.ArtifactStagingDirectory)/linux'
DockerImagesToScan: 'golang:1.15.14, ubuntu:18.04, ${{ variables.repoImageNameLinux }}:$(linuxImagetag)'

- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop

- job: build_windows
dependsOn: common
pool:
name: Azure-Pipelines-Windows-CI-Prod-EO
variables:
windowsImageTag: $[ dependencies.common.outputs['setup.windowsImageTag'] ]

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"
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

docker build --tag ${{ variables.repoImageNameWindows }}:$(windowsImageTag) .

if ("$(Build.Reason)" -ne "PullRequest") {
docker 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'

- 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)'

- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"$schema": "http://schema.express.azure.com/schemas/2015-01-01-alpha/RolloutParameters.json",
"contentVersion": "1.0.0.0",
"wait": [
{
"name": "waitSdpBakeTime",
"properties": {
"duration": "PT24H"
}
}
],
"shellExtensions": [
{
"name": "PushAgentToACR",
"type": "ShellExtensionType",
"properties": {
"maxexecutiontime": "PT1H"
},
"package": {
"reference": {
"path": "artifacts.tar.gz"
}
},
"launch": {
"command": [
"/bin/bash",
"pushAgentToAcr.sh"
],
"environmentVariables": [
{
"name": "ACR_NAME",
"value": "__ACR_NAME__"
},
{
"name": "AGENT_RELEASE",
"value": "__AGENT_RELEASE__"
},
{
"name": "AGENT_IMAGE_TAG_SUFFIX",
"value": "__AGENT_IMAGE_TAG_SUFFIX__"
},
{
"name": "AGENT_IMAGE_FULL_PATH",
"value": "public/azuremonitor/containerinsights/__AGENT_RELEASE__:win-__AGENT_RELEASE____AGENT_IMAGE_TAG_SUFFIX__"
},
{
"name": "CDPX_REGISTRY",
"value": "__CDPX_WINDOWS_REGISTRY__"
},
{
"name": "CDPX_REPO_NAME",
"value": "__CDPX_WINDOWS_REPO_NAME__"
},
{
"name": "CDPX_TAG",
"value": "__CDPX_WINDOWS_TAG__"
}
],
"identity": {
"type": "userAssigned",
"userAssignedIdentities": [
"__MANAGED_IDENTITY__"
]
}
}
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"$schema": "https://ev2schema.azure.net/schemas/2020-01-01/rolloutSpecification.json",
"ContentVersion": "1.0.0.0",
"RolloutMetadata": {
"ServiceModelPath": "ServiceModels//Public.ServiceModel.json",
"ScopeBindingsPath": "ScopeBindings//Public.ScopeBindings.json",
"ServiceModelPath": "ServiceModels//Public.ServiceModel.json",
"ScopeBindingsPath": "ScopeBindings//Public.ScopeBindings.json",
"Name": "ContainerInsightsAgent",
"RolloutType": "Major",
"BuildSource": {
Expand All @@ -15,7 +15,7 @@
"Email": {
"To": "omscontainers@microsoft.com"
}
}
}
},
"OrchestratedSteps": [
{
Expand All @@ -24,6 +24,13 @@
"targetName": "PushLinuxAgent",
"actions": [ "Shell/PushAgentToACR" ],
"dependsOn": [ ]
},
{
"name": "PushWindowsAgent",
"targetType": "ServiceResource",
"targetName": "PushWindowsAgent",
"actions": [ "Shell/PushAgentToACR" ],
"dependsOn": [ ]
}
]
}
Loading