Skip to content

Commit f8aa1f4

Browse files
committed
feat: ensure Dockerfiles being up-to-date
1 parent 0beea79 commit f8aa1f4

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

.github/workflows/lint.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,38 @@ jobs:
1616
- uses: hadolint/[email protected]
1717
with:
1818
recursive: true
19+
ensure-dockerfiles-up-to-date:
20+
runs-on: ubuntu-24.04
21+
steps:
22+
- uses: actions/checkout@v4
23+
- name: Install GHC and Stack
24+
uses: haskell-actions/[email protected]
25+
with:
26+
enable-stack: true
27+
- name: Build dockerfiles generator
28+
run: |
29+
pushd generator
30+
stack setup
31+
stack build --no-terminal
32+
- name: Ensure Dockerfiles are up-to-date
33+
run: |
34+
# Collect the list of Dockerfiles to be built
35+
mapfile -t dockerfiles < <(find . -type f -name 'Dockerfile' | sort)
36+
# Generate Dockerfiles using the generate.sh wrapper tool
37+
for df in "${dockerfiles[@]}"; do
38+
# Get appropriate YAML data file from the Dockerfile path
39+
df_dir=$(dirname "${df}")
40+
df_parent_dir=$(basename "$(dirname "${df_dir}")")
41+
df_yaml="${df_parent_dir}.yaml"
42+
if [ ! -f "${df_yaml}" ]; then
43+
echo "Error: Missing YAML data file ${df_yaml} for Dockerfile ${df}"
44+
exit 1
45+
fi
46+
echo "Generating ${df}"
47+
./generate.sh "${df_yaml}" "${df}.generated"
48+
# Compare generated Dockerfile with the existing one
49+
if ! diff -u "${df}" "${df}.generated"; then
50+
echo "Error: Dockerfile ${df} is out of date. Please regenerate it."
51+
exit 1
52+
fi
53+
done

0 commit comments

Comments
 (0)