-
Notifications
You must be signed in to change notification settings - Fork 40
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
Use buildah instead of docker, support multi-arch builds #115
Conversation
This passes them to all subprocesses, but they can still be overridden due to the ?= construct. Signed-off-by: Maya Rashish <[email protected]>
Avoid failure when the binary is built with Fedora 36 and thus requires newer glibc symbols than the container. Signed-off-by: Maya Rashish <[email protected]>
Now we can run: make clean && \ GOARCH=arm64 make manifest && GOARCH=amd64 make manifest && \ make manifest-push And spit out a manifest for both arm64 and amd64, in the same image. Caveats: - We have a special 'manifest-clean' target, as we can add arbitrarily many images to a manifest and don't want the old ones. Delete old image in case a regular non-manifest image exists by the same name, too. - The push and image/manifest creation are split, so we can run the image creation for more than one architecture and push the combined manifest including both. - We keep `make push` behaving the same to avoid breaking CI. - Full DOCKER_REPO name is used, as podman-like tools have odd behavior with short names. Signed-off-by: Maya Rashish <[email protected]>
hack/sanity.sh
Outdated
# Need privileged so we can bind mount inside container, and hostpath capacity cannot change, so skipping that test | ||
docker run --privileged ${DOCKER_REPO}/sanity:test -ginkgo.noColor -ginkgo.skip="should fail when requesting to create a volume with already existing name and different capacity" | ||
podman run --privileged ${DOCKER_REPO}/sanity:test -ginkgo.noColor -ginkgo.skip="should fail when requesting to create a volume with already existing name and different capacity" |
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.
Looks like podman is not installed in this container, this is why the test is failing here.
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.
quay.io/kubevirtci/golang is the container that is running this test. Might have to install podman on it during this run.
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.
After a failed attempt to make the CI image include podman (the kubevirtci kind provider would pick it up but then fail to come up, so it immediately broke some CI lanes), this PR now supports both docker & podman, so CI is now passing with no change to project-infra.
/retest |
Signed-off-by: Maya Rashish <[email protected]>
ping @awels |
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.
Looks good just have a concern with tls-verify=false being added when pushing.
cluster-sync/sync.sh
Outdated
@@ -27,7 +27,7 @@ for i in $(seq 1 ${KUBEVIRT_NUM_NODES}); do | |||
done | |||
|
|||
registry=${IMAGE_REGISTRY:-localhost:$(_port registry)} | |||
DOCKER_REPO=${registry} make push | |||
DOCKER_REPO=${registry} BUILDAH_PUSH_FLAGS="--tls-verify=false" make manifest manifest-push |
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.
I understand why you added the tls-verify=false, because we can't really verify the identity of the registry:5000 in the kubevirtci cluster. Can we only add this flag if we are in that particular situation. I would really like to verify the identity when I am pushing an actual release to quay.io for instance.
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.
Done
hack/k8s-e2e.sh
Outdated
@@ -62,7 +62,7 @@ fi | |||
echo "install hpp" | |||
registry=${IMAGE_REGISTRY:-localhost:$(_port registry)} | |||
echo "registry: ${registry}" | |||
DOCKER_REPO=${registry} make push | |||
DOCKER_REPO=${registry} BUILDAH_PUSH_FLAGS="--tls-verify=false" make manifest manifest-push |
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.
Same here.
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.
Done!
Add a message about this, too Signed-off-by: Maya Rashish <[email protected]>
/lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: awels The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/cherrypick release-v0.13 |
@awels: new pull request created: #215 In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/cherrypick release-v0.12 |
@awels: #115 failed to apply on top of branch "release-v0.12":
In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
* Instead of passing environment variables, export them in Makefile This passes them to all subprocesses, but they can still be overridden due to the ?= construct. Signed-off-by: Maya Rashish <[email protected]> * Build sanity.test statically Avoid failure when the binary is built with Fedora 36 and thus requires newer glibc symbols than the container. Signed-off-by: Maya Rashish <[email protected]> * Switch to buildah & podman, enable multi-arch builds Now we can run: make clean && \ GOARCH=arm64 make manifest && GOARCH=amd64 make manifest && \ make manifest-push And spit out a manifest for both arm64 and amd64, in the same image. Caveats: - We have a special 'manifest-clean' target, as we can add arbitrarily many images to a manifest and don't want the old ones. Delete old image in case a regular non-manifest image exists by the same name, too. - The push and image/manifest creation are split, so we can run the image creation for more than one architecture and push the combined manifest including both. - We keep `make push` behaving the same to avoid breaking CI. - Full DOCKER_REPO name is used, as podman-like tools have odd behavior with short names. Signed-off-by: Maya Rashish <[email protected]> * Tolerate docker instead of podman Signed-off-by: Maya Rashish <[email protected]> * Only add --tls-verify=false if the registry matches localhost* Add a message about this, too Signed-off-by: Maya Rashish <[email protected]>
* Instead of passing environment variables, export them in Makefile This passes them to all subprocesses, but they can still be overridden due to the ?= construct. Signed-off-by: Maya Rashish <[email protected]> * Build sanity.test statically Avoid failure when the binary is built with Fedora 36 and thus requires newer glibc symbols than the container. Signed-off-by: Maya Rashish <[email protected]> * Switch to buildah & podman, enable multi-arch builds Now we can run: make clean && \ GOARCH=arm64 make manifest && GOARCH=amd64 make manifest && \ make manifest-push And spit out a manifest for both arm64 and amd64, in the same image. Caveats: - We have a special 'manifest-clean' target, as we can add arbitrarily many images to a manifest and don't want the old ones. Delete old image in case a regular non-manifest image exists by the same name, too. - The push and image/manifest creation are split, so we can run the image creation for more than one architecture and push the combined manifest including both. - We keep `make push` behaving the same to avoid breaking CI. - Full DOCKER_REPO name is used, as podman-like tools have odd behavior with short names. Signed-off-by: Maya Rashish <[email protected]> * Tolerate docker instead of podman Signed-off-by: Maya Rashish <[email protected]> * Only add --tls-verify=false if the registry matches localhost* Add a message about this, too Signed-off-by: Maya Rashish <[email protected]>
* Instead of passing environment variables, export them in Makefile This passes them to all subprocesses, but they can still be overridden due to the ?= construct. Signed-off-by: Maya Rashish <[email protected]> * Build sanity.test statically Avoid failure when the binary is built with Fedora 36 and thus requires newer glibc symbols than the container. Signed-off-by: Maya Rashish <[email protected]> * Switch to buildah & podman, enable multi-arch builds Now we can run: make clean && \ GOARCH=arm64 make manifest && GOARCH=amd64 make manifest && \ make manifest-push And spit out a manifest for both arm64 and amd64, in the same image. Caveats: - We have a special 'manifest-clean' target, as we can add arbitrarily many images to a manifest and don't want the old ones. Delete old image in case a regular non-manifest image exists by the same name, too. - The push and image/manifest creation are split, so we can run the image creation for more than one architecture and push the combined manifest including both. - We keep `make push` behaving the same to avoid breaking CI. - Full DOCKER_REPO name is used, as podman-like tools have odd behavior with short names. Signed-off-by: Maya Rashish <[email protected]> * Tolerate docker instead of podman Signed-off-by: Maya Rashish <[email protected]> * Only add --tls-verify=false if the registry matches localhost* Add a message about this, too Signed-off-by: Maya Rashish <[email protected]>
* Allow dynamic linking of binaries (#205) * Allow dynamic linking of binaries The release was creating statically linked binaries and there is no particular reason for this. Doing dynamically linked binaries would decrase the container size. Signed-off-by: Alexander Wels <[email protected]> * Updated fedora to 37 so it has a recent enough glibc Added glibc to the Dockerfile so the binaries can run Fixed failing functional test that was not calculating the size properly from the `df -Bk` command. It was calculating from 1000 instead of 1024 and the size was wrong because of it. Signed-off-by: Alexander Wels <[email protected]> --------- Signed-off-by: Alexander Wels <[email protected]> * Use buildah instead of docker, support multi-arch builds (#115) * Instead of passing environment variables, export them in Makefile This passes them to all subprocesses, but they can still be overridden due to the ?= construct. Signed-off-by: Maya Rashish <[email protected]> * Build sanity.test statically Avoid failure when the binary is built with Fedora 36 and thus requires newer glibc symbols than the container. Signed-off-by: Maya Rashish <[email protected]> * Switch to buildah & podman, enable multi-arch builds Now we can run: make clean && \ GOARCH=arm64 make manifest && GOARCH=amd64 make manifest && \ make manifest-push And spit out a manifest for both arm64 and amd64, in the same image. Caveats: - We have a special 'manifest-clean' target, as we can add arbitrarily many images to a manifest and don't want the old ones. Delete old image in case a regular non-manifest image exists by the same name, too. - The push and image/manifest creation are split, so we can run the image creation for more than one architecture and push the combined manifest including both. - We keep `make push` behaving the same to avoid breaking CI. - Full DOCKER_REPO name is used, as podman-like tools have odd behavior with short names. Signed-off-by: Maya Rashish <[email protected]> * Tolerate docker instead of podman Signed-off-by: Maya Rashish <[email protected]> * Only add --tls-verify=false if the registry matches localhost* Add a message about this, too Signed-off-by: Maya Rashish <[email protected]> * Add go mod vendor Signed-off-by: Alexander Wels <[email protected]> --------- Signed-off-by: Alexander Wels <[email protected]> Signed-off-by: Maya Rashish <[email protected]> Co-authored-by: Maya Rashish <[email protected]>
Which issue(s) this PR fixes (optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when PR gets merged):hostpath-provisioner part of #98, we also need to change
make push
in project-infra to build arm64 binaries.Special notes for your reviewer:
Release note: