ARG EE_BASE_IMAGE="registry.access.redhat.com/ubi9/ubi:latest" ARG PYCMD="/usr/bin/python3" ARG PKGMGR_PRESERVE_CACHE="" ARG ANSIBLE_GALAXY_CLI_COLLECTION_OPTS="" ARG ANSIBLE_GALAXY_CLI_ROLE_OPTS="" ARG ANSIBLE_INSTALL_REFS="ansible-core ansible-runner" ARG PKGMGR="/usr/bin/dnf" # Base build stage FROM $EE_BASE_IMAGE as base USER root ENV PIP_BREAK_SYSTEM_PACKAGES=1 ARG EE_BASE_IMAGE ARG PYCMD ARG PKGMGR_PRESERVE_CACHE ARG ANSIBLE_GALAXY_CLI_COLLECTION_OPTS ARG ANSIBLE_GALAXY_CLI_ROLE_OPTS ARG ANSIBLE_INSTALL_REFS ARG PKGMGR COPY _build/scripts/ /output/scripts/ COPY _build/scripts/entrypoint /opt/builder/bin/entrypoint # Install dependencies required for building from source RUN dnf install -y gcc make automake autoconf libtool wget python3-devel RUN pip install --upgrade pip # Download, build, and install Oniguruma from source RUN wget https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz \ && tar xzf onig-6.9.8.tar.gz \ && cd onig-6.9.8 \ && ./configure \ && make \ && make install \ && cd .. \ && rm -rf onig-6.9.8 onig-6.9.8.tar.gz # Ensure libraries are linked RUN ldconfig RUN dnf install -y --enablerepo=rhocp-4.16-for-rhel-9-x86_64-rpms openshift-clients RUN /output/scripts/pip_install $PYCMD RUN $PYCMD -m pip install --no-cache-dir $ANSIBLE_INSTALL_REFS # Galaxy build stage FROM base as galaxy ARG EE_BASE_IMAGE ARG PYCMD ARG PKGMGR_PRESERVE_CACHE ARG ANSIBLE_GALAXY_CLI_COLLECTION_OPTS ARG ANSIBLE_GALAXY_CLI_ROLE_OPTS ARG ANSIBLE_INSTALL_REFS ARG PKGMGR RUN /output/scripts/check_galaxy COPY _build /build WORKDIR /build RUN mkdir -p /usr/share/ansible RUN ansible-galaxy role install $ANSIBLE_GALAXY_CLI_ROLE_OPTS -r requirements.yml --roles-path "/usr/share/ansible/roles" RUN ANSIBLE_GALAXY_DISABLE_GPG_VERIFY=1 ansible-galaxy collection install $ANSIBLE_GALAXY_CLI_COLLECTION_OPTS -r requirements.yml --collections-path "/usr/share/ansible/collections" # Builder build stage FROM base as builder ENV PIP_BREAK_SYSTEM_PACKAGES=1 WORKDIR /build ARG EE_BASE_IMAGE ARG PYCMD ARG PKGMGR_PRESERVE_CACHE ARG ANSIBLE_GALAXY_CLI_COLLECTION_OPTS ARG ANSIBLE_GALAXY_CLI_ROLE_OPTS ARG ANSIBLE_INSTALL_REFS ARG PKGMGR RUN $PYCMD -m pip install --no-cache-dir bindep pyyaml packaging COPY --from=galaxy /usr/share/ansible /usr/share/ansible COPY _build/requirements.txt requirements.txt COPY _build/bindep.txt bindep.txt RUN $PYCMD /output/scripts/introspect.py introspect --user-pip=requirements.txt --user-bindep=bindep.txt --write-bindep=/tmp/src/bindep.txt --write-pip=/tmp/src/requirements.txt RUN /output/scripts/assemble # Final build stage FROM base as final ENV PIP_BREAK_SYSTEM_PACKAGES=1 ARG EE_BASE_IMAGE ARG PYCMD ARG PKGMGR_PRESERVE_CACHE ARG ANSIBLE_GALAXY_CLI_COLLECTION_OPTS ARG ANSIBLE_GALAXY_CLI_ROLE_OPTS ARG ANSIBLE_INSTALL_REFS ARG PKGMGR RUN /output/scripts/check_ansible $PYCMD COPY --from=galaxy /usr/share/ansible /usr/share/ansible COPY --from=builder /output/ /output/ RUN /output/scripts/install-from-bindep && rm -rf /output/wheels RUN chmod ug+rw /etc/passwd RUN mkdir -p /runner && chgrp 0 /runner && chmod -R ug+rwx /runner WORKDIR /runner RUN $PYCMD -m pip install --no-cache-dir 'dumb-init==1.2.5' RUN rm -rf /output LABEL ansible-execution-environment=true USER 1000 ENTRYPOINT ["/opt/builder/bin/entrypoint", "dumb-init"] CMD ["bash"]