Files
Victor Cao 4c271270d4
All checks were successful
Docker Build / docker (push) Successful in 20m36s
fix: FRAMEWORK vllm_bi150_r2r4 + image-verify CI (I8–I12)
2026-10-13 15:15:16 +08:00

129 lines
5.0 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Docker Build
on:
push:
tags:
- "v*"
jobs:
docker:
runs-on: amd64-ubuntu-24.04
steps:
- name: Clone repository
run: |
git clone "${{ gitea.server_url }}/${{ gitea.repository }}.git" .
git checkout "${{ gitea.ref_name }}"
- name: Load task info
run: |
set -a
. .gitea/workflows/task_info.env
set +a
echo "标签: ${{ gitea.ref_name }}"
echo "FRAMEWORK=${FRAMEWORK:-}"
echo "GPU_TYPE=${GPU_TYPE:-}"
echo "TASK_TYPE=${TASK_TYPE:-}"
if [ -z "${FRAMEWORK:-}" ] || [ "${FRAMEWORK}" = "vllm_fix_tokenizer" ]; then
echo "FRAMEWORK 无效。本仓使用 vllm_bi150_r2r4。"
exit 1
fi
if [ "${GPU_TYPE:-}" != "Iluvatar_bi-150" ]; then
echo "GPU_TYPE 与本仓锁定值不一致: ${GPU_TYPE:-空}"
exit 1
fi
IMAGE_NAME="$(echo "${{ gitea.repository }}" | tr '[:upper:]' '[:lower:]' | tr '_' '-')"
IMAGE_TAG="${{ gitea.ref_name }}"
echo "FRAMEWORK=${FRAMEWORK}" >> "$GITEA_ENV"
echo "GPU_TYPE=${GPU_TYPE}" >> "$GITEA_ENV"
echo "TASK_TYPE=${TASK_TYPE:-}" >> "$GITEA_ENV"
echo "IMAGE_NAME=${IMAGE_NAME}" >> "$GITEA_ENV"
echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GITEA_ENV"
if [ -n "${DOCKER_REGISTRY:-}" ] && [ -n "${DOCKER_USERNAME:-}" ]; then
echo "IMAGE=${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${IMAGE_TAG}" >> "$GITEA_ENV"
fi
# FIXED_TOKEN 由 Runner 注入,不写进仓库,也不打印。
- name: Validate Image Verify Metadata
run: |
if [ -z "${FIXED_TOKEN:-}" ]; then
echo "FIXED_TOKEN is not configured on runner"
exit 1
fi
if ! response="$(curl --silent --show-error --location --get \
'https://modelhub.org.cn/adminApi/image-verify/validate' \
--header "Xc-Token: ${FIXED_TOKEN}" \
--data-urlencode "gpuType=${GPU_TYPE:-}" \
--data-urlencode "taskType=${TASK_TYPE:-}")"; then
echo "调用 image-verify validate 失败"
exit 1
fi
VALIDATE_RESPONSE="$response" python3 - <<'PY'
import json
import os
import sys
raw = os.environ.get("VALIDATE_RESPONSE", "")
try:
body = json.loads(raw)
except json.JSONDecodeError:
print("image-verify validate 返回的不是合法 JSON")
print(raw)
sys.exit(1)
if body.get("code") == 0 and body.get("data") is True:
print("image-verify 元数据校验通过")
sys.exit(0)
print(f"image-verify 元数据校验失败: {body.get('message') or '未知错误'}")
print(raw)
sys.exit(1)
PY
- name: Build image
run: |
echo "开始 docker build,标签 ${IMAGE_TAG}"
docker build -t "${IMAGE_NAME}:${IMAGE_TAG}" .
echo "docker build 完成: ${IMAGE_NAME}:${IMAGE_TAG}"
- name: Push when registry credentials exist
run: |
if [ -z "${DOCKER_REGISTRY:-}" ] || [ -z "${DOCKER_USERNAME:-}" ] || [ -z "${DOCKER_PASSWORD:-}" ]; then
echo "未配置 DOCKER_REGISTRY、DOCKER_USERNAME 或 DOCKER_PASSWORD。"
echo "本次为 build-only,不登录仓库,不推送镜像,随后也不注册 image-verify。"
echo "PUSHED=0" >> "$GITEA_ENV"
exit 0
fi
echo "推送目标: ${IMAGE}"
echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin
docker tag "${IMAGE_NAME}:${IMAGE_TAG}" "$IMAGE"
docker push "$IMAGE"
echo "PUSHED=1" >> "$GITEA_ENV"
echo "推送完成: ${IMAGE}"
# 只有真的推成功才注册,build-only 没有可用的 imageUrl。
- name: Notify Image Verify
run: |
if [ "${PUSHED:-0}" != "1" ]; then
echo "镜像未推送,跳过 image-verify 注册。"
exit 0
fi
if [ -z "${FIXED_TOKEN:-}" ]; then
echo "FIXED_TOKEN is not configured on runner"
exit 1
fi
echo "注册 image-verify: ${IMAGE}"
curl --silent --show-error --fail-with-body --location --request POST \
'https://modelhub.org.cn//adminApi/image-verify' \
--header "Xc-Token: ${FIXED_TOKEN}" \
--header 'Content-Type: application/json' \
--data-raw "{
\"framework\": \"${FRAMEWORK}\",
\"gpuType\": \"${GPU_TYPE}\",
\"imageUrl\": \"${IMAGE}\",
\"taskType\": \"${TASK_TYPE}\",
\"createBy\": \"${{ gitea.actor }}\",
\"repoUrl\": \"${{ gitea.server_url }}/${{ gitea.repository }}\",
\"tag\": \"${{ gitea.ref_name }}\"
}"
echo "image-verify 注册请求已完成。适配下拉是否出现本引擎由人核对。"