templates/.github/workflows/base64-templates.yml

67 lines
2.1 KiB
YAML

name: Generate Base64 for Changed Blueprints
on:
pull_request:
branches:
- main
jobs:
encode-changed:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Get changed blueprints folders
id: changes
run: |
CHANGED=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }} | grep '^blueprints/' | cut -d/ -f2 | sort -u)
echo "folders=$(echo $CHANGED | jq -R -s -c 'split(" ") | map(select(length > 0))')" >> $GITHUB_OUTPUT
- name: Generate base64 for changed blueprints
run: |
CHANGED_FOLDERS=$(echo '${{ steps.changes.outputs.folders }}' | jq -r '.[]')
echo "### 📝 Base64 for changed blueprints" > comment.md
echo '' >> comment.md
if [ -z "$CHANGED_FOLDERS" ]; then
echo "✅ No blueprints changed." >> comment.md
else
echo "<details>" >> comment.md
echo "<summary>🔍 Show base64</summary>" >> comment.md
echo '' >> comment.md
for dir in $CHANGED_FOLDERS; do
echo "Processing $dir..."
COMPOSE_FILE="blueprints/$dir/docker-compose.yml"
TEMPLATE_FILE="blueprints/$dir/template.yml"
if [ -f "$COMPOSE_FILE" ] && [ -f "$TEMPLATE_FILE" ]; then
COMPOSE_CONTENT=$(jq -Rs . < "$COMPOSE_FILE")
TEMPLATE_CONTENT=$(jq -Rs . < "$TEMPLATE_FILE")
JSON="{\"compose\":$COMPOSE_CONTENT,\"config\":$TEMPLATE_CONTENT}"
BASE64_JSON=$(echo -n "$JSON" | base64 -w 0)
echo "#### $dir" >> comment.md
echo '' >> comment.md
echo '```' >> comment.md
echo "$BASE64_JSON" >> comment.md
echo '```' >> comment.md
echo ''
else
echo "❌ Missing files in $dir" >> comment.md
fi
done
echo '</details>' >> comment.md
fi
- name: Post comment to PR
uses: marocchino/sticky-pull-request-comment@v2
with:
path: comment.md