-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(docker-buildx): use correct buildx variable for cross-compilation #158
Conversation
`BUILDPLATFORM` is the architecture for the machine building the image. this var is not for cross-compilation. `TARGETPLATFORM` is the correct variable to use for cross-compilation.
don't know who to ping for this PR, however PR is ready for review |
Makefile
Outdated
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross | ||
docker-buildx: ## Build and push docker image for the manager for cross-platform support | ||
# copy existing Dockerfile and insert --platform=${TARGETPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile | ||
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{TARGETPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{TARGETPLATFORM\}/' Dockerfile > Dockerfile.cross |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jon-nfc It looks like this is the most up to date version of this command, I haven't tested this out, but I think we should probably take the latest guidance from the ansible-operator-sdk folks:
If you agree, could you please update the PR to reflect what is shown there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see #158 (comment).
response wouldn't post to this thread
the only response I have for this review is "what????" Just so I'm clear on your wishes. You wish for me to ensure that the docker-buildx section within the make file is the same as the one located at the link you posted? which reverts all changes this PR puts forward......
which part? what I've done or at the link posted?
It appears no one has tested the command at all. I have, which confirmed my suspicions when i looked at the code, that it's wrong.
the word to denote everything before it is now irrelevant
Think? what's to think about, the code is wrong. What guidance? their implementation is wrong too. This is a clear cut case of monkey theory. From my perspective I appear to have incorrectly assumed that the changes I did along with the comments in the commit and PR description were more obvious than not for the explanation of what's wrong and why it was corrected.
no agreement here, what is in the codebase is wrong, that's why I raised the PR. If it wasn't wrong there would be no PR. JustificationAs there is no comments within commits, no PR's found specifically relating to the
Prior to this PR - Feature setBefore the changes were made within this PR, cross platform support is as follows: To build an image with the same architecture as the build machine make docker-build
# to change the image name and tag,
IMG=image-name:image-tag makefile docker-build Multi-arch image builds make docker-buildx This command fails as the container having the same architecture as the machine that built the image. # no specifying of platforms, uses default to build images for `PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le`
make docker-buildx running command from commit 0e00851sysadmin@laptop2:~/git/eda-server-operator$ git log -2
commit 3911fbab0c6153a4e3c3f54323c16a8ad113e78f (HEAD -> main, origin/main, origin/HEAD)
Author: Jon <[email protected]>
Date: Tue Jan 2 21:49:31 2024 +0930
fix(docker-buildx): use correct buidx variable for cross-compilation
`BUILDPLATFORM` is the architecture for the machine building the image. this var is not for cross-compilation.
`TARGETPLATFORM` is the correct variable to use for cross-compilation.
commit 0e00851ff42236c209b1253aab55c069714df411
Merge: db800aa b430e9b
Author: Christian Adams <[email protected]>
Date: Fri Dec 15 14:28:16 2023 -0500
Merge pull request #156 from rooftopcellist/remote-scheme-redirect
Use $remote_scheme to correctly set the HTTP protocol the client is used
sysadmin@laptop2:~/git/eda-server-operator$ git reset 0e00851ff42236c209b1253aab55c069714df411 --hard
HEAD is now at 0e00851 Merge pull request #156 from rooftopcellist/remote-scheme-redirect
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$ make docker-buildx
make: *** No rule to make target 'test', needed by 'docker-buildx'. Stop.
sysadmin@laptop2:~/git/eda-server-operator$ to build ARM64 image you would use if PLATFORM=linux/arm64 make docker-buildx however this doesn't work. why? the wrong variable is used in the dockerfile. this command only builds an image of the same architecture as the machine that built it. Bottom line, prior to this PR multi-arch builds were not possible as the declaration was wrong. They only way one could create an image of a different architecture than at quay.io registry is to find a build machine with the desired architecture. PR Changes - Feature Setfix one
remove fix one, remove `test` from declarationsysadmin@laptop2:~/git/eda-server-operator$ git log -1
commit 0e00851ff42236c209b1253aab55c069714df411 (HEAD -> main)
Merge: db800aa b430e9b
Author: Christian Adams <[email protected]>
Date: Fri Dec 15 14:28:16 2023 -0500
Merge pull request #156 from rooftopcellist/remote-scheme-redirect
Use $remote_scheme to correctly set the HTTP protocol the client is used
sysadmin@laptop2:~/git/eda-server-operator$ git diff
diff --git a/Makefile b/Makefile
index e89853d..b69cebe 100644
--- a/Makefile
+++ b/Makefile
@@ -92,7 +92,7 @@ docker-push: ## Push docker image with the manager.
# To properly provided solutions that supports more than one platform you should use this option.
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
.PHONY: docker-buildx
-docker-buildx: test ## Build and push docker image for the manager for cross-platform support
+docker-buildx: ## Build and push docker image for the manager for cross-platform support
# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
- docker buildx create --name project-v3-builder
sysadmin@laptop2:~/git/eda-server-operator$
fix one, build outputsysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$ make docker-buildx
# copy existing Dockerfile and insert --platform= into Dockerfile.cross, and preserve the original Dockerfile
sed -e '1 s/\(^FROM\)/FROM --platform=\$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
docker buildx create --name project-v3-builder
ERROR: existing instance for "project-v3-builder" but no append mode, specify --node to make changes for existing instances
make: [Makefile:98: docker-buildx] Error 1 (ignored)
docker buildx use project-v3-builder
docker buildx build --push --platform=linux/arm64,linux/amd64,linux/s390x,linux/ppc64le --tag quay.io/ansible/eda-server-operator:0.0.1 -f Dockerfile.cross .
[+] Building 59.5s (5/11) docker-container:project-v3-builder
=> [internal] booting buildkit 4.7s
=> => pulling image moby/buildkit:buildx-stable-1 3.4s
=> => creating container buildx_buildkit_project-v3-builder0 1.2s
=> [internal] load build definition from Dockerfile.cross 0.2s
=> => transferring dockerfile: 598B 0.0s
=> [linux/amd64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.9s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 171B 0.0s
=> [internal] load build context 0.2s
=> => transferring context: 137.99kB 0.1s
=> [linux/amd64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660e 50.5s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.1s
=> => sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 25.02MB / 25.02MB 9.8s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 1.2s
=> => sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 581B / 581B 1.9s
=> => sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 9.47kB / 9.47kB 2.4s
=> => sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 63.96MB / 64.88MB 48.7s
=> => sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 262B / 262B 1.4s
=> => sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 13.94kB / 13.94kB 1.3s
[+] Building 59.6s (5/11) docker-container:project-v3-builder
[+] Building 122.6s (12/12) FINISHED docker-container:project-v3-builder
=> [internal] booting buildkit 4.7s
=> => pulling image moby/buildkit:buildx-stable-1 3.4s
=> => creating container buildx_buildkit_project-v3-builder0 1.2s
=> [internal] load build definition from Dockerfile.cross 0.2s
=> => transferring dockerfile: 598B 0.0s
=> [linux/amd64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.9s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 171B 0.0s
=> [internal] load build context 0.2s
=> => transferring context: 137.99kB 0.1s
=> [linux/amd64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660e 65.9s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.1s
=> => sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 25.02MB / 25.02MB 9.8s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 1.2s
=> => sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 581B / 581B 1.9s
=> => sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 9.47kB / 9.47kB 2.4s
=> => sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 64.88MB / 64.88MB 48.9s
=> => sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 262B / 262B 1.4s
=> => sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 13.94kB / 13.94kB 1.3s
=> => sha256:649e5534d134eac0f942db1db2a7491173c90e40888923ebf261d0277c2ab73e 79.14MB / 79.14MB 54.9s
=> => extracting sha256:649e5534d134eac0f942db1db2a7491173c90e40888923ebf261d0277c2ab73e 2.4s
=> => extracting sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 4.0s
=> => extracting sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 0.1s
=> => extracting sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 0.0s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s
=> => extracting sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 0.3s
=> [linux/amd64 2/6] COPY requirements.yml /opt/ansible/requirements.yml 6.7s
=> [linux/amd64 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 24.6s
=> [linux/amd64 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.3s
=> [linux/amd64 5/6] COPY roles/ /opt/ansible/roles/ 0.3s
=> [linux/amd64 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.3s
=> ERROR exporting to image 14.6s
=> => exporting layers 1.0s
=> => exporting manifest sha256:4aad71e523bfa2571dfa178376ea3cfc76a747ff899c061c1d0e4155aaaa5984 0.0s
=> => exporting config sha256:118a7d1231bc5626ded1e85ed81448f12b4328ca1bdee218fe93b828aba4e774 0.0s
=> => exporting attestation manifest sha256:a72ac085ce1b60c8ff11f4a9507fdc58c036bbfab95b04af5bcc7563c268e34f 0.1s
=> => exporting manifest sha256:3d537b7ef953242d0fc41e4c67461ef32b949ac1012885b04f4efe0847e301ef 0.0s
=> => exporting config sha256:3557e749cf555f7ab1249bec939af9a039eeca8de03e2e3bad5cec9f32195446 0.1s
=> => exporting attestation manifest sha256:805724a762febfba3d372f36bba54e1ee0840633943c6e5a95ed84f912c28bd9 0.1s
=> => exporting manifest sha256:e41cf0b3d8b7323e3cde3929ab611939ebcae6730eabcb86752edc235787729e 0.1s
=> => exporting config sha256:4e50fafc4560a007c9ed1e6d722bc867096411f4ca120473feea629854cb10a6 0.1s
=> => exporting attestation manifest sha256:78401f4933ff6b55b475108eeee784922ea202449f2e525d2f0c5723949a4d4f 0.1s
=> => exporting manifest sha256:41e68f590ea6bd136f2c5b0972488c196e411c0c2a64a999d63a92172607a29f 0.0s
=> => exporting config sha256:3ab7e196371e79bc3062f65cbc34428fa8dac539bec1cbb8979d76bf453c058a 0.0s
=> => exporting attestation manifest sha256:52294ab7458972186c6836e75d43289b44dd3eae8691f68686306f9587c4c862 0.1s
=> => exporting manifest list sha256:01adae3d24bfea09abe09d8dbf0f80a67c89d37cef893dde129b0c3c2eae6a4d 0.1s
=> => pushing layers 12.5s
------
> exporting to image:
------
ERROR: failed to solve: failed to push quay.io/ansible/eda-server-operator:0.0.1: unexpected status from POST request to https://quay.io/v2/ansible/eda-server-operator/blobs/uploads/: 401 UNAUTHORIZED
make: [Makefile:100: docker-buildx] Error 1 (ignored)
docker buildx rm project-v3-builder
project-v3-builder removed
rm Dockerfile.cross
sysadmin@laptop2:~/git/eda-server-operator$
Fix two - use correct variables for multi-arch supportI'm of the opinion that variables
fix two, use correct variablesysadmin@laptop2:~/git/eda-server-operator$ git log -1
commit 0e00851ff42236c209b1253aab55c069714df411 (HEAD -> main)
Merge: db800aa b430e9b
Author: Christian Adams <[email protected]>
Date: Fri Dec 15 14:28:16 2023 -0500
Merge pull request #156 from rooftopcellist/remote-scheme-redirect
Use $remote_scheme to correctly set the HTTP protocol the client is used
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$ git diff
diff --git a/Makefile b/Makefile
index e89853d..b9a7900 100644
--- a/Makefile
+++ b/Makefile
@@ -92,9 +92,9 @@ docker-push: ## Push docker image with the manager.
# To properly provided solutions that supports more than one platform you should use this option.
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
.PHONY: docker-buildx
-docker-buildx: test ## Build and push docker image for the manager for cross-platform support
- # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
- sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
+docker-buildx: ## Build and push docker image for the manager for cross-platform support
+ # copy existing Dockerfile and insert --platform=${TARGETPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
+ sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{TARGETPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{TARGETPLATFORM\}/' Dockerfile > Dockerfile.cross
- docker buildx create --name project-v3-builder
docker buildx use project-v3-builder
- docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross .
sysadmin@laptop2:~/git/eda-server-operator$ now lets build multi-arch images, fix two, command outputsysadmin@laptop2:~/git/eda-server-operator$ make docker-buildx
# copy existing Dockerfile and insert --platform= into Dockerfile.cross, and preserve the original Dockerfile
sed -e '1 s/\(^FROM\)/FROM --platform=\$\{TARGETPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$\{TARGETPLATFORM\}/' Dockerfile > Dockerfile.cross
docker buildx create --name project-v3-builder
project-v3-builder
docker buildx use project-v3-builder
docker buildx build --push --platform=linux/arm64,linux/amd64,linux/s390x,linux/ppc64le --tag quay.io/ansible/eda-server-operator:0.0.1 -f Dockerfile.cross .
[+] Building 319.1s (33/33) FINISHED docker-container:project-v3-builder
=> [internal] booting buildkit 4.0s
=> => pulling image moby/buildkit:buildx-stable-1 2.8s
=> => creating container buildx_buildkit_project-v3-builder0 1.2s
=> [internal] load build definition from Dockerfile.cross 0.4s
=> => transferring dockerfile: 599B 0.0s
=> [linux/amd64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 4.7s
=> [linux/s390x internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 6.4s
=> [linux/ppc64le internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 6.2s
=> [linux/arm64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 6.3s
=> [internal] load .dockerignore 0.2s
=> => transferring context: 171B 0.0s
=> [internal] load build context 0.5s
=> => transferring context: 137.99kB 0.0s
=> [linux/s390x 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 190.4s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.6s
=> => sha256:98b78ab39fa7a7ce7683d3d924a937f5f887e9955e6b9c789ced00625f8ba1ba 24.70MB / 24.70MB 77.3s
=> => sha256:ba1279a54461b9e9f57571bae247b61978c771bfe48fc5c7ef9e70f7db815661 581B / 581B 2.4s
=> => sha256:0949346439167993cbab3851e050f69388f94a7d2ed82602958c59496bed89c8 9.73kB / 9.73kB 2.6s
=> => sha256:be97cdf74f6401d15615bcb38b5bfb25446af8717efa08698360aa2d888b140d 60.13MB / 60.13MB 96.0s
=> => sha256:eadc43eb1208180c78aa0db936dac2e706d8c8ac66b2b0dadd15b4a241f58c8f 76.12MB / 76.12MB 92.1s
=> => extracting sha256:eadc43eb1208180c78aa0db936dac2e706d8c8ac66b2b0dadd15b4a241f58c8f 2.4s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.2s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:be97cdf74f6401d15615bcb38b5bfb25446af8717efa08698360aa2d888b140d 4.4s
=> => extracting sha256:0949346439167993cbab3851e050f69388f94a7d2ed82602958c59496bed89c8 1.7s
=> => extracting sha256:ba1279a54461b9e9f57571bae247b61978c771bfe48fc5c7ef9e70f7db815661 1.3s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 2.0s
=> => extracting sha256:98b78ab39fa7a7ce7683d3d924a937f5f887e9955e6b9c789ced00625f8ba1ba 1.3s
=> [linux/arm64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 129.1s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.5s
=> => sha256:0617eed5fbc6af48b97c3e3c5c4bf22820e98f67294a493a95ac1c655c654258 23.36MB / 23.36MB 18.7s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.5s
=> => sha256:460a2b58971a09387c73af91b06462e7d289da2d80ef6ef42a4cca6a62d75512 581B / 581B 2.5s
=> => sha256:9d060052cff3125e346031e6e4a5ca2c51a48ab9ac9f3c4684d18a4b1ceaf3fc 9.04kB / 9.04kB 2.2s
=> => sha256:0e0b4f8ae73926163dd7c0fcf5c5bf42448be9b69ee0c8dba7ddc21c16f93663 64.55MB / 64.55MB 110.8s
=> => sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 13.94kB / 13.94kB 0.9s
=> => sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 263B / 263B 2.4s
=> => sha256:02007dd5742cf0e02af80120d21c02e90f46c6137dccdd56e38333253ebf8386 76.75MB / 76.75MB 116.2s
=> => extracting sha256:02007dd5742cf0e02af80120d21c02e90f46c6137dccdd56e38333253ebf8386 2.6s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.0s
=> => extracting sha256:0e0b4f8ae73926163dd7c0fcf5c5bf42448be9b69ee0c8dba7ddc21c16f93663 4.0s
=> => extracting sha256:9d060052cff3125e346031e6e4a5ca2c51a48ab9ac9f3c4684d18a4b1ceaf3fc 0.1s
=> => extracting sha256:460a2b58971a09387c73af91b06462e7d289da2d80ef6ef42a4cca6a62d75512 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s
=> => extracting sha256:0617eed5fbc6af48b97c3e3c5c4bf22820e98f67294a493a95ac1c655c654258 0.3s
=> [linux/amd64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 255.6s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.5s
=> => sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 25.02MB / 25.02MB 47.2s
=> => sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 581B / 581B 0.5s
=> => sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 9.47kB / 9.47kB 0.5s
=> => sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 64.88MB / 64.88MB 67.0s
=> => sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 262B / 262B 1.5s
=> => sha256:649e5534d134eac0f942db1db2a7491173c90e40888923ebf261d0277c2ab73e 79.14MB / 79.14MB 50.8s
=> => extracting sha256:649e5534d134eac0f942db1db2a7491173c90e40888923ebf261d0277c2ab73e 2.3s
=> => extracting sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 1.2s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.9s
=> => extracting sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 5.2s
=> => extracting sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 1.0s
=> => extracting sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 1.3s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 1.5s
=> => extracting sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 1.3s
=> [linux/ppc64le 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 241.0s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.5s
=> => sha256:b867f87590b8f0017ea6c633ebb66808a0e188d5f97b75e0b39930a1540582a7 23.07MB / 23.07MB 36.0s
=> => sha256:1c08c84a47af5e825c04fd537ab7decd04906a1c1a5a34ee181ce00489149fb7 582B / 582B 1.8s
=> => sha256:9817a6f828801933d0dc746dd105d3378bac07789a680aef7dd8269f3e7160c8 9.60kB / 9.60kB 1.9s
=> => sha256:ba64f8b2f828edb6013769c954664bb3d5eb961b006f13c8a57bf31c6a398dad 60.28MB / 60.28MB 63.3s
=> => sha256:ffccdb4e3c404cc1cc140915ca062919bfaedea8462b50f2b54696124f0e29b7 85.75MB / 85.75MB 109.5s
=> => extracting sha256:ffccdb4e3c404cc1cc140915ca062919bfaedea8462b50f2b54696124f0e29b7 2.7s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:ba64f8b2f828edb6013769c954664bb3d5eb961b006f13c8a57bf31c6a398dad 3.8s
=> => extracting sha256:9817a6f828801933d0dc746dd105d3378bac07789a680aef7dd8269f3e7160c8 0.1s
=> => extracting sha256:1c08c84a47af5e825c04fd537ab7decd04906a1c1a5a34ee181ce00489149fb7 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.1s
=> => extracting sha256:b867f87590b8f0017ea6c633ebb66808a0e188d5f97b75e0b39930a1540582a7 0.3s
=> [linux/arm64 2/6] COPY requirements.yml /opt/ansible/requirements.yml 10.8s
=> [linux/arm64 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 49.1s
=> [linux/arm64 4/6] COPY watches.yaml /opt/ansible/watches.yaml 1.7s
=> [linux/s390x 2/6] COPY requirements.yml /opt/ansible/requirements.yml 0.4s
=> [linux/arm64 5/6] COPY roles/ /opt/ansible/roles/ 0.5s
=> [linux/s390x 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 38.4s
=> [linux/arm64 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.4s
=> [linux/s390x 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/s390x 5/6] COPY roles/ /opt/ansible/roles/ 0.3s
=> [linux/s390x 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.4s
=> [linux/ppc64le 2/6] COPY requirements.yml /opt/ansible/requirements.yml 19.2s
=> [linux/amd64 2/6] COPY requirements.yml /opt/ansible/requirements.yml 4.2s
=> [linux/ppc64le 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 30.2s
=> [linux/amd64 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 17.5s
=> [linux/amd64 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/amd64 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/amd64 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.3s
=> [linux/ppc64le 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/ppc64le 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/ppc64le 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.2s
=> ERROR exporting to image 15.6s
=> => exporting layers 3.8s
=> => exporting manifest sha256:cf6d90d20cc4a6db1e38104dcffdc52e218adb2db69a5d309038e1398ca3cdc4 0.1s
=> => exporting config sha256:5efa88dca4c4f78a8aa2c2cf5d643dc4d9449318482510c4677794116f21e3d9 0.0s
=> => exporting attestation manifest sha256:13970e0ac35553964e82e7a64db505888fa556b268664fef5caf2646207fcd73 0.1s
=> => exporting manifest sha256:3efe03da6f792ec9403db94254139cbeccea6dcde00b5074b70772d6669472b0 0.1s
=> => exporting config sha256:f0483da4e0c6da423ade273b4f0cb86978e17ae307809ee0d7cbfa00dec41efc 0.0s
=> => exporting attestation manifest sha256:f75ee811488ee690068c5bb6cf55aba4d0d858379457b97481fc7d4c267cf59d 0.1s
=> => exporting manifest sha256:55e8577548fe11b1ca395efaaf2fc1b068cf639d5483f02f55577a165e29bcc6 0.1s
=> => exporting config sha256:69c1898e794f953d22f8b80c045a8abb2754b4e2e61fd4b68aab5aa5c1eded72 0.0s
=> => exporting attestation manifest sha256:e5778031818c0206ad96e2714f4a0df9691126bae5aa00f35e1e50053aca6edf 0.1s
=> => exporting manifest sha256:d1a841e2cec40fbcc06903fe8ff5111b2b41ab1b4a3a58fd76c9eb6caea25b72 0.1s
=> => exporting config sha256:da0c68d365abda2852b71b4669c31c5babbfa34ce0fbfec566814a33b5141d46 0.1s
=> => exporting attestation manifest sha256:efea20f5e49350da5da3cbf2835a3e4ca2b8bd597991c32e6a96b3c4a057bb3b 0.2s
=> => exporting manifest list sha256:b6f21ac052af572035bcae57849ae99ad1ba64294ff3bf9c3d53a9f7ccce0ebc 0.1s
=> => pushing layers 10.4s
------
> exporting to image:
------
ERROR: failed to solve: failed to push quay.io/ansible/eda-server-operator:0.0.1: unexpected status from POST request to https://quay.io/v2/ansible/eda-server-operator/blobs/uploads/: 401 UNAUTHORIZED
make: [Makefile:100: docker-buildx] Error 1 (ignored)
docker buildx rm project-v3-builder
project-v3-builder removed
rm Dockerfile.cross
sysadmin@laptop2:~/git/eda-server-operator$
Demonstration of building images that are different to the build machines architecture `linux/arm64,linux/s390x`sysadmin@laptop2:~/git/eda-server-operator$ git log -2
commit 3911fbab0c6153a4e3c3f54323c16a8ad113e78f (HEAD -> main, origin/main, origin/HEAD)
Author: Jon <[email protected]>
Date: Tue Jan 2 21:49:31 2024 +0930
fix(docker-buildx): use correct buidx variable for cross-compilation
`BUILDPLATFORM` is the architecture for the machine building the image. this var is not for cross-compilation.
`TARGETPLATFORM` is the correct variable to use for cross-compilation.
commit 0e00851ff42236c209b1253aab55c069714df411
Merge: db800aa b430e9b
Author: Christian Adams <[email protected]>
Date: Fri Dec 15 14:28:16 2023 -0500
Merge pull request #156 from rooftopcellist/remote-scheme-redirect
Use $remote_scheme to correctly set the HTTP protocol the client is used
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$ git diff
sysadmin@laptop2:~/git/eda-server-operator$
sysadmin@laptop2:~/git/eda-server-operator$ PLATFORMS='linux/arm64,linux/s390x' make docker-buildx
# copy existing Dockerfile and insert --platform= into Dockerfile.cross, and preserve the original Dockerfile
sed -e '1 s/\(^FROM\)/FROM --platform=\$\{TARGETPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$\{TARGETPLATFORM\}/' Dockerfile > Dockerfile.cross
docker buildx create --name project-v3-builder
project-v3-builder
docker buildx use project-v3-builder
docker buildx build --push --platform=linux/arm64,linux/s390x --tag quay.io/ansible/eda-server-operator:0.0.1 -f Dockerfile.cross .
[+] Building 190.6s (19/19) FINISHED docker-container:project-v3-builder
=> [internal] booting buildkit 3.4s
=> => pulling image moby/buildkit:buildx-stable-1 2.5s
=> => creating container buildx_buildkit_project-v3-builder0 0.9s
=> [internal] load build definition from Dockerfile.cross 0.2s
=> => transferring dockerfile: 599B 0.0s
=> [linux/s390x internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.5s
=> [linux/arm64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.5s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 171B 0.0s
=> [internal] load build context 0.2s
=> => transferring context: 137.99kB 0.0s
=> [linux/s390x 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 121.7s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.2s
=> => sha256:98b78ab39fa7a7ce7683d3d924a937f5f887e9955e6b9c789ced00625f8ba1ba 24.70MB / 24.70MB 17.2s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.6s
=> => sha256:ba1279a54461b9e9f57571bae247b61978c771bfe48fc5c7ef9e70f7db815661 581B / 581B 0.9s
=> => sha256:0949346439167993cbab3851e050f69388f94a7d2ed82602958c59496bed89c8 9.73kB / 9.73kB 1.0s
=> => sha256:be97cdf74f6401d15615bcb38b5bfb25446af8717efa08698360aa2d888b140d 60.13MB / 60.13MB 115.2s
=> => sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 13.94kB / 13.94kB 1.4s
=> => sha256:eadc43eb1208180c78aa0db936dac2e706d8c8ac66b2b0dadd15b4a241f58c8f 76.12MB / 76.12MB 109.5s
=> => sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 263B / 263B 0.9s
=> => extracting sha256:eadc43eb1208180c78aa0db936dac2e706d8c8ac66b2b0dadd15b4a241f58c8f 2.4s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:be97cdf74f6401d15615bcb38b5bfb25446af8717efa08698360aa2d888b140d 4.0s
=> => extracting sha256:0949346439167993cbab3851e050f69388f94a7d2ed82602958c59496bed89c8 0.1s
=> => extracting sha256:ba1279a54461b9e9f57571bae247b61978c771bfe48fc5c7ef9e70f7db815661 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s
=> => extracting sha256:98b78ab39fa7a7ce7683d3d924a937f5f887e9955e6b9c789ced00625f8ba1ba 0.3s
=> [linux/arm64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 140.3s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.2s
=> => sha256:0617eed5fbc6af48b97c3e3c5c4bf22820e98f67294a493a95ac1c655c654258 23.36MB / 23.36MB 84.4s
=> => sha256:460a2b58971a09387c73af91b06462e7d289da2d80ef6ef42a4cca6a62d75512 581B / 581B 0.8s
=> => sha256:9d060052cff3125e346031e6e4a5ca2c51a48ab9ac9f3c4684d18a4b1ceaf3fc 9.04kB / 9.04kB 0.5s
=> => sha256:0e0b4f8ae73926163dd7c0fcf5c5bf42448be9b69ee0c8dba7ddc21c16f93663 64.55MB / 64.55MB 68.7s
=> => sha256:02007dd5742cf0e02af80120d21c02e90f46c6137dccdd56e38333253ebf8386 76.75MB / 76.75MB 44.7s
=> => extracting sha256:02007dd5742cf0e02af80120d21c02e90f46c6137dccdd56e38333253ebf8386 2.4s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:0e0b4f8ae73926163dd7c0fcf5c5bf42448be9b69ee0c8dba7ddc21c16f93663 3.9s
=> => extracting sha256:9d060052cff3125e346031e6e4a5ca2c51a48ab9ac9f3c4684d18a4b1ceaf3fc 0.1s
=> => extracting sha256:460a2b58971a09387c73af91b06462e7d289da2d80ef6ef42a4cca6a62d75512 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.1s
=> => extracting sha256:0617eed5fbc6af48b97c3e3c5c4bf22820e98f67294a493a95ac1c655c654258 0.4s
=> [linux/s390x 2/6] COPY requirements.yml /opt/ansible/requirements.yml 7.6s
=> [linux/s390x 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 24.9s
=> [linux/arm64 2/6] COPY requirements.yml /opt/ansible/requirements.yml 8.0s
=> [linux/arm64 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 23.8s
=> [linux/s390x 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/s390x 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/s390x 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.2s
=> [linux/arm64 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/arm64 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/arm64 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.2s
=> ERROR exporting to image 9.9s
=> => exporting layers 1.8s
=> => exporting manifest sha256:ef0ab43b98a7ac5a495a1a3a18ca876a5bba26430dc7e4a28c230288b91016eb 0.1s
=> => exporting config sha256:3b1ef05f0695bbd412016bc80d614869ddab5ace1ee1a7395ecd944d77d514eb 0.0s
=> => exporting attestation manifest sha256:38619c6bdcf15e88e353eef6ee5c75d09e3131d1358f5a0dba592fab85becd7a 0.1s
=> => exporting manifest sha256:8b51e56382cf5d21563925a38d496b22401f1b4f48dba44a2b1c153a83183da3 0.0s
=> => exporting config sha256:d6051cc41a3167842c31a1bdbf41ff9cfbce74704fda18f3d09b7f7459063544 0.0s
=> => exporting attestation manifest sha256:ffeb6d399cf102882b447ff70adf198733e7db024e1e3fe123b9e97388f7bbbd 0.1s
=> => exporting manifest list sha256:d75e1a158fb055d016aa3e95dbd6353c640256458f9535974a86360f320b1ec4 0.1s
=> => pushing layers 7.4s
------
> exporting to image:
------
ERROR: failed to solve: failed to push quay.io/ansible/eda-server-operator:0.0.1: unexpected status from POST request to https://quay.io/v2/ansible/eda-server-operator/blobs/uploads/: 401 UNAUTHORIZED
make: [Makefile:100: docker-buildx] Error 1 (ignored)
docker buildx rm project-v3-builder
project-v3-builder removed
rm Dockerfile.cross
sysadmin@laptop2:~/git/eda-server-operator$
FYI, the machine I ran these commands from is AMD64 - AMD Ryzen 7. sysadmin@laptop2:~$ uname -a
Linux laptop2 6.1.0-14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.64-1 (2023-11-30) x86_64 GNU/Linux
sysadmin@laptop2:~$ What My fixes bring feature wise is the following:
To summarize. this is most definitely a long winded reply, which unfortunately from your review demonstrated is required. I do not make a habit of wasting time, for example raising a pull request for something that the review alluded to was "not the way we do it". Simple fact is that I'm intending on using this product and require arm64 support and it's currently broken. Thanks to the open source nature of this project, I can fix it, so I did. I know it was broken by looking at the code which was also confirmed when I tested it. At the end of the day, it is not my place to determine a requirement that forms part of the "projects" direction. Fact is what's the current code base is wrong for cross-platform image builds and this PR corrects it. I'm happy to discuss further these changes I have made; for which the explanation above should demonstrate quite clearly on why they were needed. If however the approach is to follow another monkey, who I will add has also got it wrong. Then please save us both the time and close this PR. Eagerly awaiting your response. |
@rooftopcellist My understanding is that inserting In contrast, the Dockerfile for the Ansible-based Operator is not a multi-stage build, so the platform specified in the first @jon-nfc --- a/Makefile
+++ b/Makefile
@@ -92,14 +92,11 @@ docker-push: ## Push docker image with the manager.
# To properly provided solutions that supports more than one platform you should use this option.
PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
.PHONY: docker-buildx
-docker-buildx: test ## Build and push docker image for the manager for cross-platform support
- # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile
- sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross
+docker-buildx: ## Build and push docker image for the manager for cross-platform support
- docker buildx create --name project-v3-builder
docker buildx use project-v3-builder
- - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross .
+ - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile .
- docker buildx rm project-v3-builder
- rm Dockerfile.cross |
…sted in the first place The editing of the dockerfile is not required as specifying the platform in the `FROM` statement is already done by default. These lines of code are useless
@kurokobo, cheers for the review.
I did not know this and now that I do and after testing, the patch you have makes more sense. why have extra code that achieves the same thing as it not being there in the first place. |
@jon-nfc Sorry, I was saying that I didn't get to test your PR's changes out yet because I am still on vacation and didn't have my laptop with me. From just looking at the code, my logical conclusion was that we should update our operator's code to do whatever the latest ansible-operator-sdk guidance was, as that is commonly what resolves issues like this. I generally default to trying to do things the way they are done in the ansible-operator-sdk where possible for consistency and to reduce the maintenance burden. From your comments, I can see now that the ansible-operators-plugins repo's Makefile is currently broken. I should have waited until I could test this out myself before commenting. Thank you for the information Now that I have read up on this some more, @kurokobo 's suggestions look to be the best approach. Thank you for updating the PR with those changes. When I get back I'll test out the build and make sure it works and provide another review. I'll make sure to let the ansible-operator-plugins folks know on Monday. |
Righto, makes sense. oh and don't forget holidays are not a time for work!!! it'll still be there when you return. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This works with the current changes to remove the sed command and generation of the custom Dockerfile.cross from the docker-buildx target. This is not needed for ansible-operators as @kurokobo mentioned. This should be changed in the ansible-operator-plugins repo as well, and this make target should be added to the awx-operator repo imo.
Running the following results in only an amd64 build of the eda-server-operator:
$ PLATFORMS=linux/arm64 make docker-buildx
Running the following results in all 4 default arches
make docker-buildx
Buildx Logs
[chadams@awx eda-server-operator]$ PLATFORM=linux/arm64 make docker-buildx
docker buildx create --name project-v3-builder
project-v3-builder
docker buildx use project-v3-builder
docker buildx build --push --platform=linux/arm64,linux/amd64,linux/s390x,linux/ppc64le --tag quay.io/ansible/eda-server-operator:0.0.1 -f Dockerfile .
[+] Building 206.3s (35/35) FINISHED docker-container:project-v3-builder
=> [internal] booting buildkit 1.1s
=> => pulling image moby/buildkit:buildx-stable-1 0.5s
=> => creating container buildx_buildkit_project-v3-builder0 0.6s
=> [internal] load build definition from Dockerfile 0.2s
=> => transferring dockerfile: 623B 0.0s
=> [linux/ppc64le internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.4s
=> [linux/arm64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.8s
=> [linux/s390x internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 3.4s
=> [linux/amd64 internal] load metadata for quay.io/operator-framework/ansible-operator:v1.27.0 4.2s
=> [internal] load .dockerignore 0.2s
=> => transferring context: 230B 0.0s
=> [internal] load build context 0.3s
=> => transferring context: 148.90kB 0.0s
=> [linux/s390x 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 64.4s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.5s
=> => sha256:98b78ab39fa7a7ce7683d3d924a937f5f887e9955e6b9c789ced00625f8ba1ba 24.70MB / 24.70MB 5.4s
=> => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 0.2s
=> => sha256:ba1279a54461b9e9f57571bae247b61978c771bfe48fc5c7ef9e70f7db815661 581B / 581B 0.5s
=> => sha256:0949346439167993cbab3851e050f69388f94a7d2ed82602958c59496bed89c8 9.73kB / 9.73kB 0.5s
=> => sha256:be97cdf74f6401d15615bcb38b5bfb25446af8717efa08698360aa2d888b140d 60.13MB / 60.13MB 17.5s
=> => sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 13.94kB / 13.94kB 0.3s
=> => sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 263B / 263B 0.8s
=> => sha256:eadc43eb1208180c78aa0db936dac2e706d8c8ac66b2b0dadd15b4a241f58c8f 76.12MB / 76.12MB 56.0s
=> => extracting sha256:eadc43eb1208180c78aa0db936dac2e706d8c8ac66b2b0dadd15b4a241f58c8f 1.4s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:be97cdf74f6401d15615bcb38b5bfb25446af8717efa08698360aa2d888b140d 2.0s
=> => extracting sha256:0949346439167993cbab3851e050f69388f94a7d2ed82602958c59496bed89c8 0.1s
=> => extracting sha256:ba1279a54461b9e9f57571bae247b61978c771bfe48fc5c7ef9e70f7db815661 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.1s
=> => extracting sha256:98b78ab39fa7a7ce7683d3d924a937f5f887e9955e6b9c789ced00625f8ba1ba 0.3s
=> [linux/arm64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 118.9s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.4s
=> => sha256:0617eed5fbc6af48b97c3e3c5c4bf22820e98f67294a493a95ac1c655c654258 23.36MB / 23.36MB 12.9s
=> => sha256:9d060052cff3125e346031e6e4a5ca2c51a48ab9ac9f3c4684d18a4b1ceaf3fc 9.04kB / 9.04kB 0.8s
=> => sha256:460a2b58971a09387c73af91b06462e7d289da2d80ef6ef42a4cca6a62d75512 581B / 581B 0.9s
=> => sha256:0e0b4f8ae73926163dd7c0fcf5c5bf42448be9b69ee0c8dba7ddc21c16f93663 64.55MB / 64.55MB 40.9s
=> => sha256:02007dd5742cf0e02af80120d21c02e90f46c6137dccdd56e38333253ebf8386 76.75MB / 76.75MB 39.4s
=> => extracting sha256:02007dd5742cf0e02af80120d21c02e90f46c6137dccdd56e38333253ebf8386 1.5s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.2s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:0e0b4f8ae73926163dd7c0fcf5c5bf42448be9b69ee0c8dba7ddc21c16f93663 2.1s
=> => extracting sha256:9d060052cff3125e346031e6e4a5ca2c51a48ab9ac9f3c4684d18a4b1ceaf3fc 0.1s
=> => extracting sha256:460a2b58971a09387c73af91b06462e7d289da2d80ef6ef42a4cca6a62d75512 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.1s
=> => extracting sha256:0617eed5fbc6af48b97c3e3c5c4bf22820e98f67294a493a95ac1c655c654258 0.3s
=> [linux/amd64 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 113.8s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.4s
=> => sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 25.02MB / 25.02MB 14.4s
=> => sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 581B / 581B 0.2s
=> => sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 9.47kB / 9.47kB 0.2s
=> => sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 64.88MB / 64.88MB 41.5s
=> => sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 262B / 262B 0.4s
=> => sha256:649e5534d134eac0f942db1db2a7491173c90e40888923ebf261d0277c2ab73e 79.14MB / 79.14MB 65.4s
=> => extracting sha256:649e5534d134eac0f942db1db2a7491173c90e40888923ebf261d0277c2ab73e 1.4s
=> => extracting sha256:af3f0c395f7eb1853f50487d3c93853f4247e671c33362b4da71a23b351d5c54 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:d19cab6e4eba8015a6d4ddff46c82c61c08bed40c058748e347463f4cfc58f27 2.2s
=> => extracting sha256:86f5f62afd6ec97574bc09469a6604f44273cfb2af7b9c5ce879f1003e90791b 0.1s
=> => extracting sha256:a162900bde72611bfe03489fa69f56edaad3c94aaca3e6e9c15ae1b75bddb995 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.1s
=> => extracting sha256:a410cb638594e3774ca48c587754784c212d329f81b52a4a26ce2203a2b02d40 0.3s
=> [linux/ppc64le 1/6] FROM quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 84.3s
=> => resolve quay.io/operator-framework/ansible-operator:v1.27.0@sha256:7d6cc680ab0f57f2e796411c170186d7d668e7ae8500f39ae0660edda08ce72b 0.4s
=> => sha256:b867f87590b8f0017ea6c633ebb66808a0e188d5f97b75e0b39930a1540582a7 23.07MB / 23.07MB 24.6s
=> => sha256:9817a6f828801933d0dc746dd105d3378bac07789a680aef7dd8269f3e7160c8 9.60kB / 9.60kB 1.4s
=> => sha256:1c08c84a47af5e825c04fd537ab7decd04906a1c1a5a34ee181ce00489149fb7 582B / 582B 0.9s
=> => sha256:ba64f8b2f828edb6013769c954664bb3d5eb961b006f13c8a57bf31c6a398dad 60.28MB / 60.28MB 21.3s
=> => sha256:ffccdb4e3c404cc1cc140915ca062919bfaedea8462b50f2b54696124f0e29b7 85.75MB / 85.75MB 59.0s
=> => extracting sha256:ffccdb4e3c404cc1cc140915ca062919bfaedea8462b50f2b54696124f0e29b7 1.6s
=> => extracting sha256:971ecb619bbf0444e31e128864adb0c50cd3e8bfb806b4b8120d0990553c97a4 0.1s
=> => extracting sha256:e480d2ae103c3e5cdcd0b1159aa570815696ae5976448bb74b4bf50201e89d75 0.1s
=> => extracting sha256:ba64f8b2f828edb6013769c954664bb3d5eb961b006f13c8a57bf31c6a398dad 2.2s
=> => extracting sha256:9817a6f828801933d0dc746dd105d3378bac07789a680aef7dd8269f3e7160c8 0.1s
=> => extracting sha256:1c08c84a47af5e825c04fd537ab7decd04906a1c1a5a34ee181ce00489149fb7 0.1s
=> => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.1s
=> => extracting sha256:b867f87590b8f0017ea6c633ebb66808a0e188d5f97b75e0b39930a1540582a7 0.3s
=> [linux/s390x 2/6] COPY requirements.yml /opt/ansible/requirements.yml 1.7s
=> [linux/s390x 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 16.0s
=> [linux/s390x 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.7s
=> [linux/s390x 5/6] COPY roles/ /opt/ansible/roles/ 0.7s
=> [linux/s390x 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.5s
=> [linux/ppc64le 2/6] COPY requirements.yml /opt/ansible/requirements.yml 0.2s
=> [linux/ppc64le 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 18.1s
=> [linux/ppc64le 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/ppc64le 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/ppc64le 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.2s
=> [linux/amd64 2/6] COPY requirements.yml /opt/ansible/requirements.yml 1.9s
=> [linux/amd64 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 7.7s
=> [linux/arm64 2/6] COPY requirements.yml /opt/ansible/requirements.yml 1.9s
=> [linux/arm64 3/6] RUN ansible-galaxy collection install -r /opt/ansible/requirements.yml && chmod -R ug+rwx /opt/ansible/.ansible 7.9s
=> [linux/amd64 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/amd64 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/amd64 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.2s
=> [linux/arm64 4/6] COPY watches.yaml /opt/ansible/watches.yaml 0.2s
=> [linux/arm64 5/6] COPY roles/ /opt/ansible/roles/ 0.2s
=> [linux/arm64 6/6] COPY playbooks/ /opt/ansible/playbooks/ 0.3s
=> exporting to image 69.3s
=> => exporting layers 4.4s
=> => exporting manifest sha256:c7400bfa6138c87b8335d24d372b6bb48055d366fb06242809b555e491a8cd9f 0.0s
=> => exporting config sha256:e391400e3434ba834bea80660b8c0270c859d8b2bdadc51ad9097944fceeb4e9 0.0s
=> => exporting attestation manifest sha256:468d5d443572dd40a17c8077639c678a08850a77436d60eb88af0e2a452f9e81 0.1s
=> => exporting manifest sha256:01c21decf6dc951258501f9be2b9d40a3b1ac30e613e2a1370d92eb007483692 0.0s
=> => exporting config sha256:b4d0bc13b60a73db10355ca8c8ae99552abb89c477ddcb9057389621f1aa267c 0.0s
=> => exporting attestation manifest sha256:deaaeb42a4bb6103dfc36c632010becbccffb2bbb8b58ac02a6298c5518ada89 0.1s
=> => exporting manifest sha256:56c234c38c848d0d0009f8df1b7251f6eec0845ffb9cd19738a25bb7b27c8be3 0.0s
=> => exporting config sha256:5cd4f0d77a0cf1e106deed57fb7f322e99d0954f07d148253924316d565d63cf 0.0s
=> => exporting attestation manifest sha256:3b2feb2582042476359a89d93f92fe5e5d7b01b824bf1b9d385361a7e01eb964 0.1s
=> => exporting manifest sha256:6df3db0224708cce6c16b83daaf6a364bf55d7f5bba77b0b72361440533da779 0.0s
=> => exporting config sha256:2d7ca392413f5e7b5bfd98f30a264f970aee62e6acc8b8ad52ed21c591def595 0.0s
=> => exporting attestation manifest sha256:92cb482d399b75f50991fc6070976d19dec114ddd516e9ae360e65f140e30e57 0.1s
=> => exporting manifest list sha256:df7020eb80d9b3e601d47e67399f57f40224dc3df4750cac75fb0fb7756add17 0.0s
=> => pushing layers 60.3s
=> => pushing manifest for quay.io/ansible/eda-server-operator:0.0.1@sha256:df7020eb80d9b3e601d47e67399f57f40224dc3df4750cac75fb0fb7756add17 3.7s
=> [auth] ansible/eda-server-operator:pull,push token for quay.io 0.0s
=> [auth] ansible/eda-server-operator:pull,push token for quay.io 0.0s
docker buildx rm project-v3-builder
project-v3-builder removed
@jon-nfc @kurokobo thanks for putting up a fix for this and for your collaboration.
I opened an issue in the ansible-operator-plugins repo. Please add a comment there if you spot anything I missed.
@rooftopcellist, top notch!! the issue you opened looks good. |
Thanks for working on this, I found terrible mistyping in my comment:
This is for Corrected:
|
Looks like I've made the same mistake, I just fixed it in the other issue. Thanks! |
The current makefile option
docker-buildx
was not correctly setup for cross-platform compilation.var
BUILDPLATFORM
is the architecture for the machine building the image. This var is not for cross-compilation.var
TARGETPLATFORM
is the correct variable to use for cross-compilation.