diff --git a/playbooks/container-image/README.rst b/playbooks/container-image/README.rst index 84c385fbc..af208a6af 100644 --- a/playbooks/container-image/README.rst +++ b/playbooks/container-image/README.rst @@ -223,4 +223,9 @@ entire container and upload it. A dictionary of key value pairs to add to the container build environment. This may be useful to enable buildkit with docker builds for example. +.. zuul:jobvar:: container_builder_image + :default: quay.io/opendevmirror/buildkit:buildx-stable-1 + + The image used to create buildx builders from. + .. _anchors: https://yaml.org/spec/1.2/spec.html#&%20anchor// diff --git a/playbooks/docker-image/README.rst b/playbooks/docker-image/README.rst index 91bffd43b..a9c00e3b2 100644 --- a/playbooks/docker-image/README.rst +++ b/playbooks/docker-image/README.rst @@ -77,4 +77,9 @@ used to supply the same data to all three jobs. A list of tags to be added to the image when promoted. +.. zuul:jobvar:: docker_builder_image + :default: quay.io/opendevmirror/buildkit:buildx-stable-1 + + The image used to create buildx builders from. + .. _anchors: https://yaml.org/spec/1.2/spec.html#&%20anchor// diff --git a/roles/build-container-image/common.rst b/roles/build-container-image/common.rst index 93123c920..f1012839a 100644 --- a/roles/build-container-image/common.rst +++ b/roles/build-container-image/common.rst @@ -270,6 +270,11 @@ promote job assumes `skopeo` is available on the executor. A dictionary of key value pairs to add to the container build environment. This may be useful to enable buildkit with docker builds for example. +.. zuul:rolevar:: container_builder_image + :default: quay.io/opendevmirror/buildkit:buildx-stable-1 + + The image used to create buildx builders from. + .. zuul:rolevar:: promote_container_image_method :default: tag diff --git a/roles/build-container-image/defaults/main.yaml b/roles/build-container-image/defaults/main.yaml index 751860598..838f72246 100644 --- a/roles/build-container-image/defaults/main.yaml +++ b/roles/build-container-image/defaults/main.yaml @@ -1,3 +1,5 @@ zuul_work_dir: "{{ zuul.project.src_dir }}" container_command: podman container_build_extra_env: {} +# synced with roles/build-docker-image/defaults/main.yaml +container_builder_image: quay.io/opendevmirror/buildkit:buildx-stable-1 diff --git a/roles/build-container-image/tasks/setup-buildx.yaml b/roles/build-container-image/tasks/setup-buildx.yaml index 3431fd1ac..64b4a500a 100644 --- a/roles/build-container-image/tasks/setup-buildx.yaml +++ b/roles/build-container-image/tasks/setup-buildx.yaml @@ -9,7 +9,7 @@ # step below. More info here: # https://docs.docker.com/reference/cli/docker/buildx/create/#buildkitd-config - name: Create builder - command: "docker buildx create --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver=docker-container --driver-opt image=quay.io/opendevmirror/buildkit:buildx-stable-1 --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %}" + command: "docker buildx create --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver=docker-container --driver-opt image={{ container_builder_image }} --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %}" when: inventory_hostname == ansible_play_hosts[0] - name: Add host key to known_hosts @@ -18,7 +18,7 @@ delegate_to: "{{ ansible_play_hosts[0] }}" - name: Append builders from other nodes - command: "docker buildx create --append --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver-opt image=quay.io/opendevmirror/buildkit:buildx-stable-1 --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %} ssh://{{ ansible_user }}@{{ ansible_host }}" + command: "docker buildx create --append --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver-opt image={{ container_builder_image }} --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %} ssh://{{ ansible_user }}@{{ ansible_host }}" when: inventory_hostname != ansible_play_hosts[0] delegate_to: "{{ ansible_play_hosts[0] }}" diff --git a/roles/build-docker-image/common.rst b/roles/build-docker-image/common.rst index 93a547bb7..fa9dd4931 100644 --- a/roles/build-docker-image/common.rst +++ b/roles/build-docker-image/common.rst @@ -163,4 +163,9 @@ using this role. ``linux/ppc64le``, ``linux/s390x``, ``linux/386``, ``linux/arm/v7``, ``linux/arm/v6``. +.. zuul:rolevar:: docker_builder_image + :default: quay.io/opendevmirror/buildkit:buildx-stable-1 + + The image used to create buildx builders from. + .. _anchors: https://yaml.org/spec/1.2/spec.html#&%20anchor// diff --git a/roles/build-docker-image/defaults/main.yaml b/roles/build-docker-image/defaults/main.yaml index 6d402ceb0..847eef654 100644 --- a/roles/build-docker-image/defaults/main.yaml +++ b/roles/build-docker-image/defaults/main.yaml @@ -2,3 +2,5 @@ zuul_work_dir: "{{ zuul.project.src_dir }}" docker_dockerfile: "Dockerfile" docker_registry: '' docker_use_buildkit: false +# synced with roles/build-container-image/defaults/main.yaml +docker_builder_image: quay.io/opendevmirror/buildkit:buildx-stable-1 diff --git a/roles/build-docker-image/tasks/setup-buildx.yaml b/roles/build-docker-image/tasks/setup-buildx.yaml index 1db87f17e..aa31ff975 100644 --- a/roles/build-docker-image/tasks/setup-buildx.yaml +++ b/roles/build-docker-image/tasks/setup-buildx.yaml @@ -11,7 +11,7 @@ # step below. More info here: # https://docs.docker.com/reference/cli/docker/buildx/create/#buildkitd-config - name: Create builder - command: "docker buildx create --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver=docker-container --driver-opt image=quay.io/opendevmirror/buildkit:buildx-stable-1 --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %}" + command: "docker buildx create --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver=docker-container --driver-opt image={{ docker_builder_image }} --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %}" environment: DOCKER_CLI_EXPERIMENTAL: enabled when: inventory_hostname == ansible_play_hosts[0] @@ -22,7 +22,7 @@ delegate_to: "{{ ansible_play_hosts[0] }}" - name: Append builders from other nodes - command: "docker buildx create --append --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver=docker-container --driver-opt image=quay.io/opendevmirror/buildkit:buildx-stable-1 --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %} ssh://{{ ansible_user }}@{{ ansible_host }}" + command: "docker buildx create --append --name mybuilder --node {{ inventory_hostname | replace('-', '_') }} --driver=docker-container --driver-opt image={{ docker_builder_image }} --driver-opt network=host{% if buildset_registry is defined %} --config /etc/buildkit/buildkitd.toml {% endif %} ssh://{{ ansible_user }}@{{ ansible_host }}" environment: DOCKER_CLI_EXPERIMENTAL: enabled when: inventory_hostname != ansible_play_hosts[0]