Skip to content

Commit 78d4e4f

Browse files
committed
Rework image and add labels for container scanning.
1 parent aa464da commit 78d4e4f

File tree

5 files changed

+75
-77
lines changed

5 files changed

+75
-77
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.sh text eol=lf

.github/workflows/Pipeline.yml

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,38 @@ jobs:
1010
runs-on: ubuntu-24.04
1111

1212
outputs:
13-
base_image_os_version: ${{ steps.variables.outputs.base_image_os_version }}
14-
base_image_py_version: ${{ steps.variables.outputs.base_image_py_version }}
15-
miktex_image_ns: ${{ steps.variables.outputs.miktex_image_ns }}
16-
miktex_image_name: ${{ steps.variables.outputs.miktex_image_name }}
17-
miktex_image_tag: ${{ steps.variables.outputs.miktex_image_tag }}
18-
miktex_image: ${{ steps.variables.outputs.miktex_image }}
13+
base_image_os_version: ${{ steps.variables.outputs.base_image_os_version }}
14+
base_image_os_codename: ${{ steps.variables.outputs.base_image_os_codename }}
15+
base_image_py_version: ${{ steps.variables.outputs.base_image_py_version }}
16+
miktex_source_repository: ${{ steps.variables.outputs.miktex_source_repository }}
17+
miktex_image_ns: ${{ steps.variables.outputs.miktex_image_ns }}
18+
miktex_image_name: ${{ steps.variables.outputs.miktex_image_name }}
19+
miktex_image_tag: ${{ steps.variables.outputs.miktex_image_tag }}
20+
miktex_image: ${{ steps.variables.outputs.miktex_image }}
1921

2022
steps:
2123
- name: 🖉 Variables
2224
id: variables
2325
run: |
2426
base_image_name="python"
25-
base_image_py_version="3.13"
26-
base_image_os_version="bookworm"
27+
base_image_os_version="13"
28+
base_image_os_codename="trixie"
29+
base_image_os_size="-slim"
30+
base_image_py_version="3.14"
31+
32+
miktex_source_repository="${base_image_os_codename}"
2733
2834
image_name="miktex"
2935
image_tag="latest"
3036
3137
tee "${GITHUB_OUTPUT}" <<EOF
3238
base_image_name=${base_image_name}
33-
base_image_py_version=${base_image_py_version}
3439
base_image_os_version=${base_image_os_version}
35-
base_image=${base_image_name}:${base_image_py_version}-slim-${base_image_os_version}
40+
base_image_os_codename=${base_image_os_codename}
41+
base_image_py_version=${base_image_py_version}
42+
base_image=${base_image_name}:${base_image_py_version}${base_image_os_size}-${base_image_os_codename}
43+
44+
miktex_source_repository=${miktex_source_repository}
3645
3746
miktex_image_ns=${{ vars.DOCKERHUB_NAMESPACE }}
3847
miktex_image_name=${image_name}
@@ -41,7 +50,7 @@ jobs:
4150
EOF
4251
4352
- name: ⏬ Checkout repository
44-
uses: actions/checkout@v4
53+
uses: actions/checkout@v6
4554

4655
- name: 🐋 Building MikTeX image
4756
id: build
@@ -79,12 +88,34 @@ jobs:
7988
docker buildx build \
8089
--file Dockerfile \
8190
--build-arg IMAGE=${{ steps.variables.outputs.base_image }} \
82-
--build-arg OS_VERSION=${{ steps.variables.outputs.base_image_os_version }} \
83-
--build-arg PY_VERSION=${{ steps.variables.outputs.base_image_py_version }} \
91+
--build-arg MIKTEX_SRC_REPO=${{ steps.variables.outputs.miktex_source_repository }} \
92+
--label "org.opencontainers.image.title=MikTeX on Debian ${{ steps.variables.outputs.base_image_os_version }} (${{ steps.variables.outputs.base_image_os_codename }}) + Python ${{ steps.variables.outputs.base_image_py_version }}" \
93+
--label "org.opencontainers.image.description=MikTeX on Debian ${{ steps.variables.outputs.base_image_os_version }} (${{ steps.variables.outputs.base_image_os_codename }}) + Python ${{ steps.variables.outputs.base_image_py_version }} image maintained by pyTooling Authors." \
94+
--label "org.opencontainers.image.authors=Patrick Lehmann <Paebbels@gmail.com>" \
95+
--label "org.opencontainers.image.vendor=pyTooling" \
96+
--label "org.opencontainers.image.version=1.0" \
97+
--label "org.opencontainers.image.revison=${GITHUB_SHA}" \
98+
--label "org.opencontainers.image.created=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
99+
--label "org.opencontainers.image.url=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}" \
100+
--label "org.opencontainers.image.source=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" \
101+
--label "org.opencontainers.image.documentation=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/blob/main/README.md" \
102+
--label "org.opencontainers.image.license=MIT" \
103+
--label "pyTooling.dockerimages.os.name=Debian" \
104+
--label "pyTooling.dockerimages.os.version=${{ steps.variables.outputs.base_image_os_version }}" \
105+
--label "pyTooling.dockerimages.os.codename=${{ steps.variables.outputs.base_image_os_codename }}" \
106+
--label "pyTooling.dockerimages.os.variant=" \
107+
--label "pyTooling.dockerimages.os.packagemanager=apt" \
108+
--label "pyTooling.dockerimages.os.fullname=Debian ${{ steps.variables.outputs.base_image_os_version }} (${{ steps.variables.outputs.base_image_os_codename }})" \
109+
--label "pyTooling.dockerimages.py.version=${{ steps.variables.outputs.base_image_py_version }}" \
110+
--label "pyTooling.dockerimages.application.name=MikTeX" \
84111
--tag "${{ steps.variables.outputs.miktex_image }}" \
85112
. 2>&1 \
86113
| ./Docker.buildx.sh
114+
# check return codes from docker incase of error.
87115
116+
printf -- "Labels of '${{ steps.variables.outputs.miktex_image }}':\n"
117+
docker inspect --format='{{json .Config.Labels}}' "${{ steps.variables.outputs.miktex_image }}" | jq
118+
88119
printf "%s\n" "Docker image '${{ steps.variables.outputs.miktex_image }}' has $(DockerImageSizeUncompressed ${{ steps.variables.outputs.miktex_image }})"
89120
90121
- name: ☑ Checking MikTeX image '${{ steps.variables.outputs.miktex_image }}'
@@ -124,7 +155,7 @@ jobs:
124155
EOF
125156
126157
- name: ⏬ Checkout repository
127-
uses: actions/checkout@v4
158+
uses: actions/checkout@v6
128159

129160
- name: 🐋 Building MikTeX image for ${{ matrix.name }}
130161
id: build

Docker.buildx.sh

Lines changed: 24 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,54 +20,39 @@
2020
# See the License for the specific language governing permissions and
2121
# limitations under the License.
2222
# =============================================================================
23-
24-
# work around for Darwin (Mac OS)
25-
READLINK=readlink; if [[ $(uname) == "Darwin" ]]; then READLINK=greadlink; fi
23+
# shellcheck shell=bash
2624

2725
# Save working directory
2826
WorkingDir=$(pwd)
29-
ScriptDir="$($READLINK -f $(dirname $0))"
30-
RootDir="$($READLINK -f $ScriptDir/..)"
31-
32-
ANSI_ENABLE_COLOR() {
33-
ENABLECOLOR='-c '
34-
ANSI_BLACK=$'\x1b[30m'
35-
ANSI_RED=$'\x1b[31m'
36-
ANSI_GREEN=$'\x1b[32m'
37-
ANSI_YELLOW=$'\x1b[33m'
38-
ANSI_BLUE=$'\x1b[34m'
39-
ANSI_MAGENTA=$'\x1b[35m'
40-
ANSI_CYAN=$'\x1b[36m'
41-
ANSI_DARK_GRAY=$'\x1b[90m'
42-
ANSI_LIGHT_GRAY=$'\x1b[37m'
43-
ANSI_LIGHT_RED=$'\x1b[91m'
44-
ANSI_LIGHT_GREEN=$'\x1b[92m'
45-
ANSI_LIGHT_YELLOW=$'\x1b[93m'
46-
ANSI_LIGHT_BLUE=$'\x1b[94m'
47-
ANSI_LIGHT_MAGENTA=$'\x1b[95m'
48-
ANSI_LIGHT_CYAN=$'\x1b[96m'
49-
ANSI_WHITE=$'\x1b[97m'
50-
ANSI_NOCOLOR=$'\x1b[0m'
51-
52-
# red texts
53-
COLORED_ERROR="${ANSI_RED}[ERROR]"
54-
COLORED_FAILED="${ANSI_RED}[FAILED]${ANSI_NOCOLOR}"
27+
ScriptDir="$(readlink -f "$(dirname "$0")")"
28+
RootDir="$(readlink -f "$ScriptDir/..")"
5529

56-
# yellow texts
57-
COLORED_WARNING="${ANSI_YELLOW}[WARNING]"
30+
ANSI_BLACK=$'\x1b[30m'
31+
ANSI_RED=$'\x1b[31m'
32+
ANSI_GREEN=$'\x1b[32m'
33+
ANSI_YELLOW=$'\x1b[33m'
34+
ANSI_BLUE=$'\x1b[34m'
35+
ANSI_MAGENTA=$'\x1b[35m'
36+
ANSI_CYAN=$'\x1b[36m'
37+
ANSI_DARK_GRAY=$'\x1b[90m'
38+
ANSI_LIGHT_GRAY=$'\x1b[37m'
39+
ANSI_LIGHT_RED=$'\x1b[91m'
40+
ANSI_LIGHT_GREEN=$'\x1b[92m'
41+
ANSI_LIGHT_YELLOW=$'\x1b[93m'
42+
ANSI_LIGHT_BLUE=$'\x1b[94m'
43+
ANSI_LIGHT_MAGENTA=$'\x1b[95m'
44+
ANSI_LIGHT_CYAN=$'\x1b[96m'
45+
ANSI_WHITE=$'\x1b[97m'
46+
ANSI_NOCOLOR=$'\x1b[0m'
5847

59-
# green texts
60-
COLORED_PASSED="${ANSI_GREEN}[PASSED]${ANSI_NOCOLOR}"
61-
COLORED_DONE="${ANSI_GREEN}[DONE]${ANSI_NOCOLOR}"
62-
COLORED_SUCCESSFUL="${ANSI_GREEN}[SUCCESSFUL]${ANSI_NOCOLOR}"
63-
}
64-
ANSI_ENABLE_COLOR
48+
# red texts
49+
COLORED_ERROR="${ANSI_RED}[ERROR]"
6550

6651
# command line argument processing
6752
COMMAND=2 # 0-help, 1-unknown option, 2-no arg needed
6853
INDENT=""
6954
VERBOSE=0; DEBUG=0
70-
while [[ $# > 0 ]]; do
55+
while [[ $# -gt 0 ]]; do
7156
key="$1"
7257
case $key in
7358
-i|--indent)
@@ -126,7 +111,7 @@ Pattern_Tagging='#[0-9]+ naming to (.*?) done'
126111
Pattern_MIKTEX='#[0-9]+ [0-9]+\.[0-9]+ Installing package'
127112

128113
group=0
129-
while IFS='\n' read -r line; do
114+
while IFS=$'\n' read -r line; do
130115
if [[ "${line}" =~ $Pattern_FROM ]]; then
131116
printf "::group::%s\n" "${INDENT}${ANSI_MAGENTA}${line}${ANSI_NOCOLOR}"
132117
group=1

Dockerfile

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
# check=skip=InvalidDefaultArgInFrom;error=true
22

33
ARG IMAGE
4-
ARG OS_VERSION
5-
ARG PY_VERSION
4+
ARG MIKTEX_SRC_REPO
65

76
FROM ${IMAGE}
8-
ARG OS_VERSION
9-
ARG PY_VERSION
7+
ARG MIKTEX_SRC_REPO
108

11-
# Meta information
12-
LABEL maintainer="Patrick Lehmann <Paebbels@gmail.com>"
13-
LABEL version="0.1"
14-
LABEL description="MikTeX based on Debian ${OS_VERSION} and Python ${PY_VERSION}."
159

1610
# Install Debian packages
1711
RUN apt-get update \
@@ -20,20 +14,18 @@ RUN apt-get update \
2014
ca-certificates \
2115
gnupg \
2216
curl \
23-
&& rm -rf /var/lib/apt/lists/* \
24-
&& apt-get clean
17+
&& apt-get dist-clean
2518

2619
# Install MikTeX
2720
RUN curl -fsSL https://miktex.org/download/key | tee /usr/share/keyrings/miktex-keyring.asc > /dev/null
28-
RUN echo "deb [signed-by=/usr/share/keyrings/miktex-keyring.asc] https://miktex.org/download/debian ${OS_VERSION} universe" | tee /etc/apt/sources.list.d/miktex.list
21+
RUN echo "deb [signed-by=/usr/share/keyrings/miktex-keyring.asc] https://miktex.org/download/debian ${MIKTEX_SRC_REPO} universe" | tee /etc/apt/sources.list.d/miktex.list
2922
RUN apt-get update \
3023
&& apt-get install -y --no-install-recommends \
3124
ghostscript \
3225
make \
3326
perl \
3427
miktex \
35-
&& rm -rf /var/lib/apt/lists/* \
36-
&& apt-get clean
28+
&& apt-get dist-clean
3729

3830
# Install executables like lualatex into /usr/local/bin
3931
RUN miktexsetup --shared=yes finish
@@ -50,5 +42,3 @@ RUN --mount=type=bind,target=/context \
5042
ENV MIKTEX_USERCONFIG=/miktex/.miktex/texmfs/config
5143
ENV MIKTEX_USERDATA=/miktex/.miktex/texmfs/data
5244
ENV MIKTEX_USERINSTALL=/miktex/.miktex/texmfs/install
53-
54-
ENTRYPOINT ["/bin/bash", "-l"]

Dockerfile.Specific

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
11
ARG IMAGE
2-
ARG BASE_VARIANT
3-
ARG VARIANT
42

53
FROM ${IMAGE}
6-
ARG BASE_VARIANT
7-
ARG VARIANT
8-
9-
# Meta information
10-
LABEL maintainer="Patrick Lehmann <Paebbels@gmail.com>"
11-
LABEL version="0.1"
12-
LABEL description="MikTeX with preinstalled packages for ${VARIANT} based on ${BASE_VARIANT}."
134

145
RUN --mount=type=bind,target=/context \
156
miktex --admin --verbose packages update-package-database \

0 commit comments

Comments
 (0)