From 22a31a33952c4afc6ce7459f63edef587d9a68a1 Mon Sep 17 00:00:00 2001 From: David Simansky Date: Fri, 8 Oct 2021 13:35:00 +0200 Subject: [PATCH 1/2] [release-v0.25.1] Remove python http server from artifact image --- .../client/Dockerfile.cliartifacts | 33 ++++++----- serve.py | 56 ------------------- 2 files changed, 18 insertions(+), 71 deletions(-) delete mode 100755 serve.py diff --git a/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts b/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts index f7d807159c..8298e8cd90 100644 --- a/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts +++ b/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts @@ -1,16 +1,19 @@ -FROM registry.access.redhat.com/ubi8/ubi-minimal:latest -# we'd need to create WORKDIR before hand to workaround image builder issue -# on OCP 3.11 where it requires it present before referencing -RUN mkdir -p /opt/app-root/src/go/src/github.com/knative/client +FROM registry.ci.openshift.org/ocp/ubi-minimal:8 AS packager WORKDIR /opt/app-root/src/go/src/github.com/knative/client -RUN microdnf install -y zip tar gzip python3 -ADD package_cliartifacts.sh LICENSE kn-*-* serve.py ./ -RUN bash package_cliartifacts.sh && \ - mkdir -p /usr/share/kn/{linux_{amd64,arm64,ppc64le,s390x},macos,windows} && \ - mv kn-linux-amd64.tar.gz /usr/share/kn/linux_amd64/ && \ - mv kn-linux-arm64.tar.gz /usr/share/kn/linux_arm64/ && \ - mv kn-linux-ppc64le.tar.gz /usr/share/kn/linux_ppc64le/ && \ - mv kn-linux-s390x.tar.gz /usr/share/kn/linux_s390x/ && \ - mv kn-macos-amd64.tar.gz /usr/share/kn/macos/ && \ - mv kn-windows-amd64.zip /usr/share/kn/windows/ -CMD ["python3", "serve.py"] + +RUN microdnf install -y zip tar gzip +ADD package_cliartifacts.sh LICENSE kn-*-* ./ + +RUN microdnf install -y zip tar gzip && \ + bash package_cliartifacts.sh + +FROM registry.ci.openshift.org/ocp/ubi-minimal:8 +WORKDIR /opt/app-root/src/go/src/github.com/knative/client +RUN mkdir -p /usr/share/kn/{linux_amd64,linux_arm64,linux_ppc64le,linux_s390x,macos,windows} + +COPY --from=packager /opt/app-root/src/go/src/github.com/knative/client/kn-linux-amd64.tar.gz /usr/share/kn/linux_amd64/ +COPY --from=packager /opt/app-root/src/go/src/github.com/knative/client/kn-linux-ppc64le.tar.gz /usr/share/kn/linux_ppc64le/ +COPY --from=packager /opt/app-root/src/go/src/github.com/knative/client/kn-linux-s390x.tar.gz /usr/share/kn/linux_s390x/ +COPY --from=packager /opt/app-root/src/go/src/github.com/knative/client/kn-macos-amd64.tar.gz /usr/share/kn/macos/ +COPY --from=packager /opt/app-root/src/go/src/github.com/knative/client/kn-windows-amd64.zip /usr/share/kn/windows/ +COPY --from=packager /opt/app-root/src/go/src/github.com/knative/client/LICENSE /usr/share/kn/LICENSE diff --git a/serve.py b/serve.py deleted file mode 100755 index 4d57cfab67..0000000000 --- a/serve.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/python3 - -import http.server, os, re, signal, http.server, socket, sys, tarfile, tempfile, threading, time, zipfile - -signal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(0)) - -# Launch multiple listeners as threads -class Thread(threading.Thread): - def __init__(self, i, socket): - threading.Thread.__init__(self) - self.i = i - self.socket = socket - self.daemon = True - self.start() - - def run(self): - httpd = http.server.HTTPServer(addr, http.server.SimpleHTTPRequestHandler, False) - - # Prevent the HTTP server from re-binding every handler. - # https://stackoverflow.com/questions/46210672/ - httpd.socket = self.socket - httpd.server_bind = self.server_close = lambda self: None - - httpd.serve_forever() - -temp_dir = tempfile.mkdtemp() -print(('serving from {}'.format(temp_dir))) -os.chdir(temp_dir) -for arch in ['amd64','arm64','ppc64le','s390x']: - os.mkdir(arch) - -for arch, operating_system, path in [ - ('amd64', 'linux', '/usr/share/kn/linux_amd64/kn-linux-amd64.tar.gz'), - ('arm64', 'linux', '/usr/share/kn/linux_arm64/kn-linux-arm64.tar.gz'), - ('ppc64le', 'linux', '/usr/share/kn/linux_ppc64le/kn-linux-ppc64le.tar.gz'), - ('s390x', 'linux', '/usr/share/kn/linux_s390x/kn-linux-s390x.tar.gz'), - ('amd64', 'macos', '/usr/share/kn/macos/kn-macos-amd64.tar.gz'), - ('amd64', 'windows', '/usr/share/kn/windows/kn-windows-amd64.zip'), - ]: - basename = os.path.basename(path) - target_path = os.path.join(arch, operating_system, basename) - os.mkdir(os.path.join(arch, operating_system)) - os.symlink(path, target_path) - -# Create socket -# IPv6 should handle IPv4 passively so long as it is not bound to a -# specific address or set to IPv6_ONLY -# https://stackoverflow.com/questions/25817848/python-3-does-http-server-support-ipv6 -addr = ('::', 8080) -sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) -sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) -sock.bind(addr) -sock.listen(5) - -[Thread(i, socket=sock) for i in range(100)] -time.sleep(9e9) From 1df246f6b07f007b9d00a0ac4f6dd7e6de249e8a Mon Sep 17 00:00:00 2001 From: David Simansky Date: Fri, 8 Oct 2021 13:56:26 +0200 Subject: [PATCH 2/2] Fix duplicate package install --- .../ci-operator/knative-images/client/Dockerfile.cliartifacts | 2 -- 1 file changed, 2 deletions(-) diff --git a/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts b/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts index 8298e8cd90..519b695271 100644 --- a/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts +++ b/openshift/ci-operator/knative-images/client/Dockerfile.cliartifacts @@ -1,9 +1,7 @@ FROM registry.ci.openshift.org/ocp/ubi-minimal:8 AS packager WORKDIR /opt/app-root/src/go/src/github.com/knative/client -RUN microdnf install -y zip tar gzip ADD package_cliartifacts.sh LICENSE kn-*-* ./ - RUN microdnf install -y zip tar gzip && \ bash package_cliartifacts.sh