Use buildx imagetools create to create a multi platform image

This commit is contained in:
Luis Ángel San Martín 2024-09-23 16:15:03 +02:00
parent e2179085ab
commit 2a935cd538

View File

@ -315,8 +315,8 @@ jobs:
steps: steps:
- script: | - script: |
cd $(Build.SourcesDirectory)/docker/ cd $(Build.SourcesDirectory)/docker/
docker build --no-cache --platform linux/amd64 -f Dockerfile -t yacreaderlibraryserver:develop-amd64 . docker build --no-cache --platform linux/amd64 -f Dockerfile -t yacreader/yacreaderlibraryserver:develop-amd64 .
docker save yacreaderlibraryserver:develop-amd64 -o $(Build.ArtifactStagingDirectory)/amd64.tar docker save yacreader/yacreaderlibraryserver:develop-amd64 -o $(Build.ArtifactStagingDirectory)/amd64.tar
displayName: 'Build amd64 Image and Save as Artifact' displayName: 'Build amd64 Image and Save as Artifact'
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1
inputs: inputs:
@ -339,8 +339,8 @@ jobs:
cd $(Build.SourcesDirectory)/docker/ cd $(Build.SourcesDirectory)/docker/
docker buildx create --use docker buildx create --use
docker buildx inspect --bootstrap docker buildx inspect --bootstrap
docker buildx build --no-cache --platform linux/arm64 -f Dockerfile.aarch64 -t yacreaderlibraryserver:develop-arm64 --load . docker buildx build --no-cache --platform linux/arm64 -f Dockerfile.aarch64 -t yacreader/yacreaderlibraryserver:develop-arm64 --load .
docker save yacreaderlibraryserver:develop-arm64 -o $(Build.ArtifactStagingDirectory)/arm64.tar docker save yacreader/yacreaderlibraryserver:develop-arm64 -o $(Build.ArtifactStagingDirectory)/arm64.tar
displayName: 'Build arm64 Image and Save as Artifact' displayName: 'Build arm64 Image and Save as Artifact'
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1
inputs: inputs:
@ -386,16 +386,18 @@ jobs:
- script: | - script: |
docker login -u $(dockerUser) -p $(dockerPassword) docker login -u $(dockerUser) -p $(dockerPassword)
docker load -i $(Build.ArtifactStagingDirectory)/amd64.tar for arch in amd64 arm64; do
docker load -i $(Build.ArtifactStagingDirectory)/arm64.tar docker load -i $(Build.ArtifactStagingDirectory)/${arch}.tar
docker manifest create yacreaderlibraryserver:develop \ docker push yacreader/yacreaderlibraryserver:develop-${arch}
--amend yacreaderlibraryserver:develop-amd64 \ rm $(Build.ArtifactStagingDirectory)/${arch}.tar
--amend yacreaderlibraryserver:develop-arm64 done
docker manifest inspect yacreaderlibraryserver:develop
rm $(Build.ArtifactStagingDirectory)/amd64.tar
rm $(Build.ArtifactStagingDirectory)/arm64.tar
docker manifest push yacreader/yacreaderlibraryserver:develop docker buildx create --use
docker buildx imagetools create \
-t yacreader/yacreaderlibraryserver:develop \
yacreader/yacreaderlibraryserver:develop-amd64 \
yacreader/yacreaderlibraryserver:develop-arm64
displayName: 'Push Docker manifest to develop tag' displayName: 'Push Docker manifest to develop tag'
- task: GitHubRelease@1 - task: GitHubRelease@1
inputs: inputs:
@ -445,17 +447,24 @@ jobs:
- script: | - script: |
docker login -u $(dockerUser) -p $(dockerPassword) docker login -u $(dockerUser) -p $(dockerPassword)
docker load -i $(Build.ArtifactStagingDirectory)/amd64.tar for arch in amd64 arm64; do
docker load -i $(Build.ArtifactStagingDirectory)/arm64.tar docker load -i $(Build.ArtifactStagingDirectory)/${arch}.tar
docker manifest create yacreaderlibraryserver:latest \ docker tag yacreader/yacreaderlibraryserver:develop-${arch} yacreader/yacreaderlibraryserver:latest-${arch}
--amend yacreaderlibraryserver:develop-amd64 \ docker push yacreader/yacreaderlibraryserver:latest-${arch}
--amend yacreaderlibraryserver:develop-arm64 rm $(Build.ArtifactStagingDirectory)/${arch}.tar
docker manifest inspect yacreaderlibraryserver:latest done
rm $(Build.ArtifactStagingDirectory)/amd64.tar
rm $(Build.ArtifactStagingDirectory)/arm64.tar
docker tag yacreaderlibraryserver:latest yacreaderlibraryserver:$(VERSION)
docker manifest push yacreaderlibraryserver:latest docker buildx create --use
docker buildx imagetools create \
-t yacreader/yacreaderlibraryserver:latest \
yacreader/yacreaderlibraryserver:latest-amd64 \
yacreader/yacreaderlibraryserver:latest-arm64
docker buildx imagetools create \
-t yacreader/yacreaderlibraryserver:$(VERSION) \
yacreader/yacreaderlibraryserver:latest-amd64 \
yacreader/yacreaderlibraryserver:latest-arm64
displayName: 'Push Docker manifest with latest and VERSION tags' displayName: 'Push Docker manifest with latest and VERSION tags'
- task: GitHubRelease@1 - task: GitHubRelease@1
inputs: inputs: