ARG EE_BASE_IMAGE="quay.io/centos/centos:stream9" ARG PYCMD="/usr/bin/python3.12" ARG PYPKG="python3.12" ARG PKGMGR_PRESERVE_CACHE="" ARG ANSIBLE_GALAXY_CLI_COLLECTION_OPTS="" ARG ANSIBLE_GALAXY_CLI_ROLE_OPTS="" ARG ANSIBLE_INSTALL_REFS="ansible-core>=2.17.0 ansible-runner==2.4.0" 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 PYPKG 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 RUN $PKGMGR install $PYPKG -y ; if [ -z $PKGMGR_PRESERVE_CACHE ]; then $PKGMGR clean all; fi 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 PYPKG 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 PYPKG 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 PYPKG 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"]