From df0fb1039f1498ecff9eb3c48505668530ee4a9c Mon Sep 17 00:00:00 2001 From: Thomas Carmet Date: Thu, 15 Jul 2021 17:10:53 -0700 Subject: [PATCH 1/4] EVE-1165 restore API auth when oauth is enabled --- eve/etc/master.cfg | 2 ++ eve/patch/oauth.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 eve/patch/oauth.py diff --git a/eve/etc/master.cfg b/eve/etc/master.cfg index 3ba89f394..f3b013f55 100644 --- a/eve/etc/master.cfg +++ b/eve/etc/master.cfg @@ -33,6 +33,7 @@ from buildbot import manhole from buildbot.plugins import util from eve.patch.bitbucket_webhook import patch as patch_bitbucket_webhook +from eve.patch.oauth import patch as patch_api_auth_oauth from eve.patch.remote_shell_command import patch as patch_timeouts from eve.setup.bootstrap import bootstrap_builder from eve.setup.builders import triggerable_builder @@ -284,6 +285,7 @@ if util.env.MANHOLE_IN_USE: util.env.MANHOLE_PASSWORD ) patch_timeouts() +patch_api_auth_oauth() ########################### diff --git a/eve/patch/oauth.py b/eve/patch/oauth.py new file mode 100644 index 000000000..d9d98812f --- /dev/null +++ b/eve/patch/oauth.py @@ -0,0 +1,76 @@ +# Copyright 2021 Scality +# +# This file is part of Eve. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, version 2. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +import buildbot +import requests +from buildbot.www import resource +from buildbot.www.oauth2 import GitHubAuth, OAuth2Auth, OAuth2LoginResource +from twisted.internet import defer, threads + + +@defer.inlineCallbacks +def renderLogin(self, request): + code = request.args.get(b"code", [b""])[0] + token = request.args.get(b"token", [b""])[0] + if not token and not code: + url = request.args.get(b"redirect", [None])[0] + url = yield self.auth.getLoginURL(url) + raise resource.Redirect(url) + + if not token: + details = yield self.auth.verifyCode(code) + else: + details = yield self.auth.acceptToken(token) + if self.auth.userInfoProvider is not None: + infos = yield self.auth.userInfoProvider.getUserInfo( + details['username'] + ) + details.update(infos) + session = request.getSession() + session.user_info = details + session.updateSession(request) + state = request.args.get(b"state", [b""])[0] + if state: + # pylint: disable=E0602 + for redirect in parse_qs(state).get('redirect', []): # noqa: F821 + raise resource.Redirect(self.auth.homeUri + "#" + redirect) + raise resource.Redirect(self.auth.homeUri) + + +def acceptToken(self, token): + def thd(): + session = self.createSessionFromToken({'access_token': token}) + return self.getUserInfoFromOAuthClient(session) + return threads.deferToThread(thd) + + +def createSessionFromToken(self, token): + s = requests.Session() + s.headers = { + 'Authorization': 'token ' + token['access_token'].decode('utf-8'), + 'User-Agent': 'buildbot/{}'.format(buildbot.version), + } + s.verify = self.sslVerify + return s + + +def patch(): + """Patch created to restablish API authentication with OAuth enabled.""" + OAuth2LoginResource.renderLogin = renderLogin + OAuth2Auth.acceptToken = acceptToken + GitHubAuth.createSessionFromToken = createSessionFromToken From c66f417a1af306b3fb4c3e7c02c1d8f71e214a97 Mon Sep 17 00:00:00 2001 From: Thomas Carmet Date: Fri, 16 Jul 2021 11:09:15 -0700 Subject: [PATCH 2/4] Refresh worker docker image build --- build/workers/focal/Dockerfile | 10 +- build/workers/focal/packages.list | 1 + build/workers/focal/requirements.in | 21 - build/workers/focal/requirements.txt | 652 --------------------------- tox.ini | 2 - 5 files changed, 3 insertions(+), 683 deletions(-) delete mode 100644 build/workers/focal/requirements.in delete mode 100644 build/workers/focal/requirements.txt diff --git a/build/workers/focal/Dockerfile b/build/workers/focal/Dockerfile index d22ec6de9..61361a3c7 100644 --- a/build/workers/focal/Dockerfile +++ b/build/workers/focal/Dockerfile @@ -10,11 +10,7 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* \ && rm -f /tmp/packages.list -COPY ./requirements.txt /tmp - RUN pip3 install --upgrade pip==21.0.1 -RUN pip3 install --no-binary buildbot --no-cache-dir -r /tmp/requirements.txt \ - && rm -f /tmp/requirements.txt # Install Helm ARG HELM_VERSION=3.5.4 @@ -35,14 +31,12 @@ RUN adduser -u 1042 --home /home/eve --disabled-password --gecos "" eve \ USER eve -RUN mkdir -p /home/eve/workspace/ \ - && mkdir -p /home/eve/.ssh/ \ - && /bin/echo -e "Host bitbucket.org\n\tStrictHostKeyChecking no\n" >> /home/eve/.ssh/config +RUN mkdir -p /home/eve/workspace/ # # Run buildbot-worker on startup # -ARG BUILDBOT_VERSION +ARG BUILDBOT_VERSION=2.7.0 RUN sudo pip3 install buildbot-worker==$BUILDBOT_VERSION WORKDIR /home/eve/workspace diff --git a/build/workers/focal/packages.list b/build/workers/focal/packages.list index d8592c9b9..6c4ae2c33 100644 --- a/build/workers/focal/packages.list +++ b/build/workers/focal/packages.list @@ -11,3 +11,4 @@ python3-dev python3-pip sudo wget +tox diff --git a/build/workers/focal/requirements.in b/build/workers/focal/requirements.in deleted file mode 100644 index 6a9b1d970..000000000 --- a/build/workers/focal/requirements.in +++ /dev/null @@ -1,21 +0,0 @@ -# requirements for successful installation of eve -# (pre-installed in Dockerfile to benefit from cache) -# -# to reproduce frozen requirements: -# first install packages needed to be able to compile buildbot-www wheel: -# $ pip install -U -r base.txt -# $ pip install -U -r unit.txt -# -# then: -# $ pip install freeze-requirements -# $ freeze-requirements freeze --separate-requirements requirements.in -# $ mv requirements-frozen.in requirements.txt --r ../../../requirements/autoformat.in --r ../../../requirements/base.in --r ../../../requirements/flake8.in --r ../../../requirements/pydocstyle.in --r ../../../requirements/pylint.in --r ../../../requirements/relnotes.in --r ../../../requirements/system_tests.in --r ../../../requirements/unit.in -tox diff --git a/build/workers/focal/requirements.txt b/build/workers/focal/requirements.txt deleted file mode 100644 index faea0ca4f..000000000 --- a/build/workers/focal/requirements.txt +++ /dev/null @@ -1,652 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# tox -e pip-compile -# -adal==1.2.7 - # via kubernetes -apipkg==1.5 - # via execnet -appdirs==1.4.4 - # via - # openstacksdk - # virtualenv -argon2-cffi==20.1.0 - # via autobahn -astroid==2.5.3 - # via pylint -attrs==20.3.0 - # via - # autobahn - # automat - # cmd2 - # crossbar - # pytest - # service-identity - # treq - # twisted -autobahn[asyncio,compress,encryption,scram,serialization,twisted]==21.3.1 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # buildbot - # crossbar -autoflake==1.4 - # via -r build/workers/focal/../../../requirements/autoformat.in -automat==20.2.0 - # via - # twisted - # txtorcon -autopep8==1.5.6 - # via -r build/workers/focal/../../../requirements/autoformat.in -babel==2.6.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # python-heatclient -bcrypt==3.2.0 - # via crossbar -bitstring==3.1.7 - # via crossbar -buildbot-pkg==2.7.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -buildbot-worker==2.7.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -buildbot-www==2.7.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -buildbot[tls]==2.7.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in - # buildbot-www -buildbot_wsgi_dashboards==2.7.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -cachetools==4.2.1 - # via google-auth -cbor2==5.2.0 - # via - # autobahn - # zlmdb -cbor==1.0.0 - # via - # autobahn - # crossbar -certifi==2018.11.29 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # kubernetes - # requests -cffi==1.14.5 - # via - # argon2-cffi - # autobahn - # bcrypt - # cryptography - # pynacl - # zlmdb -chardet==3.0.4 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # requests -click-default-group==1.2.2 - # via towncrier -click==7.1.2 - # via - # click-default-group - # crossbar - # flask - # towncrier - # zlmdb -cliff==3.7.0 - # via - # osc-lib - # python-heatclient - # python-openstackclient -cmd2==1.5.0 - # via cliff -colorama==0.4.4 - # via - # cmd2 - # crossbar -constantly==15.1.0 - # via - # crossbar - # twisted -coverage==5.5 - # via pytest-cov -crossbar==21.3.1 - # via -r build/workers/focal/../../../requirements/system_tests.in -cryptography==3.4.7 - # via - # adal - # autobahn - # crossbar - # openstacksdk - # pyopenssl - # requests - # service-identity - # txtorcon -debtcollector==2.2.0 - # via - # oslo.config - # oslo.utils - # python-keystoneclient -decorator==5.0.6 - # via - # dogpile.cache - # openstacksdk - # sqlalchemy-migrate -distlib==0.3.1 - # via virtualenv -dogpile.cache==1.1.2 - # via openstacksdk -execnet==1.8.0 - # via pytest-xdist -filelock==3.0.12 - # via - # tox - # virtualenv -flake8==3.9.0 - # via -r build/workers/focal/../../../requirements/flake8.in -flask==1.1.2 - # via -r build/workers/focal/../../../requirements/base.in -flatbuffers==1.12 - # via - # autobahn - # zlmdb -future==0.18.2 - # via buildbot-worker -google-auth==1.28.1 - # via kubernetes -h2==3.2.0 - # via crossbar -hpack==3.0.0 - # via h2 -hyperframe==5.2.0 - # via h2 -hyperlink==21.0.0 - # via - # autobahn - # treq - # twisted -idna==2.5 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # buildbot - # crossbar - # hyperlink - # requests - # twisted -importlib-metadata==3.10.1 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -importlib-resources==5.1.4 - # via crossbar -incremental==21.3.0 - # via - # crossbar - # towncrier - # treq - # twisted - # txtorcon -iniconfig==1.1.1 - # via pytest -iso8601==0.1.14 - # via - # keystoneauth1 - # openstacksdk - # oslo.utils - # python-heatclient - # python-novaclient - # python-openstackclient -isort==5.8.0 - # via - # -r build/workers/focal/../../../requirements/autoformat.in - # pylint -itsdangerous==1.1.0 - # via flask -jinja2==2.11.3 - # via - # -r build/workers/focal/../../../requirements/base.in - # buildbot - # crossbar - # flask - # towncrier -jmespath==0.10.0 - # via openstacksdk -jsonpatch==1.32 - # via openstacksdk -jsonpointer==2.1 - # via jsonpatch -keystoneauth1==4.3.1 - # via - # openstacksdk - # osc-lib - # python-cinderclient - # python-heatclient - # python-keystoneclient - # python-novaclient -kubernetes==8.0.1 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -lazy-object-proxy==1.6.0 - # via astroid -lmdb==1.1.1 - # via - # crossbar - # zlmdb -lz4==3.1.3 - # via -r build/workers/focal/../../../requirements/base.in -markupsafe==1.1.1 - # via jinja2 -mccabe==0.6.1 - # via - # flake8 - # pylint -mistune==0.8.4 - # via crossbar -mock==4.0.3 - # via -r build/workers/focal/../../../requirements/unit.in -msgpack==1.0.2 - # via - # autobahn - # oslo.serialization -munch==2.5.0 - # via openstacksdk -mysqlclient==2.0.3 - # via -r build/workers/focal/../../../requirements/base.in -netaddr==0.8.0 - # via - # crossbar - # oslo.config - # oslo.utils -netifaces==0.10.9 - # via - # -r build/workers/focal/../../../requirements/base.in - # openstacksdk - # oslo.utils -numpy==1.20.3 - # via zlmdb -oauthlib==3.1.0 - # via requests-oauthlib -openstacksdk==0.55.0 - # via - # osc-lib - # python-openstackclient -os-service-types==1.7.0 - # via - # keystoneauth1 - # openstacksdk -osc-lib==2.3.1 - # via - # python-heatclient - # python-openstackclient -oslo.config==8.5.0 - # via python-keystoneclient -oslo.i18n==5.0.1 - # via - # osc-lib - # oslo.config - # oslo.utils - # python-cinderclient - # python-heatclient - # python-keystoneclient - # python-novaclient - # python-openstackclient -oslo.serialization==4.1.0 - # via - # python-heatclient - # python-keystoneclient - # python-novaclient -oslo.utils==4.8.0 - # via - # osc-lib - # oslo.serialization - # python-cinderclient - # python-heatclient - # python-keystoneclient - # python-novaclient - # python-openstackclient -packaging==20.9 - # via - # -r build/workers/focal/../../../requirements/base.in - # oslo.utils - # pytest - # tox -passlib==1.7.4 - # via - # autobahn - # crossbar -pbr==5.5.1 - # via - # cliff - # debtcollector - # keystoneauth1 - # openstacksdk - # os-service-types - # osc-lib - # oslo.i18n - # oslo.serialization - # oslo.utils - # python-cinderclient - # python-heatclient - # python-keystoneclient - # python-novaclient - # python-openstackclient - # sqlalchemy-migrate - # stevedore -pluggy==0.13.1 - # via - # pytest - # tox -prettytable==0.7.2 - # via - # cliff - # python-cinderclient - # python-heatclient - # python-novaclient -priority==1.3.0 - # via crossbar -psutil==5.8.0 - # via crossbar -py-ubjson==0.16.1 - # via - # autobahn - # crossbar -py==1.10.0 - # via - # pytest - # pytest-forked - # tox -pyasn1-modules==0.2.8 - # via - # crossbar - # google-auth - # service-identity -pyasn1==0.4.8 - # via - # crossbar - # pyasn1-modules - # rsa - # service-identity -pycodestyle==2.7.0 - # via - # autopep8 - # flake8 -pycparser==2.20 - # via cffi -pydocstyle==2.0.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in - # -r build/workers/focal/../../../requirements/pydocstyle.in -pyflakes==2.3.1 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in - # autoflake - # flake8 -pygments==2.8.1 - # via crossbar -pyhamcrest==2.0.2 - # via twisted -pyjwt==2.0.1 - # via - # adal - # buildbot -pylint==2.7.4 - # via -r build/workers/focal/../../../requirements/pylint.in -pynacl==1.4.0 - # via - # autobahn - # crossbar - # zlmdb -pyopenssl==20.0.1 - # via - # autobahn - # buildbot - # crossbar - # requests - # twisted -pyparsing==2.4.7 - # via - # cliff - # oslo.utils - # packaging -pyperclip==1.8.2 - # via cmd2 -pyqrcode==1.2.1 - # via - # autobahn - # crossbar -pytest-cov==2.11.1 - # via - # -r build/workers/focal/../../../requirements/system_tests.in - # -r build/workers/focal/../../../requirements/unit.in -pytest-forked==1.3.0 - # via pytest-xdist -pytest-xdist==2.2.1 - # via -r build/workers/focal/../../../requirements/system_tests.in -pytest==6.2.3 - # via - # -r build/workers/focal/../../../requirements/system_tests.in - # -r build/workers/focal/../../../requirements/unit.in - # pytest-cov - # pytest-forked - # pytest-xdist -python-cinderclient==7.4.0 - # via python-openstackclient -python-dateutil==2.8.1 - # via - # adal - # buildbot - # kubernetes -python-dotenv==0.17.0 - # via -r build/workers/focal/../../../requirements/system_tests.in -python-heatclient==2.3.0 - # via -r build/workers/focal/../../../requirements/base.in -python-keystoneclient==4.2.0 - # via python-openstackclient -python-novaclient==17.4.0 - # via python-openstackclient -python-openstackclient==5.5.0 - # via -r build/workers/focal/../../../requirements/base.in -python-snappy==0.6.0 - # via autobahn -python-swiftclient==3.11.1 - # via python-heatclient -pytrie==0.4.0 - # via - # autobahn - # crossbar -pytz==2021.1 - # via - # babel - # oslo.serialization - # oslo.utils -pyyaml==5.4.1 - # via - # -r build/workers/focal/../../../requirements/base.in - # -r build/workers/focal/../../../requirements/system_tests.in - # buildbot - # cliff - # crossbar - # kubernetes - # openstacksdk - # oslo.config - # python-heatclient - # zlmdb -requests-oauthlib==1.3.0 - # via kubernetes -requests[security]==2.25.1 - # via - # -r build/workers/focal/../../../requirements/base.in - # -r build/workers/focal/../../../requirements/system_tests.in - # adal - # keystoneauth1 - # kubernetes - # oslo.config - # python-cinderclient - # python-heatclient - # python-keystoneclient - # python-swiftclient - # requests-oauthlib - # treq -requestsexceptions==1.4.0 - # via openstacksdk -rfc3986==1.4.0 - # via oslo.config -rsa==4.7.2 - # via google-auth -sdnotify==0.3.2 - # via crossbar -service-identity==18.1.0 - # via - # autobahn - # buildbot - # crossbar - # twisted -setproctitle==1.2.2 - # via crossbar -setuptools-scm==5.0.2 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in -simplejson==3.17.2 - # via - # osc-lib - # python-cinderclient -six==1.15.0 - # via - # -r build/workers/focal/../../../requirements/base.in - # argon2-cffi - # automat - # bcrypt - # debtcollector - # google-auth - # keystoneauth1 - # kubernetes - # munch - # oslo.i18n - # pydocstyle - # pynacl - # pyopenssl - # python-dateutil - # python-heatclient - # python-keystoneclient - # python-swiftclient - # sqlalchemy-migrate - # tox - # virtualenv - # websocket-client -snowballstemmer==2.1.0 - # via pydocstyle -sortedcontainers==2.3.0 - # via pytrie -sqlalchemy-migrate==0.13.0 - # via buildbot -sqlalchemy==1.2.17 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # buildbot - # sqlalchemy-migrate -sqlparse==0.4.1 - # via sqlalchemy-migrate -stevedore==3.3.0 - # via - # cliff - # dogpile.cache - # keystoneauth1 - # osc-lib - # oslo.config - # python-cinderclient - # python-keystoneclient - # python-novaclient - # python-openstackclient -tempita==0.5.2 - # via sqlalchemy-migrate -toml==0.10.2 - # via - # autopep8 - # pylint - # pytest - # towncrier - # tox -towncrier==21.3.0 - # via -r build/workers/focal/../../../requirements/relnotes.in -tox==3.23.0 - # via -r build/workers/focal/requirements.in -treq==21.5.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # -r build/workers/focal/../../../requirements/base.in - # crossbar -twisted[tls]==20.3.0 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # autobahn - # buildbot - # buildbot-worker - # treq - # txtorcon -txaio==21.2.1 - # via - # autobahn - # buildbot - # crossbar - # zlmdb -txtorcon==20.0.0 - # via crossbar -u-msgpack-python==2.7.1 - # via crossbar -ujson==4.0.2 - # via autobahn -urllib3==1.24.3 - # via - # -c build/workers/focal/../../../requirements/constraints.txt - # crossbar - # kubernetes - # requests -virtualenv==20.4.3 - # via tox -watchdog==2.0.2 - # via crossbar -wcwidth==0.2.5 - # via cmd2 -websocket-client==0.58.0 - # via kubernetes -werkzeug==1.0.1 - # via - # crossbar - # flask -wrapt==1.12.1 - # via - # astroid - # debtcollector -xunitparser==1.3.3 - # via -r build/workers/focal/../../../requirements/base.in -zipp==3.4.1 - # via - # importlib-metadata - # importlib-resources -zlmdb==21.2.1 - # via crossbar -zope.interface==5.3.0 - # via - # autobahn - # buildbot - # crossbar - # twisted - # txtorcon - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/tox.ini b/tox.ini index 76d20adcd..49464d7af 100644 --- a/tox.ini +++ b/tox.ini @@ -208,8 +208,6 @@ commands = "{toxinidir}/requirements/system_tests.in" pip-compile {posargs} -o "{toxinidir}/requirements/unit.txt" \ "{toxinidir}/requirements/unit.in" - pip-compile {posargs} -o "{toxinidir}/build/workers/focal/requirements.txt" \ - "{toxinidir}/build/workers/focal/requirements.in" setenv = CUSTOM_COMPILE_COMMAND = tox -e pip-compile From 6501598348a3850fbf9a1911aea920aafa0a8cb4 Mon Sep 17 00:00:00 2001 From: Thomas Carmet Date: Fri, 16 Jul 2021 11:19:05 -0700 Subject: [PATCH 3/4] Remove site-packages opt on tox --- build/main.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build/main.yml b/build/main.yml index 19abb67af..2af42fbcc 100644 --- a/build/main.yml +++ b/build/main.yml @@ -51,15 +51,15 @@ stages: haltOnFailure: True - ShellCommand: name: run static analysis tools - command: tox --sitepackages -e lint + command: tox -e lint usePTY: true - ShellCommand: name: Ensure the release notes compile - command: tox --sitepackages -e relnotes -- test_version + command: tox -e relnotes -- test_version usePTY: true - ShellCommand: name: Ensure the doc compiles - command: tox --sitepackages -e doc + command: tox -e doc usePTY: true - ShellCommand: name: check helm packaging eve @@ -72,7 +72,7 @@ stages: command: helm lint charts/eve-doc - ShellCommand: name: run unit tests - command: tox --sitepackages -e unit + command: tox -e unit usePTY: true - ShellCommand: name: run system utils tests @@ -80,7 +80,7 @@ stages: usePTY: true - ShellCommand: name: run system tests - command: tox --sitepackages -e system + command: tox -e system haltOnFailure: True usePTY: true - Upload: From 8f558c93435df8683c373988fad85039d97fbac3 Mon Sep 17 00:00:00 2001 From: Thomas Carmet Date: Fri, 16 Jul 2021 11:28:50 -0700 Subject: [PATCH 4/4] Fixup kind installation url --- build/workers/docker_tests/requirements.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/workers/docker_tests/requirements.sh b/build/workers/docker_tests/requirements.sh index 1a8ed03ae..47402e190 100755 --- a/build/workers/docker_tests/requirements.sh +++ b/build/workers/docker_tests/requirements.sh @@ -50,7 +50,7 @@ echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https:/ apt-get update && apt-get install -y kubectl # Install Kind -curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.10.0/kind-linux-amd64 +curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.10.0/kind-linux-amd64 chmod +x ./kind mv kind /usr/local/bin/ # Create kind cluster