fix(infra,ci): mc base image moved to quay.io (docker.io/minio/mc is gone); failure-issue step bootstraps uv
All checks were successful
CI / lint (push) Successful in 47s
CI / notebooks-smoke (push) Successful in 1m33s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / llm (push) Has been skipped
Deploy / mc (push) Successful in 18s
Infra CI / notebooks (push) Successful in 1m12s
Infra CI / zotero (push) Successful in 23s
Infra CI / docs (push) Successful in 1m37s
Infra CI / api (push) Successful in 1m6s
Infra CI / llm (push) Successful in 47s
Infra CI / mc (push) Successful in 14s
Deploy / report (push) Successful in 14s
CI / test (push) Successful in 17m50s
All checks were successful
CI / lint (push) Successful in 47s
CI / notebooks-smoke (push) Successful in 1m33s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / llm (push) Has been skipped
Deploy / mc (push) Successful in 18s
Infra CI / notebooks (push) Successful in 1m12s
Infra CI / zotero (push) Successful in 23s
Infra CI / docs (push) Successful in 1m37s
Infra CI / api (push) Successful in 1m6s
Infra CI / llm (push) Successful in 47s
Infra CI / mc (push) Successful in 14s
Deploy / report (push) Successful in 14s
CI / test (push) Successful in 17m50s
Infra CI's mc job has failed on every push since docker.io/minio/mc
started returning 'pull access denied, repository does not exist' — and
nobody heard, because the generated File-failure-issue step ran
`uv run` in a job that never installs uv ("uv: command not found",
swallowed by the trailing || true). Pin quay.io/minio/mc to a release
tag; the filer installs uv when it is missing.
This commit is contained in:
@@ -66,6 +66,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "CI" --job "test" \
|
||||
@@ -108,6 +113,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "CI" --job "notebooks-smoke" \
|
||||
|
||||
@@ -50,6 +50,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Deploy" --job "notebooks" \
|
||||
@@ -98,6 +103,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Deploy" --job "zotero" \
|
||||
@@ -146,6 +156,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Deploy" --job "docs" \
|
||||
@@ -195,6 +210,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Deploy" --job "api" \
|
||||
@@ -244,6 +264,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Deploy" --job "llm" \
|
||||
@@ -286,6 +311,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Deploy" --job "mc" \
|
||||
|
||||
@@ -117,6 +117,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Harden" --job "build-scan-report" \
|
||||
|
||||
@@ -64,6 +64,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Infra CI" --job "notebooks" \
|
||||
@@ -92,6 +97,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Infra CI" --job "zotero" \
|
||||
@@ -120,6 +130,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Infra CI" --job "docs" \
|
||||
@@ -148,6 +163,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Infra CI" --job "api" \
|
||||
@@ -176,6 +196,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Infra CI" --job "llm" \
|
||||
@@ -204,6 +229,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Infra CI" --job "mc" \
|
||||
|
||||
@@ -54,6 +54,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "LLM Golden" --job "llm-golden" \
|
||||
|
||||
@@ -49,6 +49,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Notebooks Integration" --job "notebooks-integration" \
|
||||
|
||||
@@ -115,6 +115,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Rebuild All" --job "build-scan-report" \
|
||||
|
||||
@@ -34,6 +34,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Release" --job "release" \
|
||||
|
||||
@@ -51,6 +51,11 @@ jobs:
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \
|
||||
--workflow "Zotero Sync" --job "zotero-sync" \
|
||||
|
||||
@@ -109,6 +109,11 @@ def _failure_step(workflow_name: str, job_name: str) -> str:
|
||||
env:
|
||||
GITEA_TOKEN: ${{{{ secrets.DEPLOY_TOKEN }}}}
|
||||
run: |
|
||||
# Jobs that never install uv (image builds, infra checks) still
|
||||
# need it here — otherwise the filer dies with "uv: command not
|
||||
# found" and the failure is never filed.
|
||||
command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --no-dev --quiet 2>/dev/null || true
|
||||
uv run python -m api.diag.ci \\
|
||||
--workflow "{workflow_name}" --job "{job_name}" \\
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
# MinIO Client (mc) sidecar — least-privilege admin helper for RustFS.
|
||||
# The image moved off Docker Hub (docker.io/minio/mc now 404s — pull access
|
||||
# denied) to quay.io; pinned to a release tag so a base-image change is a
|
||||
# reviewed diff, not a silent CI break.
|
||||
# Runs as non-root, read-only filesystem, no capabilities.
|
||||
FROM minio/mc:latest AS mc
|
||||
FROM quay.io/minio/mc:RELEASE.2025-08-13T08-35-41Z AS mc
|
||||
|
||||
FROM alpine:3
|
||||
RUN addgroup -g 10002 -S mc && adduser -u 10002 -S mc -G mc
|
||||
|
||||
Reference in New Issue
Block a user