diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc1adc7..d3b2722 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 0 - name: Fail if PR adds more than 400 lines @@ -43,7 +43,7 @@ jobs: name: Lint & Format runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - uses: astral-sh/ruff-action@0ce1b0bf8b818ef400413f810f8a11cdbda0034b # v4.0.0 with: args: check . @@ -57,7 +57,7 @@ jobs: name: JS Lint (Biome) runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - uses: biomejs/setup-biome@4c91541eaada48f67d7dbd7833600ce162b68f51 # v2 with: version: "2.4.16" @@ -73,14 +73,14 @@ jobs: contents: read pull-requests: read steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 0 - name: gitleaks uses: gitleaks/gitleaks-action@e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e # v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 with: python-version: "3.14" - name: Install uv + pip-audit @@ -118,8 +118,8 @@ jobs: name: Type Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2 with: python-version: "3.14" enable-cache: true @@ -138,7 +138,7 @@ jobs: if: github.head_ref != 'release-please--branches--main' runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Build api image run: docker build -t pulsebase-api:ci api/ - name: Scan api @@ -217,7 +217,7 @@ jobs: name: JS Tests (Vitest) runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 with: version: 11 @@ -260,7 +260,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 15 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Prepare env files run: | @@ -274,7 +274,7 @@ jobs: - name: Start test stack run: docker compose --env-file env/.env --env-file env/.env.app -f deploy/docker-compose.test.yml up -d --wait - - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + - uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2 with: python-version: "3.14" enable-cache: true @@ -316,7 +316,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Prepare env files run: | @@ -377,7 +377,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Prepare env files run: | @@ -443,8 +443,8 @@ jobs: needs: typecheck runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2 with: python-version: "3.14" enable-cache: true diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 887bd57..1df1b21 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -31,13 +31,13 @@ jobs: actions: read steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 1 - name: Run Claude Code id: claude - uses: anthropics/claude-code-action@9dd8b95a392eb34b6f5fb56cf5a64cb735912d4b # v1 + uses: anthropics/claude-code-action@37b464ce72700f7b2c5ff8d2db7fa7b15df792f5 # v1 with: claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} additional_permissions: | diff --git a/.github/workflows/sbom.yml b/.github/workflows/sbom.yml index 15e8d1f..26a32fd 100644 --- a/.github/workflows/sbom.yml +++ b/.github/workflows/sbom.yml @@ -11,7 +11,7 @@ jobs: sbom: runs-on: ubuntu-latest steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Install Syft uses: anchore/sbom-action/download-syft@e22c389904149dbc22b58101806040fa8d37a610 # v0.24.0 diff --git a/api/Dockerfile b/api/Dockerfile index 624c698..46763a6 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,5 +1,5 @@ # ── Builder ─────────────────────────────────────────────────────────────────── -FROM python:3.14-slim@sha256:44dd04494ee8f3b538294360e7c4b3acb87c8268e4d0a4828a6500b1eff50061 AS builder +FROM python:3.14-slim@sha256:b877e50bd90de10af8d82c57a022fc2e0dc731c5320d762a27986facfc3355c1 AS builder WORKDIR /build RUN pip install --no-cache-dir uv COPY pyproject.toml uv.lock ./ @@ -8,7 +8,7 @@ RUN uv export --frozen --no-dev -o requirements.txt && \ /venv/bin/pip install --no-cache-dir -r requirements.txt # ── Runtime ─────────────────────────────────────────────────────────────────── -FROM python:3.14-slim@sha256:44dd04494ee8f3b538294360e7c4b3acb87c8268e4d0a4828a6500b1eff50061 +FROM python:3.14-slim@sha256:b877e50bd90de10af8d82c57a022fc2e0dc731c5320d762a27986facfc3355c1 WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends curl && \ apt-get upgrade -y && rm -rf /var/lib/apt/lists/* && \ diff --git a/deploy/docker-compose.test.yml b/deploy/docker-compose.test.yml index 06e3fc7..6b2b68b 100644 --- a/deploy/docker-compose.test.yml +++ b/deploy/docker-compose.test.yml @@ -1,7 +1,7 @@ services: db-test: - image: timescale/timescaledb:2.28.0-pg16@sha256:68faf0bca42125ff98228a8f5a379bcf0ac588d8156f716be8aaf9befd65857f + image: timescale/timescaledb:2.28.2-pg16@sha256:ba149561ad4ddff5940d6eb0a0df60aefd1355cee1a450928f271267038fc888 container_name: pulsebase-db-test restart: unless-stopped ports: @@ -31,7 +31,7 @@ services: max-file: "3" flyway-test: - image: flyway/flyway:12@sha256:4c7f14b4eea7a628c954a6905dfb25a8815e46a98d21a481f8160dd1eb04c7a3 + image: flyway/flyway:12@sha256:c345513c9240ff3543599fac78f59d0fa3806c2e38ad7e75b6bc5533078c0bc9 container_name: pulsebase-flyway-test command: migrate volumes: diff --git a/docker-compose.yml b/docker-compose.yml index 5455962..de9f184 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ services: db: - image: timescale/timescaledb:2.28.0-pg16@sha256:68faf0bca42125ff98228a8f5a379bcf0ac588d8156f716be8aaf9befd65857f + image: timescale/timescaledb:2.28.2-pg16@sha256:ba149561ad4ddff5940d6eb0a0df60aefd1355cee1a450928f271267038fc888 container_name: pulsebase-db restart: unless-stopped environment: @@ -33,7 +33,7 @@ services: max-file: "3" flyway: - image: flyway/flyway:12@sha256:4c7f14b4eea7a628c954a6905dfb25a8815e46a98d21a481f8160dd1eb04c7a3 + image: flyway/flyway:12@sha256:c345513c9240ff3543599fac78f59d0fa3806c2e38ad7e75b6bc5533078c0bc9 container_name: pulsebase-flyway command: migrate volumes: diff --git a/ml-service/Dockerfile b/ml-service/Dockerfile index 3dd0283..7075653 100644 --- a/ml-service/Dockerfile +++ b/ml-service/Dockerfile @@ -1,5 +1,5 @@ # ── Builder ─────────────────────────────────────────────────────────────────── -FROM python:3.14-slim@sha256:44dd04494ee8f3b538294360e7c4b3acb87c8268e4d0a4828a6500b1eff50061 AS builder +FROM python:3.14-slim@sha256:b877e50bd90de10af8d82c57a022fc2e0dc731c5320d762a27986facfc3355c1 AS builder WORKDIR /build RUN pip install --no-cache-dir uv COPY pyproject.toml uv.lock ./ @@ -8,7 +8,7 @@ RUN uv export --frozen --no-dev -o requirements.txt && \ /venv/bin/pip install --no-cache-dir -r requirements.txt # ── Runtime ─────────────────────────────────────────────────────────────────── -FROM python:3.14-slim@sha256:44dd04494ee8f3b538294360e7c4b3acb87c8268e4d0a4828a6500b1eff50061 +FROM python:3.14-slim@sha256:b877e50bd90de10af8d82c57a022fc2e0dc731c5320d762a27986facfc3355c1 WORKDIR /app RUN apt-get update && apt-get upgrade -y --no-install-recommends && rm -rf /var/lib/apt/lists/* && \ adduser --disabled-password --gecos "" appuser && \ diff --git a/sync-service/Dockerfile b/sync-service/Dockerfile index da679d2..dfcbb28 100644 --- a/sync-service/Dockerfile +++ b/sync-service/Dockerfile @@ -1,5 +1,5 @@ # ── Builder ─────────────────────────────────────────────────────────────────── -FROM python:3.14-slim@sha256:44dd04494ee8f3b538294360e7c4b3acb87c8268e4d0a4828a6500b1eff50061 AS builder +FROM python:3.14-slim@sha256:b877e50bd90de10af8d82c57a022fc2e0dc731c5320d762a27986facfc3355c1 AS builder WORKDIR /build RUN pip install --no-cache-dir uv COPY pyproject.toml uv.lock ./ @@ -8,7 +8,7 @@ RUN uv export --frozen --no-dev -o requirements.txt && \ /venv/bin/pip install --no-cache-dir -r requirements.txt # ── Runtime ─────────────────────────────────────────────────────────────────── -FROM python:3.14-slim@sha256:44dd04494ee8f3b538294360e7c4b3acb87c8268e4d0a4828a6500b1eff50061 +FROM python:3.14-slim@sha256:b877e50bd90de10af8d82c57a022fc2e0dc731c5320d762a27986facfc3355c1 WORKDIR /app RUN apt-get update && apt-get upgrade -y --no-install-recommends && rm -rf /var/lib/apt/lists/* && \ adduser --disabled-password --gecos "" appuser