<<~SAVE_ACTION_YAML
name: DB Cache Save
description: Save SQLite DB with checksum, skip if unchanged
inputs:
path:
required: false
default: db/fit.sqlite3
key-prefix:
required: false
default: git-fit-db
outputs:
saved:
description: "true if cache was updated, false if unchanged"
value: ${{ steps.detect.outputs.saved }}
runs:
using: composite
steps:
- name: Detect changes
id: detect
shell: bash
run: |
db="${{ inputs.path }}"
ck="${db}.checksum"
new_sum=$(sha256sum "$db" 2>/dev/null || echo "")
if [ -z "$new_sum" ]; then
echo "saved=false" >> "$GITHUB_OUTPUT"
exit 0
fi
if [ -f "$ck" ] && sha256sum --check "$ck" --quiet 2>/dev/null; then
echo "DB unchanged — skip save"
echo "saved=false" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "$new_sum" > "$ck"
echo "saved=true" >> "$GITHUB_OUTPUT"
- uses: actions/cache/save@v4
if: steps.detect.outputs.saved == 'true'
with:
path: |-
${{ inputs.path }}
${{ inputs.path }}.checksum
key: ${{ inputs.key-prefix }}-v1-${{ github.run_id }}
SAVE_ACTION_YAML