podman-registry: many unrelated fixes

1) fix lost credentials.

    must_pass(), added in #6375, eats the credentials
    generated via 'podman run --entrypoint htpasswd'.
    Run that podman instance directly, and add explicit
    error check.

    (The error and stdout/stderr handling here has gotten
    cumbersome. There must be something I'm missing that
    could make it all simpler.)

 2) fix default podman path.

    When setting $PODMAN, default to the locally built
    one -- there may not be one in $PATH (e.g. in
    Ubuntu, see #6366). This in turn requires us to:

 3) run registry test in integration, not unit test

    It looks like unit tests run before podman is built,
    causing a chicken-egg dilemma. Try to solve that by
    running the new hack/podman-registry-go test in
    integration tests, not unit tests.

Signed-off-by: Ed Santiago <santiago@redhat.com>
This commit is contained in:
Ed Santiago 2020-05-26 05:18:16 -06:00
parent 1077d2d0b7
commit b81b865b52
2 changed files with 13 additions and 8 deletions

View File

@ -318,7 +318,7 @@ localunit: test/goecho/goecho varlink_generate
ginkgo \ ginkgo \
-r \ -r \
$(TESTFLAGS) \ $(TESTFLAGS) \
--skipPackage test/e2e,pkg/apparmor,test/endpoint,pkg/bindings \ --skipPackage test/e2e,pkg/apparmor,test/endpoint,pkg/bindings,hack \
--cover \ --cover \
--covermode atomic \ --covermode atomic \
--tags "$(BUILDTAGS)" \ --tags "$(BUILDTAGS)" \
@ -326,7 +326,7 @@ localunit: test/goecho/goecho varlink_generate
.PHONY: ginkgo .PHONY: ginkgo
ginkgo: ginkgo:
ginkgo -v $(TESTFLAGS) -tags "$(BUILDTAGS)" $(GINKGOTIMEOUT) -cover -flakeAttempts 3 -progress -trace -noColor -nodes 3 -debug test/e2e/. ginkgo -v $(TESTFLAGS) -tags "$(BUILDTAGS)" $(GINKGOTIMEOUT) -cover -flakeAttempts 3 -progress -trace -noColor -nodes 3 -debug test/e2e/. hack/.
.PHONY: ginkgo-remote .PHONY: ginkgo-remote
ginkgo-remote: ginkgo-remote:

View File

@ -14,7 +14,7 @@ PODMAN_REGISTRY_PASS=
PODMAN_REGISTRY_PORT= PODMAN_REGISTRY_PORT=
# Podman binary to run # Podman binary to run
PODMAN=${PODMAN:-$(type -p podman)} PODMAN=${PODMAN:-$(dirname $0)/../bin/podman}
# END defaults # END defaults
############################################################################### ###############################################################################
@ -176,11 +176,16 @@ function do_start() {
-out ${AUTHDIR}/domain.crt \ -out ${AUTHDIR}/domain.crt \
-subj "/C=US/ST=Foo/L=Bar/O=Red Hat, Inc./CN=localhost" -subj "/C=US/ST=Foo/L=Bar/O=Red Hat, Inc./CN=localhost"
# Store credentials where container will see them # Store credentials where container will see them. We can't run
must_pass podman run --rm \ # this one via must_pass because we need its stdout.
--entrypoint htpasswd ${PODMAN_REGISTRY_IMAGE} \ podman run --rm \
-Bbn ${PODMAN_REGISTRY_USER} ${PODMAN_REGISTRY_PASS} \ --entrypoint htpasswd ${PODMAN_REGISTRY_IMAGE} \
> $AUTHDIR/htpasswd -Bbn ${PODMAN_REGISTRY_USER} ${PODMAN_REGISTRY_PASS} \
> $AUTHDIR/htpasswd
if [ $? -ne 0 ]; then
rm -rf ${PODMAN_REGISTRY_WORKDIR}
die "Command failed: podman run [htpasswd]"
fi
# In case someone needs to debug # In case someone needs to debug
echo "${PODMAN_REGISTRY_USER}:${PODMAN_REGISTRY_PASS}" \ echo "${PODMAN_REGISTRY_USER}:${PODMAN_REGISTRY_PASS}" \