mirror of
https://github.com/d9pouces/id_configurator.git
synced 2026-11-09 01:47:21 +01:00
feat: refactor Dockerfiles to use 'target' stage and add Certificate module configuration
Signed-off-by: d9pouces <github@19pouces.net>
This commit is contained in:
@@ -0,0 +1,20 @@
|
|||||||
|
uuid: 200f3290-3a3f-47ac-8149-dbe26c82ee34
|
||||||
|
organisation: InterDiode
|
||||||
|
description: Certificate test configuration
|
||||||
|
configurations:
|
||||||
|
certificates:
|
||||||
|
- name: Test CA
|
||||||
|
content: |
|
||||||
|
{{ 'certs/test-ca.crt.pem' | file | indent(6, first=true) }}
|
||||||
|
apt:
|
||||||
|
sources: []
|
||||||
|
keys: []
|
||||||
|
apk:
|
||||||
|
repositories: []
|
||||||
|
yum:
|
||||||
|
repositories: []
|
||||||
|
keys: []
|
||||||
|
python:
|
||||||
|
repositories: []
|
||||||
|
java:
|
||||||
|
repositories: []
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
FROM alpine:3.20 AS detection
|
FROM alpine:3.20 AS target
|
||||||
FROM interdiode/id-configurator:latest AS configuration
|
FROM interdiode/id-configurator:latest AS configuration
|
||||||
COPY --from=detection / /src/
|
COPY --from=target / /src/
|
||||||
COPY --from=generated-config Apk.yaml /config.yaml
|
COPY --from=generated-config Apk.yaml /config.yaml
|
||||||
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
||||||
FROM alpine:3.20 AS runtime
|
FROM target AS runtime
|
||||||
COPY --from=configuration /dst/ /
|
COPY --from=configuration /dst/ /
|
||||||
RUN apk update \
|
RUN apk update \
|
||||||
&& apk add idconfiguratortestpkg \
|
&& apk add idconfiguratortestpkg \
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
FROM debian:trixie-slim AS detection
|
FROM debian:trixie-slim AS target
|
||||||
FROM interdiode/id-configurator:latest AS configuration
|
FROM interdiode/id-configurator:latest AS configuration
|
||||||
COPY --from=detection / /src/
|
COPY --from=target / /src/
|
||||||
COPY --from=generated-config Apt.yaml /config.yaml
|
COPY --from=generated-config Apt.yaml /config.yaml
|
||||||
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
||||||
FROM debian:trixie-slim AS runtime
|
FROM target AS runtime
|
||||||
COPY --from=configuration /dst/ /
|
COPY --from=configuration /dst/ /
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends idconfiguratortestpkg \
|
&& apt-get install -y --no-install-recommends idconfiguratortestpkg \
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
FROM debian:trixie-slim AS target
|
||||||
|
FROM interdiode/id-configurator:latest AS configuration
|
||||||
|
COPY --from=target / /src/
|
||||||
|
COPY --from=generated-config Certificate.yaml /config.yaml
|
||||||
|
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
||||||
|
FROM target AS runtime
|
||||||
|
ARG CERTIFICATE_REPO_PORT
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends wget curl
|
||||||
|
COPY --from=configuration /dst/ /
|
||||||
|
RUN wget -qO- "https://host.docker.internal:${CERTIFICATE_REPO_PORT}/marker.txt" | grep -qx trusted-via-root-ca
|
||||||
|
RUN curl -fsS "https://host.docker.internal:${CERTIFICATE_REPO_PORT}/marker.txt" | grep -qx trusted-via-root-ca
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
FROM maven:3.9-eclipse-temurin-21 AS detection
|
FROM maven:3.9-eclipse-temurin-21 AS target
|
||||||
FROM interdiode/id-configurator:latest AS configuration
|
FROM interdiode/id-configurator:latest AS configuration
|
||||||
COPY --from=detection / /src/
|
COPY --from=target / /src/
|
||||||
COPY --from=generated-config Java.yaml /config.yaml
|
COPY --from=generated-config Java.yaml /config.yaml
|
||||||
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
||||||
FROM maven:3.9-eclipse-temurin-21 AS runtime
|
FROM target AS runtime
|
||||||
# Warm up the local repository with the maven-dependency-plugin itself (from
|
# Warm up the local repository with the maven-dependency-plugin itself (from
|
||||||
# the real, network-reachable Maven Central) while the default mirror is
|
# the real, network-reachable Maven Central) while the default mirror is
|
||||||
# still in place, so the actual test below never needs anything but the
|
# still in place, so the actual test below never needs anything but the
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
FROM python:3.13-slim AS detection
|
FROM python:3.13-slim AS target
|
||||||
FROM interdiode/id-configurator:latest AS configuration
|
FROM interdiode/id-configurator:latest AS configuration
|
||||||
COPY --from=detection / /src/
|
COPY --from=target / /src/
|
||||||
COPY --from=generated-config Python.yaml /config.yaml
|
COPY --from=generated-config Python.yaml /config.yaml
|
||||||
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
||||||
FROM python:3.13-slim AS runtime
|
FROM target AS runtime
|
||||||
COPY --from=configuration /dst/ /
|
COPY --from=configuration /dst/ /
|
||||||
RUN pip install --no-cache-dir idconfiguratortestpkg \
|
RUN pip install --no-cache-dir idconfiguratortestpkg \
|
||||||
&& python3 -c "import idconfiguratortestpkg"
|
&& python3 -c "import idconfiguratortestpkg"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
FROM rockylinux:9 AS detection
|
FROM rockylinux:9 AS target
|
||||||
FROM interdiode/id-configurator:latest AS configuration
|
FROM interdiode/id-configurator:latest AS configuration
|
||||||
COPY --from=detection / /src/
|
COPY --from=target / /src/
|
||||||
COPY --from=generated-config Yum.yaml /config.yaml
|
COPY --from=generated-config Yum.yaml /config.yaml
|
||||||
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
RUN id-configurator apply --config /config.yaml --src /src --dst /dst
|
||||||
FROM rockylinux:9 AS runtime
|
FROM target AS runtime
|
||||||
COPY --from=configuration /dst/ /
|
COPY --from=configuration /dst/ /
|
||||||
RUN dnf install -y idconfiguratortestpkg \
|
RUN dnf install -y idconfiguratortestpkg \
|
||||||
&& rpm -q idconfiguratortestpkg
|
&& rpm -q idconfiguratortestpkg
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[tox]
|
[tox]
|
||||||
env_list = py313,py314,coverage,packaging,publish,module-python,module-apt,module-yum,module-apk,module-java
|
env_list = py313,py314,coverage,packaging,publish,module-python,module-apt,module-yum,module-apk,module-java,module-certificates
|
||||||
isolated_build = true
|
isolated_build = true
|
||||||
requires =
|
requires =
|
||||||
tox>=4
|
tox>=4
|
||||||
@@ -176,3 +176,30 @@ allowlist_externals =
|
|||||||
commands =
|
commands =
|
||||||
python3 -m id_tools test render-config {tox_root}/tests/configs/Java.yaml.j2 {env_dir}/configs/Java.yaml
|
python3 -m id_tools test render-config {tox_root}/tests/configs/Java.yaml.j2 {env_dir}/configs/Java.yaml
|
||||||
docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Java.Dockerfile -t id-configurator-java .
|
docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Java.Dockerfile -t id-configurator-java .
|
||||||
|
|
||||||
|
[docker:certificate-repo]
|
||||||
|
dockerfile = {tox_root}/tests/dockerfiles/repos/certificate-repo.Dockerfile
|
||||||
|
expose =
|
||||||
|
CERTIFICATE_REPO_PORT=8443/tcp
|
||||||
|
healthcheck_cmd = wget --no-check-certificate -qO- https://127.0.0.1:8443/marker.txt || exit 1
|
||||||
|
healthcheck_interval = 1
|
||||||
|
healthcheck_retries = 30
|
||||||
|
healthcheck_timeout = 2
|
||||||
|
healthcheck_start_period = 1
|
||||||
|
|
||||||
|
[testenv:module-certificates]
|
||||||
|
package = skip
|
||||||
|
change_dir = {tox_root}
|
||||||
|
dependency_groups = dev
|
||||||
|
docker =
|
||||||
|
certificate-repo
|
||||||
|
allowlist_externals =
|
||||||
|
docker
|
||||||
|
description =
|
||||||
|
Verifies that both wget and curl - two independently TLS-linked HTTP
|
||||||
|
clients (GnuTLS and OpenSSL, respectively, on Debian) - trust an HTTPS
|
||||||
|
server whose certificate chains to a root certificate installed by the
|
||||||
|
`certificates` module alone, with no package-manager-specific config.
|
||||||
|
commands =
|
||||||
|
python3 -m id_tools test render-config {tox_root}/tests/configs/Certificate.yaml.j2 {env_dir}/configs/Certificate.yaml
|
||||||
|
docker buildx build --platform linux/amd64 --add-host=host.docker.internal:host-gateway --build-arg CERTIFICATE_REPO_PORT={env:CERTIFICATE_REPO_PORT} --build-context generated-config={env_dir}/configs -f {tox_root}/tests/dockerfiles/Certificate.Dockerfile -t id-configurator-certificates .
|
||||||
|
|||||||
Reference in New Issue
Block a user