diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fd619e..3240a80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,13 @@ jobs: run: pnpm audit --audit-level=high continue-on-error: true + dockerfile-check: + name: Dockerfile Package Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - run: bash scripts/check-dockerfiles.sh + typecheck: name: Typecheck runs-on: ubuntu-latest diff --git a/apps/planner/Dockerfile b/apps/planner/Dockerfile index a6f8a9a..52b221d 100644 --- a/apps/planner/Dockerfile +++ b/apps/planner/Dockerfile @@ -11,6 +11,8 @@ COPY packages/ui/package.json packages/ui/ COPY packages/map/package.json packages/map/ COPY packages/gpx/package.json packages/gpx/ COPY packages/i18n/package.json packages/i18n/ +COPY packages/api/package.json packages/api/ +COPY packages/map-core/package.json packages/map-core/ COPY packages/db/package.json packages/db/ COPY packages/jobs/package.json packages/jobs/ RUN pnpm install --frozen-lockfile diff --git a/scripts/check-dockerfiles.sh b/scripts/check-dockerfiles.sh new file mode 100755 index 0000000..6bd6a63 --- /dev/null +++ b/scripts/check-dockerfiles.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# Verify all workspace packages are listed in Dockerfiles. +# Run in CI to catch missing COPY lines when new packages are added. +set -euo pipefail + +errors=0 + +for pkg_json in packages/*/package.json; do + pkg_dir=$(dirname "$pkg_json") # e.g. packages/jobs + pkg_name=$(basename "$pkg_dir") # e.g. jobs + + for dockerfile in apps/*/Dockerfile; do + app=$(basename "$(dirname "$dockerfile")") + if ! grep -q "COPY ${pkg_dir}/package.json" "$dockerfile"; then + echo "ERROR: $dockerfile is missing COPY for $pkg_dir/package.json" + errors=$((errors + 1)) + fi + done +done + +if [ "$errors" -gt 0 ]; then + echo "" + echo "$errors missing package(s) in Dockerfiles. Add COPY lines to the deps stage." + exit 1 +fi + +echo "All workspace packages present in all Dockerfiles."