57 lines
2.1 KiB
YAML
57 lines
2.1 KiB
YAML
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}"
|