From e068b2babe732779d7aec55029238a561da6b293 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 16:30:05 +0100 Subject: [PATCH 01/22] fix --- .github/workflows/service-checks.yml | 65 +++++++++++++++------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 25b6fe7..de1e661 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -8,7 +8,7 @@ on: - "pyproject.toml" - ".github/workflows/service-checks.yml" push: - branches: [main, develop] + branches: [main, develop, gh-actions] paths: - "services/**" - ".pre-commit-config.yaml" @@ -22,6 +22,7 @@ jobs: changes: runs-on: ubuntu-latest outputs: + context_retriever: ${{ steps.filter.outputs.context_retriever }} llm_proxy: ${{ steps.filter.outputs.llm_proxy }} web_app: ${{ steps.filter.outputs.web_app }} steps: @@ -30,49 +31,51 @@ jobs: id: filter with: filters: | + context_retriever: + - "services/context-retriever/**" + - ".pre-commit-config.yaml" + - "pyproject.toml" llm_proxy: - - 'services/llm-proxy/**' - - '.pre-commit-config.yaml' - - 'pyproject.toml' + - "services/llm-proxy/**" + - ".pre-commit-config.yaml" + - "pyproject.toml" web_app: - - 'services/web-app/**' - - '.pre-commit-config.yaml' - - 'pyproject.toml' + - "services/web-app/**" + - ".pre-commit-config.yaml" + - "pyproject.toml" - precommit-llm-proxy: + precommit-context-retriever: + needs: changes + if: needs.changes.outputs.context_retriever == 'true' runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run just run-precommit (devcontainer) + uses: devcontainers/ci@v0.3 + with: + subFolder: services/context-retriever + runCmd: just run-precommit + + precommit-llm-proxy: needs: changes if: needs.changes.outputs.llm_proxy == 'true' + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - name: Run just run-precommit (devcontainer) + uses: devcontainers/ci@v0.3 with: - python-version: "3.12" - - name: Install dependencies - working-directory: services/llm-proxy - run: | - uv venv - uv pip install -e ".[dev]" - - name: Run pre-commit - working-directory: services/llm-proxy - run: | - uv run pre-commit run -c ../../.pre-commit-config.yaml --files $(git -C ../.. ls-files services/llm-proxy) + subFolder: services/llm-proxy + runCmd: just run-precommit precommit-web-app: - runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.web_app == 'true' + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - name: Run just run-precommit (devcontainer) + uses: devcontainers/ci@v0.3 with: - python-version: "3.12" - - name: Install dependencies - working-directory: services/web-app - run: | - uv venv - uv pip install -e ".[dev]" - - name: Run pre-commit - working-directory: services/web-app - run: | - uv run pre-commit run -c ../../.pre-commit-config.yaml --files $(git -C ../.. ls-files services/web-app) + subFolder: services/web-app + runCmd: just run-precommit From b67c2f40ceeeb4c84f729d9dfc0a3ad7b248c196 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 16:38:15 +0100 Subject: [PATCH 02/22] directory fix --- .github/workflows/service-checks.yml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index de1e661..9bbb8a6 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -69,13 +69,16 @@ jobs: runCmd: just run-precommit precommit-web-app: - needs: changes - if: needs.changes.outputs.web_app == 'true' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Run just run-precommit (devcontainer) - uses: devcontainers/ci@v0.3 - with: - subFolder: services/web-app - runCmd: just run-precommit + runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.web_app == 'true' + steps: + - uses: actions/checkout@v4 + + - name: Run just run-precommit (devcontainer) + uses: devcontainers/ci@v0.3 + with: + subFolder: services/web-app + configFile: .devcontainer/web-app/devcontainer.json + runCmd: just run-precommit + From 6c35f5dd52af7f36134d11dc232fdcdc0dc3bf14 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 16:40:36 +0100 Subject: [PATCH 03/22] fix --- .github/workflows/service-checks.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 9bbb8a6..0d84697 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -69,16 +69,16 @@ jobs: runCmd: just run-precommit precommit-web-app: - runs-on: ubuntu-latest - needs: changes - if: needs.changes.outputs.web_app == 'true' - steps: - - uses: actions/checkout@v4 + runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.web_app == 'true' + steps: + - uses: actions/checkout@v4 - - name: Run just run-precommit (devcontainer) - uses: devcontainers/ci@v0.3 - with: - subFolder: services/web-app - configFile: .devcontainer/web-app/devcontainer.json - runCmd: just run-precommit + - name: Run just run-precommit (devcontainer) + uses: devcontainers/ci@v0.3 + with: + subFolder: services/web-app + configFile: .devcontainer/web-app/devcontainer.json + runCmd: just run-precommit From aea2c870ff46e055eed0cba49b63c1105c892efe Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 16:46:16 +0100 Subject: [PATCH 04/22] mount fix --- .github/workflows/service-checks.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 0d84697..1e89a3c 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -45,11 +45,12 @@ jobs: - "pyproject.toml" precommit-context-retriever: + runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.context_retriever == 'true' - runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 with: @@ -57,11 +58,12 @@ jobs: runCmd: just run-precommit precommit-llm-proxy: + runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.llm_proxy == 'true' - runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 with: @@ -75,10 +77,16 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Provide dummy SSH_AUTH_SOCK for devcontainer mounts + run: | + mkdir -p /tmp + touch /tmp/ssh-agent.sock + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 + env: + SSH_AUTH_SOCK: /tmp/ssh-agent.sock with: subFolder: services/web-app configFile: .devcontainer/web-app/devcontainer.json runCmd: just run-precommit - From f9c722a19f0782358d2a9518499f13bf8e71491f Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 16:51:29 +0100 Subject: [PATCH 05/22] fix --- .github/workflows/service-checks.yml | 29 +++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 1e89a3c..b166b02 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -50,11 +50,18 @@ jobs: if: needs.changes.outputs.context_retriever == 'true' steps: - uses: actions/checkout@v4 + - name: Provide dummy SSH_AUTH_SOCK for devcontainer mounts + run: | + mkdir -p /tmp + touch /tmp/ssh-agent.sock - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 + env: + SSH_AUTH_SOCK: /tmp/ssh-agent.sock with: subFolder: services/context-retriever + configFile: .devcontainer/context-retriever/devcontainer.json runCmd: just run-precommit precommit-llm-proxy: @@ -64,10 +71,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Provide dummy SSH_AUTH_SOCK for devcontainer mounts + run: | + mkdir -p /tmp + touch /tmp/ssh-agent.sock + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 + env: + SSH_AUTH_SOCK: /tmp/ssh-agent.sock with: subFolder: services/llm-proxy + configFile: .devcontainer/llm-proxy/devcontainer.json runCmd: just run-precommit precommit-web-app: @@ -82,11 +97,23 @@ jobs: mkdir -p /tmp touch /tmp/ssh-agent.sock + - name: Generate CI devcontainer config (skip postCreateCommand) + run: | + python - <<'PY' + import json, pathlib + src = pathlib.Path(".devcontainer/web-app/devcontainer.json") + dst = pathlib.Path(".devcontainer/web-app/devcontainer.ci.json") + data = json.loads(src.read_text()) + data.pop("postCreateCommand", None) + dst.write_text(json.dumps(data, indent=2) + "\n") + print(f"Written {dst}") + PY + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 env: SSH_AUTH_SOCK: /tmp/ssh-agent.sock with: subFolder: services/web-app - configFile: .devcontainer/web-app/devcontainer.json + configFile: .devcontainer/web-app/devcontainer.ci.json runCmd: just run-precommit From 0969cd7a0db1f63eb058ad2a0f97d0e43a775b57 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:02:52 +0100 Subject: [PATCH 06/22] fix --- .github/workflows/service-checks.yml | 49 +++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index b166b02..39c5371 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -4,6 +4,9 @@ on: pull_request: paths: - "services/**" + - ".devcontainer/context-retriever/**" + - ".devcontainer/llm-proxy/**" + - ".devcontainer/web-app/**" - ".pre-commit-config.yaml" - "pyproject.toml" - ".github/workflows/service-checks.yml" @@ -11,6 +14,9 @@ on: branches: [main, develop, gh-actions] paths: - "services/**" + - ".devcontainer/context-retriever/**" + - ".devcontainer/llm-proxy/**" + - ".devcontainer/web-app/**" - ".pre-commit-config.yaml" - "pyproject.toml" - ".github/workflows/service-checks.yml" @@ -33,14 +39,17 @@ jobs: filters: | context_retriever: - "services/context-retriever/**" + - ".devcontainer/context-retriever/**" - ".pre-commit-config.yaml" - "pyproject.toml" llm_proxy: - "services/llm-proxy/**" + - ".devcontainer/llm-proxy/**" - ".pre-commit-config.yaml" - "pyproject.toml" web_app: - "services/web-app/**" + - ".devcontainer/web-app/**" - ".pre-commit-config.yaml" - "pyproject.toml" @@ -55,6 +64,18 @@ jobs: mkdir -p /tmp touch /tmp/ssh-agent.sock + - name: Disable post-create/start commands for CI + run: | + python - <<'PY' + import json + import pathlib + path = pathlib.Path(".devcontainer/context-retriever/devcontainer.json") + data = json.loads(path.read_text()) + data.pop("postCreateCommand", None) + data.pop("postStartCommand", None) + path.write_text(json.dumps(data, indent=2) + "\n") + PY + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 env: @@ -76,6 +97,18 @@ jobs: mkdir -p /tmp touch /tmp/ssh-agent.sock + - name: Disable post-create/start commands for CI + run: | + python - <<'PY' + import json + import pathlib + path = pathlib.Path(".devcontainer/llm-proxy/devcontainer.json") + data = json.loads(path.read_text()) + data.pop("postCreateCommand", None) + data.pop("postStartCommand", None) + path.write_text(json.dumps(data, indent=2) + "\n") + PY + - name: Run just run-precommit (devcontainer) uses: devcontainers/ci@v0.3 env: @@ -97,16 +130,16 @@ jobs: mkdir -p /tmp touch /tmp/ssh-agent.sock - - name: Generate CI devcontainer config (skip postCreateCommand) + - name: Disable post-create/start commands for CI run: | python - <<'PY' - import json, pathlib - src = pathlib.Path(".devcontainer/web-app/devcontainer.json") - dst = pathlib.Path(".devcontainer/web-app/devcontainer.ci.json") - data = json.loads(src.read_text()) + import json + import pathlib + path = pathlib.Path(".devcontainer/web-app/devcontainer.json") + data = json.loads(path.read_text()) data.pop("postCreateCommand", None) - dst.write_text(json.dumps(data, indent=2) + "\n") - print(f"Written {dst}") + data.pop("postStartCommand", None) + path.write_text(json.dumps(data, indent=2) + "\n") PY - name: Run just run-precommit (devcontainer) @@ -115,5 +148,5 @@ jobs: SSH_AUTH_SOCK: /tmp/ssh-agent.sock with: subFolder: services/web-app - configFile: .devcontainer/web-app/devcontainer.ci.json + configFile: .devcontainer/web-app/devcontainer.json runCmd: just run-precommit From e1b48583955a3029c35568d18f22c8f49c93ecdb Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:15:06 +0100 Subject: [PATCH 07/22] fix --- .github/workflows/service-checks.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 39c5371..5f1fac8 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -83,7 +83,8 @@ jobs: with: subFolder: services/context-retriever configFile: .devcontainer/context-retriever/devcontainer.json - runCmd: just run-precommit + runCmd: >- + /bin/bash -lc 'export PATH=/home/appuser/.local/bin:/home/appuser/.cargo/bin:$PATH; just run-precommit' precommit-llm-proxy: runs-on: ubuntu-latest @@ -116,7 +117,8 @@ jobs: with: subFolder: services/llm-proxy configFile: .devcontainer/llm-proxy/devcontainer.json - runCmd: just run-precommit + runCmd: >- + /bin/bash -lc 'export PATH=/home/appuser/.local/bin:/home/appuser/.cargo/bin:$PATH; just run-precommit' precommit-web-app: runs-on: ubuntu-latest @@ -149,4 +151,5 @@ jobs: with: subFolder: services/web-app configFile: .devcontainer/web-app/devcontainer.json - runCmd: just run-precommit + runCmd: >- + /bin/bash -lc 'export PATH=/home/appuser/.local/bin:/home/appuser/.cargo/bin:$PATH; just run-precommit' From 38b5e5482b27317d820acb086f72b21dc03f16ea Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:26:44 +0100 Subject: [PATCH 08/22] fix --- .github/workflows/service-checks.yml | 196 ++++++++++----------------- 1 file changed, 69 insertions(+), 127 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 5f1fac8..5a44744 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -1,155 +1,97 @@ -name: Service checks +name: Service Checks on: pull_request: paths: - - "services/**" - - ".devcontainer/context-retriever/**" - - ".devcontainer/llm-proxy/**" - - ".devcontainer/web-app/**" - - ".pre-commit-config.yaml" - - "pyproject.toml" - - ".github/workflows/service-checks.yml" + - .github/workflows/service-checks.yml + - .pre-commit-config.yaml + - pyproject.toml + - services/context-retriever/** + - services/web-app/** + - services/llm-proxy/** push: - branches: [main, develop, gh-actions] paths: - - "services/**" - - ".devcontainer/context-retriever/**" - - ".devcontainer/llm-proxy/**" - - ".devcontainer/web-app/**" - - ".pre-commit-config.yaml" - - "pyproject.toml" - - ".github/workflows/service-checks.yml" + - .github/workflows/service-checks.yml + - .pre-commit-config.yaml + - pyproject.toml + - services/context-retriever/** + - services/web-app/** + - services/llm-proxy/** permissions: contents: read +env: + PRECOMMIT_CMD: just run-precommit + +x-precommit-steps: &precommit_steps + - name: Checkout repository + uses: actions/checkout@v4 + - name: Verify Docker engine + run: docker version + - name: Run pre-commit in devcontainer + uses: devcontainers/ci@v0.3 + with: + configFile: ${{ env.DEVCONTAINER_CONFIG }} + runCmd: ${{ env.PRECOMMIT_CMD }} + jobs: changes: + name: Detect changed services runs-on: ubuntu-latest outputs: - context_retriever: ${{ steps.filter.outputs.context_retriever }} - llm_proxy: ${{ steps.filter.outputs.llm_proxy }} - web_app: ${{ steps.filter.outputs.web_app }} + context-retriever: ${{ steps.filter.outputs.context-retriever }} + web-app: ${{ steps.filter.outputs.web-app }} + llm-proxy: ${{ steps.filter.outputs.llm-proxy }} steps: - - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Determine impacted services id: filter + uses: dorny/paths-filter@v3 with: filters: | - context_retriever: - - "services/context-retriever/**" - - ".devcontainer/context-retriever/**" - - ".pre-commit-config.yaml" - - "pyproject.toml" - llm_proxy: - - "services/llm-proxy/**" - - ".devcontainer/llm-proxy/**" - - ".pre-commit-config.yaml" - - "pyproject.toml" - web_app: - - "services/web-app/**" - - ".devcontainer/web-app/**" - - ".pre-commit-config.yaml" - - "pyproject.toml" + context-retriever: + - services/context-retriever/** + - .pre-commit-config.yaml + - pyproject.toml + - .github/workflows/service-checks.yml + web-app: + - services/web-app/** + - .pre-commit-config.yaml + - pyproject.toml + - .github/workflows/service-checks.yml + llm-proxy: + - services/llm-proxy/** + - .pre-commit-config.yaml + - pyproject.toml + - .github/workflows/service-checks.yml precommit-context-retriever: + name: Pre-commit (context-retriever) runs-on: ubuntu-latest needs: changes - if: needs.changes.outputs.context_retriever == 'true' - steps: - - uses: actions/checkout@v4 - - name: Provide dummy SSH_AUTH_SOCK for devcontainer mounts - run: | - mkdir -p /tmp - touch /tmp/ssh-agent.sock - - - name: Disable post-create/start commands for CI - run: | - python - <<'PY' - import json - import pathlib - path = pathlib.Path(".devcontainer/context-retriever/devcontainer.json") - data = json.loads(path.read_text()) - data.pop("postCreateCommand", None) - data.pop("postStartCommand", None) - path.write_text(json.dumps(data, indent=2) + "\n") - PY + if: needs.changes.outputs.context-retriever == 'true' + env: + DEVCONTAINER_CONFIG: services/context-retriever/.devcontainer/devcontainer.json + steps: *precommit_steps - - name: Run just run-precommit (devcontainer) - uses: devcontainers/ci@v0.3 - env: - SSH_AUTH_SOCK: /tmp/ssh-agent.sock - with: - subFolder: services/context-retriever - configFile: .devcontainer/context-retriever/devcontainer.json - runCmd: >- - /bin/bash -lc 'export PATH=/home/appuser/.local/bin:/home/appuser/.cargo/bin:$PATH; just run-precommit' - - precommit-llm-proxy: + precommit-web-app: + name: Pre-commit (web-app) runs-on: ubuntu-latest needs: changes - if: needs.changes.outputs.llm_proxy == 'true' - steps: - - uses: actions/checkout@v4 - - - name: Provide dummy SSH_AUTH_SOCK for devcontainer mounts - run: | - mkdir -p /tmp - touch /tmp/ssh-agent.sock + if: needs.changes.outputs.web-app == 'true' + env: + DEVCONTAINER_CONFIG: .devcontainer/web-app/devcontainer.json + steps: *precommit_steps - - name: Disable post-create/start commands for CI - run: | - python - <<'PY' - import json - import pathlib - path = pathlib.Path(".devcontainer/llm-proxy/devcontainer.json") - data = json.loads(path.read_text()) - data.pop("postCreateCommand", None) - data.pop("postStartCommand", None) - path.write_text(json.dumps(data, indent=2) + "\n") - PY - - - name: Run just run-precommit (devcontainer) - uses: devcontainers/ci@v0.3 - env: - SSH_AUTH_SOCK: /tmp/ssh-agent.sock - with: - subFolder: services/llm-proxy - configFile: .devcontainer/llm-proxy/devcontainer.json - runCmd: >- - /bin/bash -lc 'export PATH=/home/appuser/.local/bin:/home/appuser/.cargo/bin:$PATH; just run-precommit' - - precommit-web-app: + precommit-llm-proxy: + name: Pre-commit (llm-proxy) runs-on: ubuntu-latest needs: changes - if: needs.changes.outputs.web_app == 'true' - steps: - - uses: actions/checkout@v4 - - - name: Provide dummy SSH_AUTH_SOCK for devcontainer mounts - run: | - mkdir -p /tmp - touch /tmp/ssh-agent.sock - - - name: Disable post-create/start commands for CI - run: | - python - <<'PY' - import json - import pathlib - path = pathlib.Path(".devcontainer/web-app/devcontainer.json") - data = json.loads(path.read_text()) - data.pop("postCreateCommand", None) - data.pop("postStartCommand", None) - path.write_text(json.dumps(data, indent=2) + "\n") - PY - - - name: Run just run-precommit (devcontainer) - uses: devcontainers/ci@v0.3 - env: - SSH_AUTH_SOCK: /tmp/ssh-agent.sock - with: - subFolder: services/web-app - configFile: .devcontainer/web-app/devcontainer.json - runCmd: >- - /bin/bash -lc 'export PATH=/home/appuser/.local/bin:/home/appuser/.cargo/bin:$PATH; just run-precommit' + if: needs.changes.outputs.llm-proxy == 'true' + env: + DEVCONTAINER_CONFIG: .devcontainer/llm-proxy/devcontainer.json + steps: *precommit_steps From 644b1061bec73bb32eeefb41659ceca5eb25bd0a Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:29:12 +0100 Subject: [PATCH 09/22] fix --- .github/workflows/service-checks.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 5a44744..7b0dc8c 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -24,17 +24,6 @@ permissions: env: PRECOMMIT_CMD: just run-precommit -x-precommit-steps: &precommit_steps - - name: Checkout repository - uses: actions/checkout@v4 - - name: Verify Docker engine - run: docker version - - name: Run pre-commit in devcontainer - uses: devcontainers/ci@v0.3 - with: - configFile: ${{ env.DEVCONTAINER_CONFIG }} - runCmd: ${{ env.PRECOMMIT_CMD }} - jobs: changes: name: Detect changed services @@ -76,7 +65,16 @@ jobs: if: needs.changes.outputs.context-retriever == 'true' env: DEVCONTAINER_CONFIG: services/context-retriever/.devcontainer/devcontainer.json - steps: *precommit_steps + steps: &precommit_steps + - name: Checkout repository + uses: actions/checkout@v4 + - name: Verify Docker engine + run: docker version + - name: Run pre-commit in devcontainer + uses: devcontainers/ci@v0.3 + with: + configFile: ${{ env.DEVCONTAINER_CONFIG }} + runCmd: ${{ env.PRECOMMIT_CMD }} precommit-web-app: name: Pre-commit (web-app) From 6dfc88087263742f2e44a45591f50322c1da7c68 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:32:21 +0100 Subject: [PATCH 10/22] fix --- .github/workflows/service-checks.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 7b0dc8c..1ac8a5d 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -23,6 +23,7 @@ permissions: env: PRECOMMIT_CMD: just run-precommit + SSH_AUTH_SOCK: /tmp/ssh-agent jobs: changes: @@ -70,6 +71,11 @@ jobs: uses: actions/checkout@v4 - name: Verify Docker engine run: docker version + - name: Ensure SSH agent mount path exists + run: | + if [ ! -e "${SSH_AUTH_SOCK}" ]; then + touch "${SSH_AUTH_SOCK}" + fi - name: Run pre-commit in devcontainer uses: devcontainers/ci@v0.3 with: From 6e8fbb6dc19273055fe085534647387002a4045f Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:37:29 +0100 Subject: [PATCH 11/22] fix --- .github/workflows/service-checks.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 1ac8a5d..edf88ea 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -66,6 +66,7 @@ jobs: if: needs.changes.outputs.context-retriever == 'true' env: DEVCONTAINER_CONFIG: services/context-retriever/.devcontainer/devcontainer.json + SERVICE_WORKDIR: /home/appuser/workspace/services/context-retriever steps: &precommit_steps - name: Checkout repository uses: actions/checkout@v4 @@ -80,7 +81,7 @@ jobs: uses: devcontainers/ci@v0.3 with: configFile: ${{ env.DEVCONTAINER_CONFIG }} - runCmd: ${{ env.PRECOMMIT_CMD }} + runCmd: bash -lc "cd ${{ env.SERVICE_WORKDIR }} && ${{ env.PRECOMMIT_CMD }}" precommit-web-app: name: Pre-commit (web-app) @@ -89,6 +90,7 @@ jobs: if: needs.changes.outputs.web-app == 'true' env: DEVCONTAINER_CONFIG: .devcontainer/web-app/devcontainer.json + SERVICE_WORKDIR: /home/appuser/workspace/services/web-app steps: *precommit_steps precommit-llm-proxy: @@ -98,4 +100,5 @@ jobs: if: needs.changes.outputs.llm-proxy == 'true' env: DEVCONTAINER_CONFIG: .devcontainer/llm-proxy/devcontainer.json + SERVICE_WORKDIR: /home/appuser/workspace/services/llm-proxy steps: *precommit_steps From 21a5e9412f8d50c504034f8e3d56e13eaefbe8f4 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:43:54 +0100 Subject: [PATCH 12/22] fix --- services/llm-proxy/justfile | 2 +- services/web-app/justfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/llm-proxy/justfile b/services/llm-proxy/justfile index f8eae92..b5470b9 100644 --- a/services/llm-proxy/justfile +++ b/services/llm-proxy/justfile @@ -16,5 +16,5 @@ run-server *args: # Runs static checks using global pre-commit configuration. run-precommit: - uv run pre-commit run -c ../../.pre-commit-config.yaml \ + uv run --extra dev pre-commit run -c ../../.pre-commit-config.yaml \ --files `git ls-files --cached --others --exclude-standard` diff --git a/services/web-app/justfile b/services/web-app/justfile index fdf4671..6593f1d 100644 --- a/services/web-app/justfile +++ b/services/web-app/justfile @@ -25,5 +25,5 @@ run-mock-backend: # Runs static checks using global pre-commit configuration. run-precommit: - uv run pre-commit run -c ../../.pre-commit-config.yaml \ + uv run --extra dev pre-commit run -c ../../.pre-commit-config.yaml \ --files `git ls-files --cached --others --exclude-standard` From 9ba6a7e75aa8bdc5a4c2e5bbdde7244dd960b9b0 Mon Sep 17 00:00:00 2001 From: Janek Stryszewski Date: Wed, 7 Jan 2026 17:59:05 +0100 Subject: [PATCH 13/22] nio --- .github/workflows/service-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index edf88ea..96d7c61 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -65,7 +65,7 @@ jobs: needs: changes if: needs.changes.outputs.context-retriever == 'true' env: - DEVCONTAINER_CONFIG: services/context-retriever/.devcontainer/devcontainer.json + DEVCONTAINER_CONFIG: .devcontainer/context-retriever/devcontainer.json SERVICE_WORKDIR: /home/appuser/workspace/services/context-retriever steps: &precommit_steps - name: Checkout repository From 3ab411e90af9ebe608bfce800a3e5f5c464e6e3d Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Thu, 8 Jan 2026 10:49:28 +0000 Subject: [PATCH 14/22] Rename context-retriever .devcontainer config for name consistency --- .devcontainer/{context_retriever => context-retriever}/Dockerfile | 0 .../{context_retriever => context-retriever}/devcontainer.json | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename .devcontainer/{context_retriever => context-retriever}/Dockerfile (100%) rename .devcontainer/{context_retriever => context-retriever}/devcontainer.json (100%) diff --git a/.devcontainer/context_retriever/Dockerfile b/.devcontainer/context-retriever/Dockerfile similarity index 100% rename from .devcontainer/context_retriever/Dockerfile rename to .devcontainer/context-retriever/Dockerfile diff --git a/.devcontainer/context_retriever/devcontainer.json b/.devcontainer/context-retriever/devcontainer.json similarity index 100% rename from .devcontainer/context_retriever/devcontainer.json rename to .devcontainer/context-retriever/devcontainer.json From 162a0eb0bc38e560f8bbd7c00bb00374386d2624 Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Thu, 8 Jan 2026 10:52:32 +0000 Subject: [PATCH 15/22] Enable firing workflows on changes to devcontainer setup --- .github/workflows/service-checks.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 96d7c61..3aa5474 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -9,6 +9,7 @@ on: - services/context-retriever/** - services/web-app/** - services/llm-proxy/** + - .devcontainer/** push: paths: - .github/workflows/service-checks.yml @@ -17,6 +18,7 @@ on: - services/context-retriever/** - services/web-app/** - services/llm-proxy/** + - .devcontainer/** permissions: contents: read @@ -48,16 +50,22 @@ jobs: - .pre-commit-config.yaml - pyproject.toml - .github/workflows/service-checks.yml + - .devcontainer/context-retriever/** + - .devcontainer/scripts/** web-app: - services/web-app/** - .pre-commit-config.yaml - pyproject.toml - .github/workflows/service-checks.yml + - .devcontainer/web-app/** + - .devcontainer/scripts/** llm-proxy: - services/llm-proxy/** - .pre-commit-config.yaml - pyproject.toml - .github/workflows/service-checks.yml + - .devcontainer/llm-proxy/** + - .devcontainer/scripts/** precommit-context-retriever: name: Pre-commit (context-retriever) From 9da7e0122f359e838e8c4c61c4e56a2bc34f1fc7 Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Thu, 8 Jan 2026 10:58:21 +0000 Subject: [PATCH 16/22] Add environment setup before running precommit --- .github/workflows/service-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 3aa5474..8e62a62 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -24,7 +24,7 @@ permissions: contents: read env: - PRECOMMIT_CMD: just run-precommit + PRECOMMIT_CMD: just setup-environment && just run-precommit SSH_AUTH_SOCK: /tmp/ssh-agent jobs: From e5e21ef6907e1146e8d56c1f2e92516356e4efb1 Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Sat, 10 Jan 2026 12:48:21 +0100 Subject: [PATCH 17/22] Move pre-commit action to a separate file --- .../run-precommit-for-service/action.yml | 37 ++++++++++++++++ .github/workflows/service-checks.yml | 44 ++++++++----------- 2 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 .github/actions/run-precommit-for-service/action.yml diff --git a/.github/actions/run-precommit-for-service/action.yml b/.github/actions/run-precommit-for-service/action.yml new file mode 100644 index 0000000..6bf82b4 --- /dev/null +++ b/.github/actions/run-precommit-for-service/action.yml @@ -0,0 +1,37 @@ +--- +name: Run Pre-commit for Service +description: Set up a Dev-Container for a specific service and run pre-commit checks within that environment. + +inputs: + devcontainer-cfg-path: + description: Directory containing .devcontainer configuration for the service. + required: true + + service-workdir: + description: Working directory inside the Dev-Container where the service code resides. + required: true + +runs: + using: composite + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Verify Docker engine + run: docker version + + - name: Ensure SSH agent mount path exists + run: | + if [ ! -e "${SSH_AUTH_SOCK}" ]; then + touch "${SSH_AUTH_SOCK}" + fi + + - name: Run pre-commit in devcontainer + uses: devcontainers/ci@v0.3 + with: + configFile: ${{ inputs.devcontainer-cfg-path }}/devcontainer.json + runCmd: | + bash -lc "cd ${{ inputs.service-workdir }} && \ + just setup-environment && \ + just run-precommit \ No newline at end of file diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 8e62a62..a081f2d 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -40,6 +40,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Determine impacted services id: filter uses: dorny/paths-filter@v3 @@ -72,41 +73,34 @@ jobs: runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.context-retriever == 'true' - env: - DEVCONTAINER_CONFIG: .devcontainer/context-retriever/devcontainer.json - SERVICE_WORKDIR: /home/appuser/workspace/services/context-retriever - steps: &precommit_steps - - name: Checkout repository - uses: actions/checkout@v4 - - name: Verify Docker engine - run: docker version - - name: Ensure SSH agent mount path exists - run: | - if [ ! -e "${SSH_AUTH_SOCK}" ]; then - touch "${SSH_AUTH_SOCK}" - fi - - name: Run pre-commit in devcontainer - uses: devcontainers/ci@v0.3 + steps: + - name: Run pre-commit for context-retriever + uses: ./.github/actions/run-precommit-for-service with: - configFile: ${{ env.DEVCONTAINER_CONFIG }} - runCmd: bash -lc "cd ${{ env.SERVICE_WORKDIR }} && ${{ env.PRECOMMIT_CMD }}" + devcontainer-cfg-path: .devcontainer/context-retriever + service-workdir: /home/appuser/workspace/services/context-retriever + precommit-web-app: name: Pre-commit (web-app) runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.web-app == 'true' - env: - DEVCONTAINER_CONFIG: .devcontainer/web-app/devcontainer.json - SERVICE_WORKDIR: /home/appuser/workspace/services/web-app - steps: *precommit_steps + steps: + - name: Run pre-commit for web-app + uses: ./.github/actions/run-precommit-for-service + with: + devcontainer-cfg-path: .devcontainer/web-app + service-workdir: /home/appuser/workspace/services/web-app precommit-llm-proxy: name: Pre-commit (llm-proxy) runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.llm-proxy == 'true' - env: - DEVCONTAINER_CONFIG: .devcontainer/llm-proxy/devcontainer.json - SERVICE_WORKDIR: /home/appuser/workspace/services/llm-proxy - steps: *precommit_steps + steps: + - name: Run pre-commit for llm-proxy + uses: ./.github/actions/run-precommit-for-service + with: + devcontainer-cfg-path: .devcontainer/llm-proxy + service-workdir: /home/appuser/workspace/services/llm-proxy From ca633538e420690f7089c632fc6c2458ac17fe88 Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Sat, 10 Jan 2026 12:49:11 +0100 Subject: [PATCH 18/22] Modify service-checks config Added new firing rules Added workflow cancelling rules Added specific version of 'runs-on' image --- .github/workflows/service-checks.yml | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index a081f2d..96c5255 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -1,4 +1,5 @@ name: Service Checks +description: Run pre-commit static analysis on services having their own Dev-Container setup. on: pull_request: @@ -10,27 +11,24 @@ on: - services/web-app/** - services/llm-proxy/** - .devcontainer/** - push: - paths: - - .github/workflows/service-checks.yml - - .pre-commit-config.yaml - - pyproject.toml - - services/context-retriever/** - - services/web-app/** - - services/llm-proxy/** - - .devcontainer/** + branches: [main, develop] permissions: contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + env: - PRECOMMIT_CMD: just setup-environment && just run-precommit + # Dummy socket to simulate mounting SSH agent into Dev-Container SSH_AUTH_SOCK: /tmp/ssh-agent jobs: changes: name: Detect changed services - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: context-retriever: ${{ steps.filter.outputs.context-retriever }} web-app: ${{ steps.filter.outputs.web-app }} @@ -70,7 +68,7 @@ jobs: precommit-context-retriever: name: Pre-commit (context-retriever) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: changes if: needs.changes.outputs.context-retriever == 'true' steps: @@ -83,7 +81,7 @@ jobs: precommit-web-app: name: Pre-commit (web-app) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: changes if: needs.changes.outputs.web-app == 'true' steps: @@ -95,7 +93,7 @@ jobs: precommit-llm-proxy: name: Pre-commit (llm-proxy) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: changes if: needs.changes.outputs.llm-proxy == 'true' steps: From bf706b6a94665aff1276391cc2bd261f095c10cb Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Sat, 10 Jan 2026 12:53:05 +0100 Subject: [PATCH 19/22] Fix problem with not checked-out repo for pre-commit action --- .github/actions/run-precommit-for-service/action.yml | 3 --- .github/workflows/service-checks.yml | 9 +++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/actions/run-precommit-for-service/action.yml b/.github/actions/run-precommit-for-service/action.yml index 6bf82b4..ceac562 100644 --- a/.github/actions/run-precommit-for-service/action.yml +++ b/.github/actions/run-precommit-for-service/action.yml @@ -15,9 +15,6 @@ runs: using: composite steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Verify Docker engine run: docker version diff --git a/.github/workflows/service-checks.yml b/.github/workflows/service-checks.yml index 96c5255..26d5562 100644 --- a/.github/workflows/service-checks.yml +++ b/.github/workflows/service-checks.yml @@ -72,6 +72,9 @@ jobs: needs: changes if: needs.changes.outputs.context-retriever == 'true' steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Run pre-commit for context-retriever uses: ./.github/actions/run-precommit-for-service with: @@ -85,6 +88,9 @@ jobs: needs: changes if: needs.changes.outputs.web-app == 'true' steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Run pre-commit for web-app uses: ./.github/actions/run-precommit-for-service with: @@ -97,6 +103,9 @@ jobs: needs: changes if: needs.changes.outputs.llm-proxy == 'true' steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Run pre-commit for llm-proxy uses: ./.github/actions/run-precommit-for-service with: From 3bb66f7af47c250e28e16cf5a09661ade69f091d Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Sat, 10 Jan 2026 12:55:29 +0100 Subject: [PATCH 20/22] Add bash as the shell for creating ssh auth sock --- .github/actions/run-precommit-for-service/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/run-precommit-for-service/action.yml b/.github/actions/run-precommit-for-service/action.yml index ceac562..a79c1da 100644 --- a/.github/actions/run-precommit-for-service/action.yml +++ b/.github/actions/run-precommit-for-service/action.yml @@ -23,6 +23,7 @@ runs: if [ ! -e "${SSH_AUTH_SOCK}" ]; then touch "${SSH_AUTH_SOCK}" fi + shell: bash - name: Run pre-commit in devcontainer uses: devcontainers/ci@v0.3 From b16ea47c2ccac01131bb2885d096f67a30f3f560 Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Sat, 10 Jan 2026 12:56:50 +0100 Subject: [PATCH 21/22] Up --- .github/actions/run-precommit-for-service/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/run-precommit-for-service/action.yml b/.github/actions/run-precommit-for-service/action.yml index a79c1da..4780da4 100644 --- a/.github/actions/run-precommit-for-service/action.yml +++ b/.github/actions/run-precommit-for-service/action.yml @@ -17,6 +17,7 @@ runs: steps: - name: Verify Docker engine run: docker version + shell: bash - name: Ensure SSH agent mount path exists run: | From 63b86566eae52fcb710b57b1d85ddad624c83c8b Mon Sep 17 00:00:00 2001 From: WiktorProsowicz Date: Sat, 10 Jan 2026 13:00:38 +0100 Subject: [PATCH 22/22] Up --- .github/actions/run-precommit-for-service/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/run-precommit-for-service/action.yml b/.github/actions/run-precommit-for-service/action.yml index 4780da4..d47e76c 100644 --- a/.github/actions/run-precommit-for-service/action.yml +++ b/.github/actions/run-precommit-for-service/action.yml @@ -31,6 +31,6 @@ runs: with: configFile: ${{ inputs.devcontainer-cfg-path }}/devcontainer.json runCmd: | - bash -lc "cd ${{ inputs.service-workdir }} && \ + cd ${{ inputs.service-workdir }} && \ just setup-environment && \ just run-precommit \ No newline at end of file