Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/workflows/containers-openstack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ jobs:
- cinder
- glance
- horizon
- ironic
- keystone
- neutron
- nova
Expand All @@ -51,3 +50,13 @@ jobs:
dockerfile_path: containers/${{ matrix.project }}/Dockerfile
build_args: OPENSTACK_VERSION=2025.2
latest_name: "2025.2"

ironic:
uses: ./.github/workflows/build-container-reuse.yaml
secrets: inherit
with:
container_name: ironic
dockerfile_path: containers/ironic/Dockerfile
build_args: OPENSTACK_VERSION=2026.1
latest_name: "2026.1"
target: final
10 changes: 5 additions & 5 deletions components/images-openstack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ images:
keystone_fernet_setup: "ghcr.io/rackerlabs/understack/keystone:2025.2"

# ironic
ironic_api: "ghcr.io/rackerlabs/understack/ironic:2025.2"
ironic_conductor: "ghcr.io/rackerlabs/understack/ironic:2025.2"
ironic_pxe: "ghcr.io/rackerlabs/understack/ironic:2025.2"
ironic_pxe_init: "ghcr.io/rackerlabs/understack/ironic:2025.2"
ironic_api: "ghcr.io/rackerlabs/understack/ironic:2026.1"
ironic_conductor: "ghcr.io/rackerlabs/understack/ironic:2026.1"
ironic_pxe: "ghcr.io/rackerlabs/understack/ironic:2026.1"
ironic_pxe_init: "ghcr.io/rackerlabs/understack/ironic:2026.1"
ironic_pxe_http: "docker.io/nginx:1.29.8"
ironic_db_sync: "ghcr.io/rackerlabs/understack/ironic:2025.2"
ironic_db_sync: "ghcr.io/rackerlabs/understack/ironic:2026.1"
# these want curl which apparently is in the openstack-client image
ironic_manage_cleaning_network: "ghcr.io/rackerlabs/understack/openstack-client:2025.2"
ironic_retrive_cleaning_network: "ghcr.io/rackerlabs/understack/openstack-client:2025.2"
Expand Down
25 changes: 12 additions & 13 deletions containers/ironic/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1

ARG OPENSTACK_VERSION="required_argument"
FROM quay.io/airshipit/ironic:${OPENSTACK_VERSION}-ubuntu_noble AS build
FROM quay.io/airshipit/venv_builder:2026.1-ubuntu_noble AS build

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

Expand All @@ -12,16 +12,15 @@ RUN apt-get update && \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

# clone source and patch it
# renovate: name=openstack/ironic repo=https://github.com/rackerlabs/ironic.git branch=understack/2025.2
ARG IRONIC_GIT_REF=3800a4d71cad3343f6810ab53a9732e7badcb69f
# renovate: name=openstack/ironic repo=https://github.com/rackerlabs/ironic.git branch=understack/2026.1
ARG IRONIC_GIT_REF=a21904bdcc7b028aa15f5016c8c7c00d17b1f31b
ADD --keep-git-dir=true https://github.com/rackerlabs/ironic.git#${IRONIC_GIT_REF} /src/ironic
RUN git -C /src/ironic fetch --unshallow --tags

COPY python/ironic-understack /src/understack/ironic-understack
COPY python/understack-flavor-matcher /src/understack/understack-flavor-matcher

ARG OPENSTACK_VERSION="required_argument"
ARG NOVNC_VERSION=1.6.0
RUN --mount=type=cache,target=/root/.cache/uv \
uv pip install \
--upgrade \
Expand All @@ -34,10 +33,9 @@ RUN --mount=type=cache,target=/root/.cache/uv \
COPY containers/ironic/patches /tmp/patches/
RUN cd /var/lib/openstack/lib/python3.12/site-packages && \
patch -p1 < /tmp/patches/0002-Solve-IPMI-call-issue-results-in-UTF-8-format-error-.patch
RUN cd /var/lib/openstack/lib/python3.12/site-packages && \
patch -p1 < /tmp/patches/0003-Handle-missing-storage-controller-mode-attribute.patch

# download and unpack novnc
ARG NOVNC_VERSION=1.6.0
RUN \
export URL=https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.tar.gz && \
export DEST_FILE=novnc-${NOVNC_VERSION}.tar.gz && \
Expand All @@ -51,14 +49,16 @@ COPY containers/ironic/ironic-console-pod.yaml.template /var/lib/openstack/lib/p
# renovate: datasource=docker depName=ghcr.io/rackerlabs/understack/ironic-ipxe versioning=semver
FROM ghcr.io/rackerlabs/understack/ironic-ipxe:1.0.0 AS ipxe

ARG OPENSTACK_VERSION="required_argument"
FROM quay.io/airshipit/ironic:${OPENSTACK_VERSION}-ubuntu_noble AS final

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN wget -qO- https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg && \
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg && \
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /' > /etc/apt/sources.list.d/kubernetes.list && \
chmod 644 /etc/apt/sources.list.d/kubernetes.list
ENV PATH="/var/lib/openstack/bin:$PATH"

RUN <<EOF bash -xe
wget -qO- https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /' > /etc/apt/sources.list.d/kubernetes.list
chmod 644 /etc/apt/sources.list.d/kubernetes.list
EOF

RUN apt-get update && \
apt-get install -y --no-install-recommends \
Expand All @@ -67,7 +67,6 @@ RUN apt-get update && \
kubectl \
&& apt-get clean && rm -rf /var/lib/apt/lists/*


COPY --from=build --link /var/lib/openstack /var/lib/openstack
COPY --from=build /usr/share/novnc /usr/share/novnc
COPY --from=ipxe /snponly.efi /usr/lib/ipxe/snponly.efi
2 changes: 1 addition & 1 deletion python/ironic-understack/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ requires-python = "~=3.12.0"
readme = "README.md"
license = "MIT"
dependencies = [
"ironic>=32.0,<33",
"ironic>=32.0,<36",
"pyyaml~=6.0",
"understack-flavor-matcher",
]
Expand Down
2 changes: 1 addition & 1 deletion python/ironic-understack/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading