void prepareForDockerMultiplatformBuild()

in jenkins-pipeline-shared-libraries/vars/cloud.groovy [256:287]


void prepareForDockerMultiplatformBuild(List insecureRegistries = [], List mirrorRegistriesConfig = [], boolean debug = false) {
    cleanDockerMultiplatformBuild(debug)

    // For multiplatform build
    sh 'docker run --rm --privileged --name binfmt docker.io/tonistiigi/binfmt --install all'

    if (debug) { debugDockerMultiplatformBuild() }

    String buildkitdtomlConfig = "debug = ${debug}\n"

    insecureRegistries.each {
        buildkitdtomlConfig += "${getBuildkitRegistryConfigStr(it, true)}"
    }

    mirrorRegistriesConfig.each { mirrorRegistryCfg ->
        buildkitdtomlConfig += "[registry.\"${ mirrorRegistryCfg.name }\"]\n"
        buildkitdtomlConfig += "mirrors = [${ mirrorRegistryCfg.mirrors.collect { "\"${it.url }\"" }.join(',')}]\n"
        mirrorRegistryCfg.mirrors.each { mirror ->
            buildkitdtomlConfig += "${getBuildkitRegistryConfigStr(mirror.url, mirror.insecure)}"
        }
    }

    writeFile(file: 'buildkitd.toml', text: buildkitdtomlConfig)
    if (debug) {
        sh 'cat buildkitd.toml'
    }

    sh 'docker buildx create --name mybuilder --driver docker-container --driver-opt network=host --bootstrap --config ${WORKSPACE}/buildkitd.toml'
    sh 'docker buildx use mybuilder'

    if (debug) { debugDockerMultiplatformBuild() }
}