Cache PostGIS Docker image in CI
Replace service container with manual docker run + cached image tar. Service containers pull the image before steps run (uncacheable). Manual approach: cache the image as a tar, load on cache hit. PostGIS image is ~400MB — first run pulls and saves, subsequent runs load from cache in ~2s instead of ~19s. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f2f5c6a83e
commit
1d45c57ae7
1 changed files with 30 additions and 14 deletions
44
.github/workflows/ci.yml
vendored
44
.github/workflows/ci.yml
vendored
|
|
@ -67,20 +67,6 @@ jobs:
|
|||
name: E2E Tests
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
postgres:
|
||||
image: postgis/postgis:16-3.4
|
||||
env:
|
||||
POSTGRES_USER: trails
|
||||
POSTGRES_PASSWORD: trails
|
||||
POSTGRES_DB: trails
|
||||
ports:
|
||||
- 5432:5432
|
||||
options: >-
|
||||
--health-cmd "pg_isready -U trails"
|
||||
--health-interval 5s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
env:
|
||||
DATABASE_URL: postgres://trails:trails@localhost:5432/trails
|
||||
steps:
|
||||
|
|
@ -92,6 +78,36 @@ jobs:
|
|||
cache: pnpm
|
||||
- run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Cache PostGIS Docker image
|
||||
id: postgis-cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /tmp/postgis-image.tar
|
||||
key: postgis-16-3.4
|
||||
|
||||
- name: Load or pull PostGIS image
|
||||
run: |
|
||||
if [ -f /tmp/postgis-image.tar ]; then
|
||||
docker load < /tmp/postgis-image.tar
|
||||
else
|
||||
docker pull postgis/postgis:16-3.4
|
||||
docker save postgis/postgis:16-3.4 > /tmp/postgis-image.tar
|
||||
fi
|
||||
|
||||
- name: Start PostgreSQL
|
||||
run: |
|
||||
docker run -d --name postgres \
|
||||
-e POSTGRES_USER=trails \
|
||||
-e POSTGRES_PASSWORD=trails \
|
||||
-e POSTGRES_DB=trails \
|
||||
-p 5432:5432 \
|
||||
postgis/postgis:16-3.4
|
||||
# Wait for health
|
||||
for i in $(seq 1 30); do
|
||||
docker exec postgres pg_isready -U trails > /dev/null 2>&1 && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
- name: Push database schema
|
||||
run: pnpm db:push
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue