fix(pipeline): update buildx create command to specify platforms for multi-arch images
Signed-off-by: 孙振宇 <>
This commit is contained in:
parent
6bf7687dd5
commit
0ff368f502
@ -58,14 +58,9 @@ class ImageBuilder {
|
|||||||
if (builderType == ImageBuilderTypes.DOCKER_IN_DOCKER && architectures.size() > 1) {
|
if (builderType == ImageBuilderTypes.DOCKER_IN_DOCKER && architectures.size() > 1) {
|
||||||
steps.log.warn("ImageBuilder", "If you want to build multi-arch images and using Docker in Docker (DIND) as builder, system will using buildx to replace build command.")
|
steps.log.warn("ImageBuilder", "If you want to build multi-arch images and using Docker in Docker (DIND) as builder, system will using buildx to replace build command.")
|
||||||
steps.log.info("ImageBuilder", "Creating buildx builder with name: multiarch-builder-${name}")
|
steps.log.info("ImageBuilder", "Creating buildx builder with name: multiarch-builder-${name}")
|
||||||
steps.sh "docker buildx create --use --name multiarch-builder-${name}"
|
steps.sh "docker buildx create --use --name multiarch-builder-${name} --platform ${architectures.join(",")}"
|
||||||
steps.log.info("ImageBuilder", "Inspecting buildx builder with name: multiarch-builder-${name}")
|
steps.log.info("ImageBuilder", "Inspecting buildx builder with name: multiarch-builder-${name}")
|
||||||
steps.sh "docker buildx inspect --bootstrap"
|
steps.sh "docker buildx inspect --bootstrap"
|
||||||
steps.log.info("ImageBuilder", "Register clean up hook for buildx builder deletion for builder named: multiarch-builder-${name}")
|
|
||||||
def context = steps.$build()
|
|
||||||
context.cleanup {
|
|
||||||
steps.sh "docker buildx rm multiarch-builder-${name} || true"
|
|
||||||
}
|
|
||||||
this.buildxBuilderName = "multiarch-builder-${name}"
|
this.buildxBuilderName = "multiarch-builder-${name}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,6 +73,7 @@ class ImageBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def build() {
|
def build() {
|
||||||
|
try {
|
||||||
steps.log.info("ImageBuilder", "Building image with ${builderType.builder}")
|
steps.log.info("ImageBuilder", "Building image with ${builderType.builder}")
|
||||||
steps.log.info("ImageBuilder", "Workspace sets to: ${workspace}")
|
steps.log.info("ImageBuilder", "Workspace sets to: ${workspace}")
|
||||||
steps.log.info("ImageBuilder", "Using dockerfile at: ${dockerfile}, context root sets to: ${contextRoot}")
|
steps.log.info("ImageBuilder", "Using dockerfile at: ${dockerfile}, context root sets to: ${contextRoot}")
|
||||||
@ -136,5 +132,19 @@ class ImageBuilder {
|
|||||||
default:
|
default:
|
||||||
steps.error("Unsupported builder type: ${builderType.builder}")
|
steps.error("Unsupported builder type: ${builderType.builder}")
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
steps.log.error("ImageBuilder", "Failed to build image: ${e.message}")
|
||||||
|
throw e
|
||||||
|
} finally {
|
||||||
|
if (buildxBuilderName != null && !buildxBuilderName.isEmpty() && architectures.size() > 1) {
|
||||||
|
try {
|
||||||
|
steps.log.info("ImageBuilder", "Cleaning up buildx builder: ${buildxBuilderName}")
|
||||||
|
steps.sh "docker buildx rm ${buildxBuilderName} || true"
|
||||||
|
} catch (Exception e) {
|
||||||
|
steps.log.warn("ImageBuilder", "Failed to cleanup buildx builder: ${e.message}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user