Merge pull request #398 from thockin/release-3.x

Downgrade libcurl to work around HTTP bug (v3)
This commit is contained in:
Kubernetes Prow Robot 2021-05-29 06:22:24 -07:00 committed by GitHub
commit 78d3a6e380
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 16 deletions

View File

@ -44,19 +44,30 @@
# => either add the git-sync GID or else set --root, mount a volume,
# and manage volume permissions to access that volume
FROM {ARG_FROM}
#############################################################################
# First we prepare the image that we want, regardless of build layers.
#############################################################################
FROM {ARG_FROM} as prep
RUN echo "deb http://deb.debian.org/debian/ buster-backports main contrib" > \
/etc/apt/sources.list.d/backports.list \
&& apt update \
&& apt -y upgrade \
&& apt -y install \
/etc/apt/sources.list.d/backports.list
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get -y install --no-install-recommends \
ca-certificates \
coreutils \
socat \
openssh-client \
&& apt -y -t buster-backports install git \
&& rm -rf /var/lib/apt/lists/*
openssh-client
# We want a newer git than the norm.
RUN apt-get -y -t buster-backports install --no-install-recommends \
git
# libcurl3-gnutls=7.74.0-1.2~bpo10+1 is broken. We can downgrade for now until
# the fix reaches upstream.
# https://github.com/kubernetes/git-sync/issues/395
RUN apt-get -y install --no-install-recommends --allow-downgrades \
libcurl3-gnutls:amd64=7.64.0-4+deb10u2
RUN apt-get -y autoremove
RUN rm -rf /var/lib/apt/lists/*
# By default we will run as this user...
RUN echo "git-sync:x:65533:65533::/tmp:/sbin/nologin" >> /etc/passwd
@ -73,21 +84,29 @@ RUN echo "git-sync:x:65533:git-sync" >> /etc/group
# they use our git-sync group. If the user needs a different group or sets
# $GIT_SYNC_ROOT or --root, their values will override this, and we assume they
# are handling permissions themselves.
ENV GIT_SYNC_ROOT=/tmp/git
RUN mkdir -m 02775 /tmp/git && chown 65533:65533 /tmp/git
# Run as non-root by default. There's simply no reason to run as root.
USER 65533:65533
# Setting HOME ensures that whatever UID this ultimately runs as can write to
# files like ~/.gitconfig.
ENV HOME=/tmp
# Add the platform-specific binary.
COPY bin/{ARG_OS}_{ARG_ARCH}/{ARG_BIN} /{ARG_BIN}
# Add third-party licenses.
COPY .licenses/ /LICENSES/
#############################################################################
# Now we make a "clean" final image.
#############################################################################
FROM scratch
COPY --from=prep / /
# Run as non-root by default. There's simply no reason to run as root.
USER 65533:65533
# Setting HOME ensures that whatever UID this ultimately runs as can write to
# files like ~/.gitconfig.
ENV HOME=/tmp
WORKDIR /tmp
# Default values for flags.
ENV GIT_SYNC_ROOT=/tmp/git
ENTRYPOINT ["/{ARG_BIN}"]

View File

@ -138,6 +138,7 @@ container: .container-$(DOTFILE_IMAGE) container-name
Dockerfile.in > .dockerfile-$(OS)_$(ARCH)
@docker buildx build \
--no-cache \
--progress=plain \
--load \
--platform "$(OS)/$(ARCH)" \
--build-arg HTTP_PROXY=$(HTTP_PROXY) \

View File

@ -1316,6 +1316,23 @@ assert_file_absent "$ROOT"/error.json
# Wrap up
pass
##############################################
# Test github HTTPS
# TODO: it would be better if we set up a local HTTPS server
##############################################
testcase "github-https"
GIT_SYNC \
--one-time \
--repo="https://github.com/kubernetes/git-sync" \
--branch=e2e-branch \
--rev=HEAD \
--root="$ROOT" \
--dest="link" \
> "$DIR"/log."$TESTCASE" 2>&1
assert_file_exists "$ROOT"/link/LICENSE
# Wrap up
pass
# Finally...
echo
echo "cleaning up $DIR"