ci: optimize build + deploy + migrate workflows
CI / CI (pull_request) Successful in 31m18s

- build.yaml: merge 3 cargo steps into single compile pass (reuse artifacts)
- build.yaml: remove cargo clean (wasted compiled artifacts before Docker)
- build.yaml: add secret validation for registry credentials
- deploy.yaml: skip checkout, fetch SHA via Gitea API (no clone overhead)
- deploy.yaml: reuse FORGEJO_REGISTRY_TOKEN for API auth (existing privilege)
- deploy.yaml: validate SHA image exists before tagging as latest
- deploy.yaml: add secret validation for registry credentials
- migrate.yaml: merge schema verification into both changed + manual paths
- migrate.yaml: manual trigger now fails on first error (was silently masking)
This commit is contained in:
2026-09-13 09:53:11 +09:00
parent c142ff5109
commit 4fdbb48ae6
3 changed files with 52 additions and 26 deletions
+13 -4
View File
@@ -31,7 +31,7 @@ jobs:
echo "Changed migrations: $CHANGED"
echo "CHANGED_MIGRATIONS=$CHANGED" >> $GITHUB_ENV
- name: Run migrations
- name: Run changed migrations and verify schema
if: env.CHANGED_MIGRATIONS != ''
run: |
export PGPASSWORD="${DB_PASSWORD}"
@@ -55,18 +55,27 @@ jobs:
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
- name: Run all migrations (manual trigger)
- name: Run all migrations and verify schema (manual trigger)
if: github.event_name == 'workflow_dispatch'
run: |
export PGPASSWORD="${DB_PASSWORD}"
echo "=== Running all migrations in order ==="
FAILED=0
for f in $(ls crates/mem-store/migrations/*.sql | sort); do
echo "--- Applying: $f ---"
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$f" 2>&1 || true
echo "--- Done: $f ---"
if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$f" 2>&1; then
echo "ERROR: Migration $f failed!"
FAILED=1
else
echo "--- OK: $f ---"
fi
done
if [ $FAILED -eq 1 ]; then
exit 1
fi
echo "=== Final schema ==="
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "\dt memory*"
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "\d memory_entity"