71 lines
2.1 KiB
Bash
Executable File
71 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# flash_attn 휠을 Gitea 컨테이너 레지스트리에 push하는 스크립트
|
|
#
|
|
# 사용법:
|
|
# # 현재 빌드된 comfyui 이미지에서 휠 추출하는 경우:
|
|
# ./push-to-gitea.sh --from-image localhost/comfyui:latest
|
|
#
|
|
# # 직접 flash-attn Containerfile로 빌드하는 경우:
|
|
# ./push-to-gitea.sh --build
|
|
|
|
set -e
|
|
|
|
REGISTRY="10.89.0.8:3000"
|
|
REPO="gm/flash-attn-builder"
|
|
TAG="cu128-torch211"
|
|
FULL_IMAGE="${REGISTRY}/${REPO}:${TAG}"
|
|
GITEA_USER="gm"
|
|
GITEA_TOKEN="1f8061173dca537f12d3ac54b38fa8e5bf68493f"
|
|
|
|
case "$1" in
|
|
--from-image)
|
|
# 기존 이미지에서 builder 레이어 참조해 휠 추출
|
|
SOURCE_IMAGE="${2:-localhost/comfyui:latest}"
|
|
echo "==> $SOURCE_IMAGE 에서 flash_attn 휠 추출..."
|
|
|
|
# 빌드된 이미지에서 builder 중간 레이어 검색
|
|
# (multi-stage 빌드 결과 이미지엔 wheels가 없으므로 builder 이미지 활용)
|
|
echo "==> flash-attn-builder 이미지 직접 빌드 (캐시 활용)..."
|
|
cd "$(dirname "$0")"
|
|
podman build \
|
|
--tag "localhost/flash-attn-builder-tmp:latest" \
|
|
--target builder \
|
|
--file Containerfile \
|
|
.
|
|
|
|
echo "==> 휠 추출 → 최소 이미지 생성..."
|
|
WHEEL_FILE=$(podman run --rm localhost/flash-attn-builder-tmp:latest ls /wheels/ | grep flash_attn)
|
|
echo " 휠: $WHEEL_FILE"
|
|
|
|
podman build \
|
|
--tag "localhost/flash-attn-builder:${TAG}" \
|
|
--file Containerfile \
|
|
.
|
|
;;
|
|
|
|
--build|*)
|
|
echo "==> flash-attn-builder 이미지 빌드..."
|
|
cd "$(dirname "$0")"
|
|
podman build \
|
|
--tag "localhost/flash-attn-builder:${TAG}" \
|
|
--file Containerfile \
|
|
.
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "==> Gitea 레지스트리 로그인..."
|
|
echo "${GITEA_TOKEN}" | podman login "${REGISTRY}" \
|
|
--username "${GITEA_USER}" \
|
|
--password-stdin
|
|
|
|
echo "==> 이미지 태그 및 push..."
|
|
podman tag "localhost/flash-attn-builder:${TAG}" "${FULL_IMAGE}"
|
|
podman push "${FULL_IMAGE}"
|
|
|
|
echo ""
|
|
echo "완료: ${FULL_IMAGE}"
|
|
echo "ComfyUI Containerfile에서 다음과 같이 사용:"
|
|
echo " FROM ${FULL_IMAGE} AS flash-attn-wheels"
|
|
echo " COPY --from=flash-attn-wheels /wheels/ /wheels/"
|