Skip to content

Commit d2db7d8

Browse files
authored
Merge pull request #124 from javaevolved/optimize-deploy-workflow
Skip content generation when only static assets changed
2 parents ed135a5 + beaf631 commit d2db7d8

File tree

1 file changed

+44
-5
lines changed

1 file changed

+44
-5
lines changed

.github/workflows/deploy.yml

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,51 @@ jobs:
3030
if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
3131
steps:
3232
- uses: actions/checkout@v6
33+
with:
34+
fetch-depth: 2
35+
36+
- name: Detect changed paths
37+
id: changes
38+
run: |
39+
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
40+
echo "generate=true" >> "$GITHUB_OUTPUT"
41+
echo "og=true" >> "$GITHUB_OUTPUT"
42+
elif [[ "${{ github.event_name }}" == "workflow_run" ]]; then
43+
# Generator JAR was rebuilt — regenerate HTML, skip OG
44+
echo "generate=true" >> "$GITHUB_OUTPUT"
45+
echo "og=false" >> "$GITHUB_OUTPUT"
46+
else
47+
# Push event — check which files changed
48+
CHANGED=$(git diff --name-only HEAD~1 HEAD)
49+
echo "Changed files:"
50+
echo "$CHANGED"
51+
52+
NEEDS_GENERATE=false
53+
NEEDS_OG=false
54+
55+
if echo "$CHANGED" | grep -qE '^(content/|translations/|templates/)'; then
56+
NEEDS_GENERATE=true
57+
NEEDS_OG=true
58+
fi
59+
if echo "$CHANGED" | grep -qE '^html-generators/generateog\.java$'; then
60+
NEEDS_OG=true
61+
fi
62+
63+
echo "generate=$NEEDS_GENERATE" >> "$GITHUB_OUTPUT"
64+
echo "og=$NEEDS_OG" >> "$GITHUB_OUTPUT"
65+
fi
66+
echo "Summary: generate=${{ steps.changes.outputs.generate || 'pending' }}, og=${{ steps.changes.outputs.og || 'pending' }}"
3367
3468
- uses: actions/setup-java@v5
69+
if: steps.changes.outputs.generate == 'true' || steps.changes.outputs.og == 'true'
3570
with:
3671
distribution: 'temurin'
3772
java-version: '25'
3873

74+
# --- HTML generation (content/templates/translations changed) ---
3975
- name: Restore cached generate JAR and AOT
4076
id: cache-restore
77+
if: steps.changes.outputs.generate == 'true'
4178
uses: actions/cache/restore@v5
4279
with:
4380
path: |
@@ -46,19 +83,21 @@ jobs:
4683
key: generator-${{ hashFiles('html-generators/generate.java') }}
4784

4885
- name: Generate HTML with cached JAR + AOT
49-
if: steps.cache-restore.outputs.cache-hit == 'true'
86+
if: steps.changes.outputs.generate == 'true' && steps.cache-restore.outputs.cache-hit == 'true'
5087
run: java -XX:AOTCache=html-generators/generate.aot -jar html-generators/generate.jar
5188

5289
- name: Setup JBang (cache miss)
53-
if: steps.cache-restore.outputs.cache-hit != 'true'
90+
if: steps.changes.outputs.generate == 'true' && steps.cache-restore.outputs.cache-hit != 'true'
5491
uses: jbangdev/setup-jbang@main
5592

5693
- name: Generate HTML with JBang (cache miss)
57-
if: steps.cache-restore.outputs.cache-hit != 'true'
94+
if: steps.changes.outputs.generate == 'true' && steps.cache-restore.outputs.cache-hit != 'true'
5895
run: jbang html-generators/generate.java
5996

97+
# --- OG card generation (content/templates/translations or generateog.java changed) ---
6098
- name: Restore cached generateog JAR and AOT
6199
id: cache-restore-og
100+
if: steps.changes.outputs.og == 'true'
62101
uses: actions/cache/restore@v5
63102
with:
64103
path: |
@@ -67,11 +106,11 @@ jobs:
67106
key: generateog-${{ hashFiles('html-generators/generateog.java') }}
68107

69108
- name: Generate OG cards with cached JAR + AOT
70-
if: steps.cache-restore-og.outputs.cache-hit == 'true'
109+
if: steps.changes.outputs.og == 'true' && steps.cache-restore-og.outputs.cache-hit == 'true'
71110
run: java -XX:AOTCache=html-generators/generateog.aot -jar html-generators/generateog.jar
72111

73112
- name: Generate OG cards with JBang (cache miss)
74-
if: steps.cache-restore-og.outputs.cache-hit != 'true'
113+
if: steps.changes.outputs.og == 'true' && steps.cache-restore-og.outputs.cache-hit != 'true'
75114
run: |
76115
if ! command -v jbang &> /dev/null; then
77116
echo "Installing JBang..."

0 commit comments

Comments
 (0)