Skip to content

Commit 27656b5

Browse files
authored
Merge pull request #3659 from SUSE/for-deploy-Tumbleweed
🤖: Update build recipes for Tumbleweed
2 parents e14b5fc + a64cfce commit 27656b5

9 files changed

Lines changed: 275 additions & 0 deletions

File tree

.obs/workflows.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,10 @@ staging_build:
245245
source_project: home:pushman:BCI:CR:Tumbleweed
246246
source_package: python-3.13-image
247247
target_project: home:pushman:BCI:CR:Tumbleweed:Staging
248+
- branch_package:
249+
source_project: home:pushman:BCI:CR:Tumbleweed
250+
source_package: python-3.14-image
251+
target_project: home:pushman:BCI:CR:Tumbleweed:Staging
248252
- branch_package:
249253
source_project: home:pushman:BCI:CR:Tumbleweed
250254
source_package: rmt-server-image
@@ -485,6 +489,9 @@ refresh_devel_BCI:
485489
- trigger_services:
486490
project: devel:BCI:Tumbleweed
487491
package: python-3.13-image
492+
- trigger_services:
493+
project: devel:BCI:Tumbleweed
494+
package: python-3.14-image
488495
- trigger_services:
489496
project: devel:BCI:Tumbleweed
490497
package: rmt-server-image

python-3.14-image/Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!ExclusiveArch: do-not-build
2+
#!ForceMultiVersion
3+
4+
# For this container we only build the Dockerfile.$flavor builds.

python-3.14-image/Dockerfile.base

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# SPDX-License-Identifier: MIT
2+
3+
# Copyright (c) 2026 SUSE LLC
4+
5+
# All modifications and additions to the file contributed by third parties
6+
# remain the property of their copyright owners, unless otherwise agreed
7+
# upon.
8+
9+
# The content of THIS FILE IS AUTOGENERATED and should not be manually modified.
10+
# It is maintained by the BCI team and generated by
11+
# https://github.com/SUSE/BCI-dockerfile-generator
12+
13+
# Please submit bugfixes or comments via https://bugs.opensuse.org/
14+
# You can contact the BCI team via https://github.com/SUSE/bci/discussions
15+
16+
#!UseOBSRepositories
17+
18+
#!BuildTag: opensuse/bci/python:%%py314_ver%%-base-%RELEASE%
19+
#!BuildTag: opensuse/bci/python:%%py314_ver%%-base
20+
#!BuildTag: opensuse/bci/python:3.14-base
21+
#!BuildTag: opensuse/bci/python:latest
22+
#!BcntSyncTag: python-3.14-image
23+
24+
FROM opensuse/tumbleweed:latest
25+
26+
RUN set -euo pipefail; \
27+
zypper -n install --no-recommends curl findutils gawk git-core procps python314 python314-devel python314-pip python314-pipx python314-wheel util-linux
28+
29+
# cleanup logs and temporary files
30+
RUN set -euo pipefail; zypper -n clean -a; \
31+
rm -rf {/target,}/var/log/{alternatives.log,lastlog,tallylog,zypper.log,zypp/history,YaST2}; \
32+
rm -rf {/target,}/run/*; \
33+
rm -f {/target,}/etc/{shadow-,group-,passwd-,.pwd.lock}; \
34+
rm -f {/target,}/usr/lib/sysimage/rpm/.rpm.lock; \
35+
rm -f {/target,}/var/lib/zypp/AnonymousUniqueId; \
36+
rm -f {/target,}/var/lib/zypp/AutoInstalled; \
37+
rm -f {/target,}/var/cache/ldconfig/aux-cache
38+
39+
# set the day of last password change to empty
40+
RUN set -euo pipefail; sed -i 's/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1\2/' /etc/shadow
41+
42+
# Define labels according to https://en.opensuse.org/Building_derived_containers
43+
# labelprefix=org.opensuse.bci.python
44+
LABEL org.opencontainers.image.title="openSUSE Tumbleweed BCI Python 3.14 development"
45+
LABEL org.opencontainers.image.description="Python 3.14 development container based on the openSUSE Tumbleweed Base Container Image."
46+
LABEL org.opencontainers.image.version="%%py314_ver%%"
47+
LABEL org.opencontainers.image.url="https://www.opensuse.org"
48+
LABEL org.opencontainers.image.created="%BUILDTIME%"
49+
LABEL org.opencontainers.image.vendor="openSUSE Project"
50+
LABEL org.opencontainers.image.source="%SOURCEURL%"
51+
LABEL org.opencontainers.image.ref.name="%%py314_ver%%-base-%RELEASE%"
52+
LABEL org.opensuse.reference="registry.opensuse.org/opensuse/bci/python:%%py314_ver%%-base-%RELEASE%"
53+
LABEL org.openbuildservice.disturl="%DISTURL%"
54+
LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime#openSUSE_BCI"
55+
LABEL org.opensuse.release-stage="released"
56+
# endlabelprefix
57+
LABEL io.artifacthub.package.readme-url="%SOURCEURL_WITH(README.base.md)%"
58+
ENV PIPX_BIN_DIR="/usr/local/bin"
59+
ENV PIPX_HOME="/usr/local/lib/pipx"
60+
ENV PIPX_MAN_DIR="/usr/local/man"
61+
ENV PIP_VERSION="%%pip_ver%%"
62+
ENV PYTHON_VERSION="%%py314_ver%%"
63+
RUN set -euo pipefail; if test -x /usr/bin/python3; then echo 'is_system_py is wrong - report a bug'; exit 1; fi; \
64+
ln -s /usr/bin/python3.14 /usr/local/bin/python3; \
65+
ln -s /usr/bin/pydoc3.14 /usr/local/bin/pydoc

python-3.14-image/Dockerfile.micro

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# SPDX-License-Identifier: MIT
2+
3+
# Copyright (c) 2026 SUSE LLC
4+
5+
# All modifications and additions to the file contributed by third parties
6+
# remain the property of their copyright owners, unless otherwise agreed
7+
# upon.
8+
9+
# The content of THIS FILE IS AUTOGENERATED and should not be manually modified.
10+
# It is maintained by the BCI team and generated by
11+
# https://github.com/SUSE/BCI-dockerfile-generator
12+
13+
# Please submit bugfixes or comments via https://bugs.opensuse.org/
14+
# You can contact the BCI team via https://github.com/SUSE/bci/discussions
15+
16+
#!UseOBSRepositories
17+
18+
#!BuildTag: opensuse/bci/python:%%py314_ver%%-micro-%RELEASE%
19+
#!BuildTag: opensuse/bci/python:%%py314_ver%%-micro
20+
#!BuildTag: opensuse/bci/python:3.14-micro
21+
#!BuildTag: opensuse/bci/python:latest
22+
#!BcntSyncTag: python-3.14-image
23+
24+
FROM opensuse/tumbleweed:latest
25+
26+
RUN set -euo pipefail; \
27+
zypper -n install --no-recommends python314 python314-pip
28+
29+
# cleanup logs and temporary files
30+
RUN set -euo pipefail; zypper -n clean -a; \
31+
rm -rf {/target,}/var/log/{alternatives.log,lastlog,tallylog,zypper.log,zypp/history,YaST2}; \
32+
rm -rf {/target,}/run/*; \
33+
rm -f {/target,}/etc/{shadow-,group-,passwd-,.pwd.lock}; \
34+
rm -f {/target,}/usr/lib/sysimage/rpm/.rpm.lock; \
35+
rm -f {/target,}/var/lib/zypp/AnonymousUniqueId; \
36+
rm -f {/target,}/var/lib/zypp/AutoInstalled; \
37+
rm -f {/target,}/var/cache/ldconfig/aux-cache
38+
39+
# set the day of last password change to empty
40+
RUN set -euo pipefail; sed -i 's/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1\2/' /etc/shadow
41+
42+
# Define labels according to https://en.opensuse.org/Building_derived_containers
43+
# labelprefix=org.opensuse.bci.python
44+
LABEL org.opencontainers.image.title="openSUSE Tumbleweed BCI Python 3.14 micro runtime"
45+
LABEL org.opencontainers.image.description="Python 3.14 micro runtime container based on the openSUSE Tumbleweed Base Container Image."
46+
LABEL org.opencontainers.image.version="%%py314_ver%%"
47+
LABEL org.opencontainers.image.url="https://www.opensuse.org"
48+
LABEL org.opencontainers.image.created="%BUILDTIME%"
49+
LABEL org.opencontainers.image.vendor="openSUSE Project"
50+
LABEL org.opencontainers.image.source="%SOURCEURL%"
51+
LABEL org.opencontainers.image.ref.name="%%py314_ver%%-micro-%RELEASE%"
52+
LABEL org.opensuse.reference="registry.opensuse.org/opensuse/bci/python:%%py314_ver%%-micro-%RELEASE%"
53+
LABEL org.openbuildservice.disturl="%DISTURL%"
54+
LABEL org.opensuse.lifecycle-url="https://en.opensuse.org/Lifetime#openSUSE_BCI"
55+
LABEL org.opensuse.release-stage="released"
56+
# endlabelprefix
57+
LABEL io.artifacthub.package.readme-url="%SOURCEURL_WITH(README.micro.md)%"
58+
ENV PIPX_BIN_DIR="/usr/local/bin"
59+
ENV PIPX_HOME="/usr/local/lib/pipx"
60+
ENV PIPX_MAN_DIR="/usr/local/man"
61+
ENV PIP_VERSION="%%pip_ver%%"
62+
ENV PYTHON_VERSION="%%py314_ver%%"
63+
RUN set -euo pipefail; if test -x /usr/bin/python3; then echo 'is_system_py is wrong - report a bug'; exit 1; fi; \
64+
ln -s /usr/bin/python3.14 /usr/local/bin/python3; \
65+
ln -s /usr/bin/pydoc3.14 /usr/local/bin/pydoc

python-3.14-image/README.base.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Python 3.14 development container image
2+
3+
![Redistributable](https://img.shields.io/badge/Redistributable-Yes-green)
4+
5+
## Description
6+
7+
[Python](https://www.python.org/) is an interpreted, interactive, object-oriented, open source programming language. It incorporates modules, exceptions, dynamic typing, high-level dynamic data types, and classes. It provides interfaces to many system calls, libraries, and various window systems, and it is extensible in C or C++. It is also usable as an extension language for applications that require programmable interfaces.
8+
9+
## Usage
10+
11+
To deploy an application, install dependencies, copy the sources, and configure the application's main script:
12+
13+
```Dockerfile
14+
FROM registry.opensuse.org/opensuse/bci/python:3.14-base
15+
16+
WORKDIR /app
17+
18+
COPY requirements.txt ./
19+
RUN pip install --no-cache-dir -r requirements.txt
20+
21+
COPY . .
22+
23+
CMD [ "python3", "./main-script.py" ]
24+
```
25+
26+
Build and run the container image:
27+
28+
```ShellSession
29+
$ podman build -t my-python-app .
30+
$ podman run -it --rm my-python-app
31+
```
32+
33+
To run a single script inside a container, use the following command:
34+
35+
```ShellSession
36+
$ podman run --rm -v "$PWD":/app:Z -w /app registry.opensuse.org/opensuse/bci/python:3.14-base python3 script.py
37+
```
38+
39+
## Additional tools
40+
41+
The Python container image includes [pip](https://pip.pypa.io/), [pipx](https://pipx.pypa.io/), [wheel](https://wheel.readthedocs.io/), Python Development Headers, and Git.
42+
43+
## Licensing
44+
45+
`SPDX-License-Identifier: MIT`
46+
47+
This documentation and the build recipe are licensed as MIT.
48+
The container itself contains various software components under various open source licenses listed in the associated
49+
Software Bill of Materials (SBOM).
50+
51+
This image is based on [openSUSE Tumbleweed](https://get.opensuse.org/tumbleweed/).

python-3.14-image/README.micro.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Python 3.14 micro runtime container image
2+
3+
![Redistributable](https://img.shields.io/badge/Redistributable-Yes-green)
4+
5+
## Description
6+
7+
[Python](https://www.python.org/) is an interpreted, interactive, object-oriented, open source programming language. It incorporates modules, exceptions, dynamic typing, high-level dynamic data types, and classes. It provides interfaces to many system calls, libraries, and various window systems, and it is extensible in C or C++. It is also usable as an extension language for applications that require programmable interfaces.
8+
9+
## Usage
10+
11+
To deploy an application, install dependencies, copy the sources, and configure the application's main script:
12+
13+
```Dockerfile
14+
FROM registry.opensuse.org/opensuse/bci/python:3.14-micro
15+
16+
WORKDIR /app
17+
18+
COPY requirements.txt ./
19+
RUN pip install --no-cache-dir -r requirements.txt
20+
21+
COPY . .
22+
23+
CMD [ "python3", "./main-script.py" ]
24+
```
25+
26+
Build and run the container image:
27+
28+
```ShellSession
29+
$ podman build -t my-python-app .
30+
$ podman run -it --rm my-python-app
31+
```
32+
33+
To run a single script inside a container, use the following command:
34+
35+
```ShellSession
36+
$ podman run --rm -v "$PWD":/app:Z -w /app registry.opensuse.org/opensuse/bci/python:3.14-micro python3 script.py
37+
```
38+
39+
## Additional tools
40+
41+
The Python container image includes [pip](https://pip.pypa.io/), [pipx](https://pipx.pypa.io/), [wheel](https://wheel.readthedocs.io/), Python Development Headers, and Git.
42+
43+
## Licensing
44+
45+
`SPDX-License-Identifier: MIT`
46+
47+
This documentation and the build recipe are licensed as MIT.
48+
The container itself contains various software components under various open source licenses listed in the associated
49+
Software Bill of Materials (SBOM).
50+
51+
This image is based on [openSUSE Tumbleweed](https://get.opensuse.org/tumbleweed/).

python-3.14-image/_multibuild

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<multibuild>
2+
<package>base</package>
3+
<package>micro</package>
4+
</multibuild>

python-3.14-image/_service

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<services>
2+
<service mode="buildtime" name="docker_label_helper"/>
3+
<service mode="buildtime" name="kiwi_metainfo_helper"/>
4+
<service mode="buildtime" name="replace_using_package_version">
5+
<param name="file">Dockerfile.base</param>
6+
<param name="regex">%%py314_ver%%</param>
7+
<param name="package">python314-base</param>
8+
</service>
9+
<service mode="buildtime" name="replace_using_package_version">
10+
<param name="file">Dockerfile.base</param>
11+
<param name="regex">%%pip_ver%%</param>
12+
<param name="package">python314-pip</param>
13+
</service>
14+
<service mode="buildtime" name="replace_using_package_version">
15+
<param name="file">Dockerfile.micro</param>
16+
<param name="regex">%%py314_ver%%</param>
17+
<param name="package">python314-base</param>
18+
</service>
19+
<service mode="buildtime" name="replace_using_package_version">
20+
<param name="file">Dockerfile.micro</param>
21+
<param name="regex">%%pip_ver%%</param>
22+
<param name="package">python314-pip</param>
23+
</service>
24+
</services>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-------------------------------------------------------------------
2+
Mon Apr 13 10:40:22 UTC 2026 - SUSE Update Bot <bci-internal@suse.de>
3+
4+
- First version of the Python 3.14 development BCI

0 commit comments

Comments
 (0)