Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
2ffe650
openSUSE Leap 15.2 is EOL as of Jan. 4, 2022.
moritzbuhl Jul 22, 2026
b10b2ce
Ubuntu 20.04 is EOL.
moritzbuhl Jul 22, 2026
d65c839
migrate from LABEL <key> <value> to <key>=<value>
joholl Mar 20, 2026
e6d65d8
Update the Ubuntu ARM containers to 26.04.
moritzbuhl Jul 22, 2026
fc970f5
Ubuntu 20.04 is EOL.
moritzbuhl Jul 22, 2026
d49d020
Remove unused curl module.
moritzbuhl Jul 22, 2026
e79267d
Create a Ubuntu 26.04 container.
moritzbuhl Jul 20, 2026
8986af7
Use ubuntu versions instead of names to declare the base images.
moritzbuhl Jul 22, 2026
0f6d101
mbedtls-3.1 is old and not actively maintained.
moritzbuhl Jul 22, 2026
aa515a9
Update to mbedtls-3.6.7.
moritzbuhl Jul 22, 2026
a042bc0
Add a hack to build other architectures in WSL.
moritzbuhl Jul 22, 2026
16f0b70
Update to alpine 3.23 and 3.24.
moritzbuhl Jul 22, 2026
1c7a053
Fedora 41 is EOL since Dec. 15th, 2025.
moritzbuhl Jul 22, 2026
e7e8455
Update the Fedora images.
moritzbuhl Jul 22, 2026
b506646
Remove old ibmtpm module.
moritzbuhl Jul 22, 2026
4aeb124
Merge RUN commands.
moritzbuhl Jul 23, 2026
5f2b8c3
Add CentOS images.
moritzbuhl Jul 22, 2026
1259035
Optimize docker images.
moritzbuhl Jul 23, 2026
07bfc74
Split images into base, dev, and pkcs11 for all distros and versions.
moritzbuhl Jul 23, 2026
3c1797c
Remove unused LibreSSL module.
moritzbuhl Jul 24, 2026
7e10af3
Remove unused ossl3 module.
moritzbuhl Jul 24, 2026
aca1f2b
Remove unused python3.7.2 module.
moritzbuhl Jul 24, 2026
57fb495
Remove the autoconf module.
moritzbuhl Jul 24, 2026
e0171b3
Remove the uthash module.
moritzbuhl Jul 24, 2026
3ffce86
Install rust from packages, remove rust module.
moritzbuhl Jul 24, 2026
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
27 changes: 23 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest

outputs:
distros: ${{ steps.set-matrix.outputs.distros }}
matrix: ${{ steps.set-matrix.outputs.matrix }}

steps:
- uses: actions/checkout@v7
Expand All @@ -23,18 +23,19 @@ jobs:
DISTROS=$(find . -maxdepth 1 -name '*.docker.m4' \
| sed 's|^\./||' \
| sed 's|\.docker\.m4$||' \
| grep -Ev '(-dev|-pkcs11)$' \
| jq -R -s -c 'split("\n")[:-1]')

echo "distros=$DISTROS" >> $GITHUB_OUTPUT
MATRIX=$(jq -cn --argjson distros "$DISTROS" '{distro: $distros}')
echo "matrix=$MATRIX" >> $GITHUB_OUTPUT

build-image:
name: Build Docker Images
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
distro: ${{ fromJson(needs.generate-matrix.outputs.distros) }}
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
-
name: Check out the repo
Expand All @@ -47,6 +48,8 @@ jobs:
filters: |
build:
- ${{ matrix.distro }}.docker.m4
- ${{ matrix.distro }}-dev.docker.m4
- ${{ matrix.distro }}-pkcs11.docker.m4
- modules/*
-
name: Build the Dockerfiles
Expand All @@ -68,3 +71,19 @@ jobs:
context: .
file: ./${{ matrix.distro }}.docker
if: steps.changes.outputs.build == 'true'
-
name: Build Docker Images (-dev)
uses: docker/build-push-action@v7
with:
push: false
context: .
file: ./${{ matrix.distro }}-dev.docker
if: steps.changes.outputs.build == 'true' && hashFiles(format('{0}-dev.docker.m4', matrix.distro)) != ''
-
name: Build Docker Images (-pkcs11)
uses: docker/build-push-action@v7
with:
push: false
context: .
file: ./${{ matrix.distro }}-pkcs11.docker
if: steps.changes.outputs.build == 'true' && hashFiles(format('{0}-pkcs11.docker.m4', matrix.distro)) != ''
29 changes: 25 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest

outputs:
distros: ${{ steps.set-matrix.outputs.distros }}
matrix: ${{ steps.set-matrix.outputs.matrix }}

steps:
- uses: actions/checkout@v7
Expand All @@ -24,18 +24,19 @@ jobs:
DISTROS=$(find . -maxdepth 1 -name '*.docker.m4' \
| sed 's|^\./||' \
| sed 's|\.docker\.m4$||' \
| grep -Ev '(-dev|-pkcs11)$' \
| jq -R -s -c 'split("\n")[:-1]')

echo "distros=$DISTROS" >> $GITHUB_OUTPUT
MATRIX=$(jq -cn --argjson distros "$DISTROS" '{distro: $distros}')
echo "matrix=$MATRIX" >> $GITHUB_OUTPUT

publish-image:
name: Publish Docker Images
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
distro: ${{ fromJson(needs.generate-matrix.outputs.distros) }}
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}

if: "github.repository_owner == 'tpm2-software'"
steps:
Expand All @@ -50,6 +51,8 @@ jobs:
filters: |
build:
- ${{ matrix.distro }}.docker.m4
- ${{ matrix.distro }}-dev.docker.m4
- ${{ matrix.distro }}-pkcs11.docker.m4
- modules/*
-
name: Build the Dockerfiles
Expand Down Expand Up @@ -80,3 +83,21 @@ jobs:
file: ./${{ matrix.distro }}.docker
tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.distro }}:latest
if: steps.changes.outputs.build == 'true'
-
name: Push -dev to GitHub Packages
uses: docker/build-push-action@v7
with:
push: 'true'
context: .
file: ./${{ matrix.distro }}-dev.docker
tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.distro }}-dev:latest
if: steps.changes.outputs.build == 'true' && hashFiles(format('{0}-dev.docker.m4', matrix.distro)) != ''
-
name: Push -pkcs11 to GitHub Packages
uses: docker/build-push-action@v7
with:
push: 'true'
context: .
file: ./${{ matrix.distro }}-pkcs11.docker
tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.distro }}-pkcs11:latest
if: steps.changes.outputs.build == 'true' && hashFiles(format('{0}-pkcs11.docker.m4', matrix.distro)) != ''
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,19 @@ docker run -it --rm ghcr.io/tpm2-software/fedora-32 /bin/bash
# With Podman
podman run -it --rm ghcr.io/tpm2-software/fedora-32 /bin/bash
```

## Structure

Standard distro/version images have profile-tag variants using the same base name:

- `<distro>-<version>-dev`
- `<distro>-<version>-pkcs11`

This intentionally excludes architecture-specific tags and specialized images such as
`*-mbedtls-*`, which remain single-purpose variants.

Profile intent:

- base tag (`<distro>-<version>`): lean/default CI dependencies
- dev tag (`<distro>-<version>-dev`): base plus development/tooling extras
- pkcs11 tag (`<distro>-<version>-pkcs11`): dev plus pkcs11/python/java extras
68 changes: 0 additions & 68 deletions alpine-3.19.docker.m4

This file was deleted.

4 changes: 4 additions & 0 deletions alpine-3.23-dev.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Alpine 3.23 Dockerfile
include(`alpine-3.23.docker.m4')

include(`alpine_dev_extras.m4')
5 changes: 5 additions & 0 deletions alpine-3.23-pkcs11.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Alpine 3.23 Dockerfile
include(`alpine-3.23-dev.docker.m4')

include(`alpine_pkcs11_extras.m4')
include(`junit.m4')
11 changes: 11 additions & 0 deletions alpine-3.23.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Alpine 3.23 Dockerfile
FROM alpine:3.23

LABEL org.opencontainers.image.source="https://github.com/tpm2-software/tpm2-software-container"

include(`alpine_base_deps.m4')

include(`ibmtpm1682.m4')
include(`swtpm.m4')

WORKDIR /
4 changes: 4 additions & 0 deletions alpine-3.24-dev.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Alpine 3.24 Dockerfile
include(`alpine-3.24.docker.m4')

include(`alpine_dev_extras.m4')
5 changes: 5 additions & 0 deletions alpine-3.24-pkcs11.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Alpine 3.24 Dockerfile
include(`alpine-3.24-dev.docker.m4')

include(`alpine_pkcs11_extras.m4')
include(`junit.m4')
11 changes: 11 additions & 0 deletions alpine-3.24.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Alpine 3.24 Dockerfile
FROM alpine:3.24

LABEL org.opencontainers.image.source="https://github.com/tpm2-software/tpm2-software-container"

include(`alpine_base_deps.m4')

include(`ibmtpm1682.m4')
include(`swtpm.m4')

WORKDIR /
4 changes: 4 additions & 0 deletions arch-linux-dev.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Arch Linux Dockerfile
include(`arch-linux.docker.m4')

include(`arch_linux_dev_extras.m4')
5 changes: 5 additions & 0 deletions arch-linux-pkcs11.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Arch Linux Dockerfile
include(`arch-linux-dev.docker.m4')

include(`arch_linux_pkcs11_extras.m4')
include(`junit.m4')
40 changes: 2 additions & 38 deletions arch-linux.docker.m4
Original file line number Diff line number Diff line change
@@ -1,45 +1,9 @@
# Alpine 3.19 Dockerfile
# Arch Linux Dockerfile
FROM archlinux:latest

LABEL org.opencontainers.image.source=https://github.com/tpm2-software/tpm2-software-container

RUN pacman -Sy --noconfirm archlinux-keyring
RUN pacman -Syu --noconfirm
RUN pacman -S --noconfirm base base-devel
RUN pacman -Scc --noconfirm
RUN pacman -Sy --noconfirm \
autoconf-archive \
cmocka \
procps \
iproute2 \
git \
pkg-config \
gcc \
libtool \
automake \
openssl \
uthash \
autoconf \
doxygen \
json-c \
curl \
util-linux \
libltdl \
libusb \
libftdi \
swtpm \
pkgfile \
glib2 \
glib2-devel \
python-yaml \
xxd \
expect \
perl \
pandoc \
lcov \
wget
RUN ln -s /usr/bin/core_perl/shasum /usr/bin/
include(`arch_linux_base_deps.m4')
include(`ibmtpm1682.m4')

WORKDIR /

3 changes: 3 additions & 0 deletions centos-stream10-dev.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include(`centos-stream10.docker.m4')

include(`centos_dev_extras.m4')
5 changes: 5 additions & 0 deletions centos-stream10-pkcs11.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
include(`centos-stream10-dev.docker.m4')

include(`centos_pkcs11_extras.m4')

ENV CLASSPATH=/usr/share/java/hamcrest/hamcrest.jar:/usr/share/java/junit.jar
17 changes: 17 additions & 0 deletions centos-stream10.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM quay.io/centos/centos:stream10

LABEL org.opencontainers.image.source="https://github.com/tpm2-software/tpm2-software-container"

define(`CENTOS_JAVA', `java-21-openjdk java-21-openjdk-devel')dnl
define(`CENTOS_LIBUSB_DEVEL', `libusb1-devel')dnl
define(`CENTOS_OPENSSL_PKCS11', `')dnl
include(`centos_base_deps.m4')
include(`ibmtpm1682.m4')
include(`swtpm.m4')

# make install goes into /usr/local/lib/pkgconfig which is non-standard
# Set this so ./configure can find things and we don't have to worry about prefix changes
# to build instructions
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

WORKDIR /
3 changes: 3 additions & 0 deletions centos-stream9-dev.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include(`centos-stream9.docker.m4')

include(`centos_dev_extras.m4')
5 changes: 5 additions & 0 deletions centos-stream9-pkcs11.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
include(`centos-stream9-dev.docker.m4')

include(`centos_pkcs11_extras.m4')

ENV CLASSPATH=/usr/share/java/hamcrest/hamcrest.jar:/usr/share/java/junit.jar
17 changes: 17 additions & 0 deletions centos-stream9.docker.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM quay.io/centos/centos:stream9

LABEL org.opencontainers.image.source="https://github.com/tpm2-software/tpm2-software-container"

define(`CENTOS_JAVA', `java-17-openjdk java-17-openjdk-devel')dnl
define(`CENTOS_LIBUSB_DEVEL', `libusb-devel')dnl
define(`CENTOS_OPENSSL_PKCS11', `openssl-pkcs11')dnl
include(`centos_base_deps.m4')
include(`ibmtpm1682.m4')
include(`swtpm.m4')

# make install goes into /usr/local/lib/pkgconfig which is non-standard
# Set this so ./configure can find things and we don't have to worry about prefix changes
# to build instructions
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

WORKDIR /
Loading
Loading