install mbs in the container images using pip

Removing the requirement to build the rpm as part of the image build simplifies the
build process and reduces fragility introduced by trying to keep the rpm build and
image builds in sync.
This commit is contained in:
Mike Bonnet
2022-08-17 16:47:55 -07:00
parent d676e06396
commit ecf7da7aa3
2 changed files with 48 additions and 40 deletions

View File

@@ -1,54 +1,70 @@
FROM fedora:31 AS builder
FROM registry.fedoraproject.org/fedora:latest AS builder
ARG EXTRA_RPMS=""
ARG GIT_REPO=""
ARG GIT_REF=""
ARG VERSION=""
ARG CREATED=""
ARG DNF_CMD="dnf -y --setopt=deltarpm=0 --setopt=install_weak_deps=false --setopt=tsflags=nodocs"
COPY . /src
WORKDIR /src
RUN ${DNF_CMD} install \
'dnf-command(builddep)' rpm-build rpmdevtools rpmlint \
python3-tox python3-pytest python3-pytest-cov python3-mock python3-flake8 bandit && \
${DNF_CMD} builddep *.spec && \
${DNF_CMD} clean all
RUN rpmdev-setuptree && \
python3 setup.py sdist && \
rpmbuild --define "_sourcedir $PWD/dist" -ba *.spec && \
mv $HOME/rpmbuild/RPMS /srv
RUN flake8 && \
bandit -r -ll -s B102,B104,B303,B411,B602 module_build_service && \
tox -v -e py3
RUN $DNF_CMD install \
python3-setuptools python3-wheel && \
$DNF_CMD clean all
RUN python3 setup.py bdist_wheel -u root -g root
FROM registry.fedoraproject.org/fedora:latest
ARG DNF_CMD="dnf -y --setopt=deltarpm=0 --setopt=install_weak_deps=false --setopt=tsflags=nodocs"
ARG EXTRA_RPMS=""
FROM fedora:31
LABEL \
org.opencontainers.image.title="Backend for the Module Build Service (MBS)" \
org.opencontainers.image.description="The MBS coordinates module builds. This image is to serve as the MBS backend." \
org.opencontainers.image.vendor="The Factory 2.0 Team" \
org.opencontainers.image.authors="The Factory 2.0 Team <pnt-factory2-devel@redhat.com>" \
org.opencontainers.image.vendor="The Brew Guild" \
org.opencontainers.image.authors="The Brew Guild <brew-devel@redhat.com>" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.source="$GIT_REPO" \
org.opencontainers.image.revision="$GIT_REF" \
org.opencontainers.image.version="$VERSION" \
org.opencontainers.image.created="$CREATED" \
org.opencontainers.image.url="https://pagure.io/fm-orchestrator" \
org.opencontainers.image.documentation="https://pagure.io/fm-orchestrator" \
distribution-scope="public"
COPY --from=builder /srv/RPMS /srv/RPMS
COPY repos/ /etc/yum.repos.d/
COPY --from=builder /src/dist /src/dist
RUN $DNF_CMD install \
python3-celery \
python3-distro \
python3-dnf \
python3-docopt \
python3-dogpile-cache \
python3-fedmsg \
python3-flask \
python3-flask-migrate \
python3-flask-sqlalchemy \
python3-kobo \
python3-kobo-rpmlib \
python3-koji \
python3-ldap3 \
python3-libmodulemd \
python3-m2crypto \
python3-moksha-hub \
python3-munch \
python3-openidc-client \
python3-packaging \
python3-pip \
python3-prometheus_client \
python3-psycopg2 \
python3-pungi \
python3-pyOpenSSL \
python3-pyparsing \
python3-requests \
python3-service-identity \
/srv/*/*/*.rpm \
python3-six \
python3-solv \
python3-sqlalchemy \
git-core \
$EXTRA_RPMS && \
$DNF_CMD clean all && \
rm -rf /srv/RPMS
rm -f /etc/fedmsg.d/* && \
$DNF_CMD clean all
# Install locally available python wheels only.
# Any new/updated dependencies should be installed via rpm.
RUN pip-3 install --no-deps /src/dist/*.whl
USER 1001

View File

@@ -1,22 +1,14 @@
# See `../backend/` for building `mbs-backend:latest`
FROM mbs-backend:latest
ARG GIT_REPO=""
ARG GIT_REF=""
ARG VERSION=""
ARG CREATED=""
ARG DNF_CMD="dnf -y --setopt=deltarpm=0 --setopt=install_weak_deps=false --setopt=tsflags=nodocs"
LABEL \
org.opencontainers.image.title="Frontend for the Module Build Service (MBS)" \
org.opencontainers.image.description="The MBS coordinates module builds. This image is to serve as the MBS frontend." \
org.opencontainers.image.vendor="The Factory 2.0 Team" \
org.opencontainers.image.authors="The Factory 2.0 Team <pnt-factory2-devel@redhat.com>" \
org.opencontainers.image.vendor="The Brew Guild" \
org.opencontainers.image.authors="The Brew Guild <brew-devel@redhat.com>" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.source="$GIT_REPO" \
org.opencontainers.image.revision="$GIT_REF" \
org.opencontainers.image.version="$VERSION" \
org.opencontainers.image.created="$CREATED" \
org.opencontainers.image.url="https://pagure.io/fm-orchestrator" \
org.opencontainers.image.documentation="https://pagure.io/fm-orchestrator" \
io.openshift.expose-services="8080:http,8443:https" \