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_0_17_0_corex_4_4_0。" 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 '_' '-')" echo "IMAGE_NAME=${IMAGE_NAME}" >> "$GITEA_ENV" echo "IMAGE_TAG=${{ gitea.ref_name }}" >> "$GITEA_ENV" - 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,不登录仓库,不推送镜像。" exit 0 fi remote="${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${IMAGE_TAG}" echo "推送目标: ${remote}" echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin docker tag "${IMAGE_NAME}:${IMAGE_TAG}" "$remote" docker push "$remote" echo "推送完成: ${remote}"