From 475c49702cad27a68a1109b415357d848be92b0d Mon Sep 17 00:00:00 2001 From: dongmucat <1127093059@qq.com> Date: Fri, 18 Sep 2026 10:39:55 +0800 Subject: [PATCH] fix(scanner): align deployment health checks and upload limits Signed-off-by: dongmucat <1127093059@qq.com> --- .github/workflows/pr-scanner-image.yml | 37 +++++++++++++++++++ .github/workflows/pr-scripts.yml | 11 ++++++ .../templates/scanner-deployment.yaml | 2 + charts/skillhub/values.schema.json | 3 +- charts/skillhub/values.yaml | 1 + compose.release.yml | 3 +- deploy/k8s/base/configmap.yaml | 1 + deploy/k8s/base/scanner-deployment.yaml | 5 +++ docker-compose.yml | 3 +- 9 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/pr-scanner-image.yml diff --git a/.github/workflows/pr-scanner-image.yml b/.github/workflows/pr-scanner-image.yml new file mode 100644 index 00000000..35cf5b65 --- /dev/null +++ b/.github/workflows/pr-scanner-image.yml @@ -0,0 +1,37 @@ +name: PR Scanner Image + +on: + pull_request: + paths: + - 'scanner/**' + - 'scripts/tests/scanner-2-1-contract-test.sh' + - '.github/workflows/pr-scanner-image.yml' + +permissions: + contents: read + +jobs: + scanner-contract: + name: Scanner contract (${{ matrix.arch }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arch: [amd64, arm64] + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - name: Build scanner image + uses: docker/build-push-action@v6 + with: + context: scanner + platforms: linux/${{ matrix.arch }} + tags: skillhub-scanner-contract:${{ matrix.arch }}-${{ github.sha }} + load: true + - name: Run scanner contract + env: + SCANNER_IMAGE: skillhub-scanner-contract:${{ matrix.arch }}-${{ github.sha }} + run: bash scripts/tests/scanner-2-1-contract-test.sh diff --git a/.github/workflows/pr-scripts.yml b/.github/workflows/pr-scripts.yml index 1ab4a2ee..e8180512 100644 --- a/.github/workflows/pr-scripts.yml +++ b/.github/workflows/pr-scripts.yml @@ -4,9 +4,16 @@ on: pull_request: paths: - 'scripts/**' + - 'scanner/**' + - 'docker-compose.yml' - '.env.release.example' - '.env.release.draft' - 'compose.release.yml' + - 'deploy/k8s/base/configmap.yaml' + - 'deploy/k8s/base/scanner-deployment.yaml' + - 'charts/skillhub/values.yaml' + - 'charts/skillhub/values.schema.json' + - 'charts/skillhub/templates/scanner-deployment.yaml' - 'server/Dockerfile' - 'Makefile' - 'web/Dockerfile' @@ -36,6 +43,10 @@ jobs: - uses: actions/setup-node@v4 with: node-version: '21' + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - run: python -m unittest discover -s scanner/tests -p 'test_*.py' - run: bash scripts/tests/publish-cli-test.sh - run: bash scripts/tests/runtime-secret-test.sh - run: bash scripts/tests/validate-release-config-test.sh diff --git a/charts/skillhub/templates/scanner-deployment.yaml b/charts/skillhub/templates/scanner-deployment.yaml index b511465e..dc15d73d 100644 --- a/charts/skillhub/templates/scanner-deployment.yaml +++ b/charts/skillhub/templates/scanner-deployment.yaml @@ -56,6 +56,8 @@ spec: {{- with .Values.scanner.extraEnv }} {{- toYaml . | nindent 12 }} {{- end }} + - name: SKILLHUB_SCANNER_MAX_UPLOAD_SIZE_BYTES + value: {{ .Values.scanner.maxUploadSizeBytes | quote }} resources: {{- toYaml .Values.scanner.resources | nindent 12 }} readinessProbe: diff --git a/charts/skillhub/values.schema.json b/charts/skillhub/values.schema.json index 1bede63b..942ee7c0 100644 --- a/charts/skillhub/values.schema.json +++ b/charts/skillhub/values.schema.json @@ -462,10 +462,11 @@ { "type": "object", "additionalProperties": false, - "required": ["enabled", "replicaCount", "image", "service", "resources", "extraEnv", "podAnnotations", "imagePullSecrets", "nodeSelector", "tolerations", "affinity", "probes", "autoscaling", "podDisruptionBudget"], + "required": ["enabled", "replicaCount", "maxUploadSizeBytes", "image", "service", "resources", "extraEnv", "podAnnotations", "imagePullSecrets", "nodeSelector", "tolerations", "affinity", "probes", "autoscaling", "podDisruptionBudget"], "properties": { "enabled": { "type": "boolean" }, "replicaCount": { "type": "integer", "minimum": 1 }, + "maxUploadSizeBytes": { "type": "integer", "minimum": 1 }, "image": { "$ref": "#/definitions/image" }, "service": { "type": "object", diff --git a/charts/skillhub/values.yaml b/charts/skillhub/values.yaml index 092e73e4..b69f7c86 100644 --- a/charts/skillhub/values.yaml +++ b/charts/skillhub/values.yaml @@ -433,6 +433,7 @@ web: scanner: enabled: true replicaCount: 1 + maxUploadSizeBytes: 110100480 image: registry: "" tag: "" diff --git a/compose.release.yml b/compose.release.yml index 317226b5..34361aca 100644 --- a/compose.release.yml +++ b/compose.release.yml @@ -8,8 +8,9 @@ services: SKILL_SCANNER_LLM_MODEL: ${SKILL_SCANNER_LLM_MODEL:-} SKILLHUB_SCANNER_MAX_CONCURRENT_SCANS: ${SKILLHUB_SCANNER_MAX_CONCURRENT_SCANS:-1} SKILLHUB_SCANNER_HARD_TIMEOUT_SECONDS: ${SKILLHUB_SCANNER_HARD_TIMEOUT_SECONDS:-930} + SKILLHUB_SCANNER_MAX_UPLOAD_SIZE_BYTES: ${SKILLHUB_SCANNER_MAX_UPLOAD_SIZE_BYTES:-110100480} healthcheck: - test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8000/health"] + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=2).read()"] interval: 10s timeout: 5s retries: 10 diff --git a/deploy/k8s/base/configmap.yaml b/deploy/k8s/base/configmap.yaml index 295da98a..d7daeb32 100644 --- a/deploy/k8s/base/configmap.yaml +++ b/deploy/k8s/base/configmap.yaml @@ -39,6 +39,7 @@ data: skill-scan-reclaim-min-idle: PT16M skill-scanner-max-concurrent-scans: "1" skill-scanner-hard-timeout-seconds: "930" + skill-scanner-max-upload-size-bytes: "110100480" # Bootstrap 管理员配置(非敏感) bootstrap-admin-enabled: "true" diff --git a/deploy/k8s/base/scanner-deployment.yaml b/deploy/k8s/base/scanner-deployment.yaml index 26fb3667..be27bd11 100644 --- a/deploy/k8s/base/scanner-deployment.yaml +++ b/deploy/k8s/base/scanner-deployment.yaml @@ -50,6 +50,11 @@ spec: configMapKeyRef: name: skillhub-config key: skill-scanner-hard-timeout-seconds + - name: SKILLHUB_SCANNER_MAX_UPLOAD_SIZE_BYTES + valueFrom: + configMapKeyRef: + name: skillhub-config + key: skill-scanner-max-upload-size-bytes readinessProbe: httpGet: path: /health diff --git a/docker-compose.yml b/docker-compose.yml index a43078e7..2f0e45df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,8 +7,9 @@ services: SKILL_SCANNER_LLM_API_KEY: ${SKILL_SCANNER_LLM_API_KEY:-} SKILL_SCANNER_LLM_BASE_URL: ${SKILL_SCANNER_LLM_BASE_URL:-} SKILL_SCANNER_LLM_MODEL: ${SKILL_SCANNER_LLM_MODEL:-} + SKILLHUB_SCANNER_MAX_UPLOAD_SIZE_BYTES: ${SKILLHUB_SCANNER_MAX_UPLOAD_SIZE_BYTES:-110100480} healthcheck: - test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8000/health"] + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=2).read()"] interval: 10s timeout: 5s retries: 5