diff --git a/.obs/workflows.yml b/.obs/workflows.yml
index 16dab16d5..0f3e1814e 100644
--- a/.obs/workflows.yml
+++ b/.obs/workflows.yml
@@ -105,6 +105,10 @@ staging_build:
source_project: home:defolos:BCI:CR:Tumbleweed
source_package: openjdk-21-devel-image
target_project: home:defolos:BCI:CR:Tumbleweed:Staging
+ - branch_package:
+ source_project: home:defolos:BCI:CR:Tumbleweed
+ source_package: packaging-image
+ target_project: home:defolos:BCI:CR:Tumbleweed:Staging
- branch_package:
source_project: home:defolos:BCI:CR:Tumbleweed
source_package: pcp-image
@@ -288,6 +292,9 @@ refresh_devel_BCI:
- trigger_services:
project: devel:BCI:Tumbleweed
package: openjdk-21-devel-image
+ - trigger_services:
+ project: devel:BCI:Tumbleweed
+ package: packaging-image
- trigger_services:
project: devel:BCI:Tumbleweed
package: pcp-image
diff --git a/packaging-image/Dockerfile b/packaging-image/Dockerfile
new file mode 100644
index 000000000..0cce7d5a3
--- /dev/null
+++ b/packaging-image/Dockerfile
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: MIT
+
+# Copyright (c) 2024 SUSE LLC
+
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon.
+
+# The content of THIS FILE IS AUTOGENERATED and should not be manually modified.
+# It is maintained by the BCI team and generated by
+# https://github.com/SUSE/BCI-dockerfile-generator
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# You can contact the BCI team via https://github.com/SUSE/bci/discussions
+
+
+#!BuildTag: opensuse/osc:%%osc_version%%
+#!BuildTag: opensuse/osc:%%osc_version%%-%RELEASE%
+#!BuildTag: opensuse/osc:latest
+
+FROM opensuse/tumbleweed:latest
+
+MAINTAINER openSUSE (https://www.opensuse.org/)
+
+# Define labels according to https://en.opensuse.org/Building_derived_containers
+# labelprefix=org.opensuse.application.osc
+LABEL org.opencontainers.image.title="openSUSE Tumbleweed Packaging"
+LABEL org.opencontainers.image.description="Packaging container based on the openSUSE Tumbleweed Base Container Image."
+LABEL org.opencontainers.image.version="%%osc_version%%"
+LABEL org.opencontainers.image.url="https://www.opensuse.org"
+LABEL org.opencontainers.image.created="%BUILDTIME%"
+LABEL org.opencontainers.image.vendor="openSUSE Project"
+LABEL org.opencontainers.image.source="%SOURCEURL%"
+LABEL io.artifacthub.package.readme-url="https://raw.githubusercontent.com/SUSE/BCI-dockerfile-generator/Tumbleweed/packaging-image/README.md"
+LABEL org.opensuse.reference="registry.opensuse.org/opensuse/osc:%%osc_version%%-%RELEASE%"
+LABEL org.openbuildservice.disturl="%DISTURL%"
+LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime"
+LABEL org.opensuse.release-stage="released"
+
+# endlabelprefix
+LABEL run="podman run --rm -it -v ~/.config/osc/oscrc:/root/.config/osc/oscrc:ro,z -v ~/.local/state/osc/cookiejar:/root/.local/state/osc/cookiejar:z IMAGE"
+LABEL runcwd="podman run --rm -it -v ~/.config/osc/oscrc:/root/.config/osc/oscrc:ro,z -v ~/.local/state/osc/cookiejar:/root/.local/state/osc/cookiejar:z -v .:/root/osc-workdir:z IMAGE"
+
+RUN set -euo pipefail; zypper -n in --no-recommends osc obs-service-appimage obs-service-cargo obs-service-cdi_containers_meta obs-service-compose_kiwi_description obs-service-docker_label_helper obs-service-download_assets obs-service-download_files obs-service-download_url obs-service-extract_file obs-service-format_spec_file obs-service-go_modules obs-service-kiwi_label_helper obs-service-kiwi_metainfo_helper obs-service-kubevirt_containers_meta obs-service-node_modules obs-service-obs_scm cpio obs-service-product_converter obs-service-recompress obs-service-refresh_patches obs-service-replace_using_env obs-service-replace_using_package_version obs-service-set_version obs-service-snapcraft obs-service-source_validator obs-service-tar obs-service-tar_scm obs-service-verify_file openSUSE-release openSUSE-release-appliance-docker git openssh-common openssh-clients; zypper -n clean; rm -rf /var/log/{lastlog,tallylog,zypper.log,zypp/history,YaST2}
+ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
+CMD ["/bin/bash"]
+WORKDIR /root/osc-workdir
+COPY entrypoint.sh /usr/local/bin/entrypoint.sh
+RUN chmod +x /usr/local/bin/entrypoint.sh
+
+VOLUME /var/tmp
diff --git a/packaging-image/README.md b/packaging-image/README.md
new file mode 100644
index 000000000..e652da632
--- /dev/null
+++ b/packaging-image/README.md
@@ -0,0 +1,61 @@
+# Packaging Container
+
+This is the openSUSE packaging container image, it includes all the necessary
+software to create and modify packages on the [Open Build
+Service](https://build.opensuse.org/) using
+[osc](https://github.com/openSUSE/osc/).
+
+
+## How to use this container image
+
+This container image is intended for interactive usage with your `.oscrc` and
+the osc cookiejar mounted into the container:
+
+```ShellSession
+# podman run --rm -it \
+ -v ~/.config/osc/oscrc:/root/.config/osc/oscrc:ro,z \
+ -v ~/.local/state/osc/cookiejar:/root/.local/state/osc/cookiejar:rw,z \
+ registry.opensuse.org/opensuse/osc:%%osc_version%%-%RELEASE%
+```
+
+The above command launches an interactive shell where your local osc config will
+be used. You can then proceed to checkout packages, perform modifications and
+send submissions to OBS.
+
+To work on an already checked out package, mount the current working directory
+as well:
+
+```ShellSession
+# podman run --rm -it \
+ -v ~/.config/osc/oscrc:/root/.config/osc/oscrc:ro,z \
+ -v ~/.local/state/osc/cookiejar:/root/.local/state/osc/cookiejar:z \
+ -v .:/root/osc-workdir:z \
+ registry.opensuse.org/opensuse/osc:%%osc_version%%-%RELEASE%
+```
+
+### Connecting to build.suse.de
+
+build.suse.de uses a ssh based authentication and thus requires additional
+resources to be available in the container:
+
+```ShellSession
+# podman run --rm -it \
+ -v ~/.config/osc/oscrc:/root/.config/osc/oscrc:ro,z \
+ -v ~/.local/state/osc/cookiejar:/root/.local/state/osc/cookiejar:z \
+ -v /etc/ssl/ca-bundle.pem:/etc/ssl/ca-bundle.pem:ro,z \
+ -v $SSH_AUTH_SOCK:/run/user/0/ssh-agent.socket:z \
+ -e SSH_AUTH_SOCK=/var/run/user/0/ssh-agent.socket:z \
+ -v "$PWD":/root/osc-workdir:z \
+ registry.opensuse.org/opensuse/osc:%%osc_version%%-%RELEASE%
+```
+
+
+## Limitations
+
+- It is currently not possible to build packages in a container.
+
+
+## Volumes
+
+The container image is preconfigured to put `/var/tmp` into a volume. This
+directory is used by `osc` to store the buildroot and the package cache.
\ No newline at end of file
diff --git a/packaging-image/_service b/packaging-image/_service
new file mode 100644
index 000000000..37cff407b
--- /dev/null
+++ b/packaging-image/_service
@@ -0,0 +1,9 @@
+
+
+
+
+ Dockerfile
+ %%osc_version%%
+ osc
+
+
\ No newline at end of file
diff --git a/packaging-image/entrypoint.sh b/packaging-image/entrypoint.sh
new file mode 100644
index 000000000..1fc61607b
--- /dev/null
+++ b/packaging-image/entrypoint.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [[ ! -e /root/.config/osc/oscrc ]]; then
+ cat << EOF
+This container is expected to be launched with your oscrc mounted to
+/root/.config/osc/oscrc
+
+Please consult the README or the label 'run' for the full invocation.
+EOF
+fi
+
+
+exec "$@"
diff --git a/packaging-image/packaging-image.changes b/packaging-image/packaging-image.changes
new file mode 100644
index 000000000..ec78903d9
--- /dev/null
+++ b/packaging-image/packaging-image.changes
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Sat Apr 27 08:07:53 UTC 2024 - SUSE Update Bot
+
+- First version of the Packaging BCI