mirror of
https://github.com/BillyOutlast/rocm-automated.git
synced 2026-02-04 03:51:19 +01:00
218 lines
8.0 KiB
YAML
218 lines
8.0 KiB
YAML
name: Daily ROCm Container Build
|
|
|
|
on:
|
|
schedule:
|
|
# Run daily at 02:00 UTC
|
|
- cron: '0 2 * * *'
|
|
workflow_dispatch: # Allow manual triggering
|
|
inputs:
|
|
push_images:
|
|
description: 'Push images to registry'
|
|
required: true
|
|
default: 'true'
|
|
type: boolean
|
|
build_all:
|
|
description: 'Build all variants'
|
|
required: true
|
|
default: 'true'
|
|
type: boolean
|
|
|
|
env:
|
|
REGISTRY: docker.io
|
|
REGISTRY_USER: getterup
|
|
|
|
jobs:
|
|
prepare:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
date: ${{ steps.date.outputs.date }}
|
|
sha_short: ${{ steps.vars.outputs.sha_short }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Get current date
|
|
id: date
|
|
run: |
|
|
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
- name: Set variables
|
|
id: vars
|
|
run: |
|
|
echo "sha_short=$(echo ${GITHUB_SHA} | cut -c1-7)" >> $GITHUB_OUTPUT
|
|
shell: bash
|
|
|
|
build-base-images:
|
|
runs-on: ubuntu-latest
|
|
needs: prepare
|
|
strategy:
|
|
matrix:
|
|
image:
|
|
- name: comfyui-rocm7.1
|
|
dockerfile: Dockerfile.comfyui-rocm7.1
|
|
context: .
|
|
- name: stable-diffusion.cpp-rocm7.1
|
|
dockerfile: Dockerfile.stable-diffusion.cpp-rocm7.1
|
|
context: .
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: https://gitea.com/actions/setup-docker@v1
|
|
with:
|
|
buildx: true
|
|
|
|
- name: Log in to Docker Hub
|
|
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_images == 'true')
|
|
run: |
|
|
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u ${{ env.REGISTRY_USER }} --password-stdin
|
|
shell: bash
|
|
|
|
- name: Build and push Docker image
|
|
run: |
|
|
IMAGE_NAME="${{ env.REGISTRY }}/${{ env.REGISTRY_USER }}/${{ matrix.image.name }}"
|
|
TAGS="${IMAGE_NAME}:latest ${IMAGE_NAME}:${{ needs.prepare.outputs.date }} ${IMAGE_NAME}:${{ needs.prepare.outputs.sha_short }}"
|
|
|
|
# Build the image
|
|
docker buildx build \
|
|
--context ${{ matrix.image.context }} \
|
|
--file Dockerfiles/${{ matrix.image.dockerfile }} \
|
|
--platform linux/amd64 \
|
|
--build-arg BUILD_DATE=${{ needs.prepare.outputs.date }} \
|
|
--build-arg VCS_REF=${{ needs.prepare.outputs.sha_short }} \
|
|
$(for tag in $TAGS; do echo "--tag $tag"; done) \
|
|
${{ (github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_images == 'true')) && '--push' || '--load' }} \
|
|
.
|
|
shell: bash
|
|
|
|
build-stable-diffusion-variants:
|
|
runs-on: ubuntu-latest
|
|
needs: prepare
|
|
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.build_all == 'true')
|
|
strategy:
|
|
matrix:
|
|
gfx_arch:
|
|
- gfx1150 # RDNA 3.5 (Ryzen AI 9 HX 370)
|
|
- gfx1151 # RDNA 3.5 (Strix Point/Ryzen AI Max+ 365)
|
|
- gfx1200 # RDNA 4 (RX 9070 XT)
|
|
- gfx1100 # RDNA 3 (RX 7900 XTX/XT)
|
|
- gfx1101 # RDNA 3 (RX 7800 XT/7700 XT)
|
|
- gfx1030 # RDNA 2 (RX 6000 series)
|
|
- gfx1201 # RDNA 4 (RX 9060 XT/ RX 9070/XT)
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: https://gitea.com/actions/setup-docker@v1
|
|
with:
|
|
buildx: true
|
|
|
|
- name: Log in to Docker Hub
|
|
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_images == 'true')
|
|
run: |
|
|
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u ${{ env.REGISTRY_USER }} --password-stdin
|
|
shell: bash
|
|
|
|
- name: Build and push GPU variant image
|
|
run: |
|
|
IMAGE_NAME="${{ env.REGISTRY }}/${{ env.REGISTRY_USER }}/stable-diffusion-cpp-${{ matrix.gfx_arch }}"
|
|
TAGS="${IMAGE_NAME}:latest ${IMAGE_NAME}:${{ needs.prepare.outputs.date }} ${IMAGE_NAME}:${{ needs.prepare.outputs.sha_short }}"
|
|
|
|
# Build the GPU-specific image
|
|
docker buildx build \
|
|
--context . \
|
|
--file Dockerfiles/Dockerfile.stable-diffusion.cpp-rocm7.1 \
|
|
--platform linux/amd64 \
|
|
--build-arg GFX_ARCH=${{ matrix.gfx_arch }} \
|
|
--build-arg BUILD_DATE=${{ needs.prepare.outputs.date }} \
|
|
--build-arg VCS_REF=${{ needs.prepare.outputs.sha_short }} \
|
|
$(for tag in $TAGS; do echo "--tag $tag"; done) \
|
|
${{ (github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_images == 'true')) && '--push' || '--load' }} \
|
|
.
|
|
shell: bash
|
|
|
|
test-compose:
|
|
runs-on: ubuntu-latest
|
|
needs: [prepare, build-base-images]
|
|
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Create test directories
|
|
run: |
|
|
mkdir -p User-Directories/open-webui
|
|
mkdir -p User-Directories/ollama
|
|
mkdir -p User-Directories/comfyui
|
|
shell: bash
|
|
|
|
- name: Test docker-compose configuration
|
|
run: |
|
|
# Install docker-compose if not available
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
|
sudo chmod +x /usr/local/bin/docker-compose
|
|
fi
|
|
|
|
# Validate compose file
|
|
docker-compose config --quiet
|
|
echo "✅ Docker Compose configuration is valid"
|
|
shell: bash
|
|
|
|
- name: Test image availability
|
|
run: |
|
|
echo "📋 Testing image availability..."
|
|
# Check if images exist (without pulling)
|
|
docker manifest inspect ${{ env.REGISTRY }}/${{ env.REGISTRY_USER }}/comfyui-rocm7.1:latest >/dev/null 2>&1 || echo "⚠️ ComfyUI image may not be available yet"
|
|
docker manifest inspect ${{ env.REGISTRY }}/${{ env.REGISTRY_USER }}/stable-diffusion.cpp-rocm7.1:latest >/dev/null 2>&1 || echo "⚠️ Stable Diffusion image may not be available yet"
|
|
echo "✅ Image availability check completed"
|
|
shell: bash
|
|
|
|
notify:
|
|
runs-on: ubuntu-latest
|
|
needs: [prepare, build-base-images, build-stable-diffusion-variants, test-compose]
|
|
if: always() && (github.event_name == 'schedule')
|
|
|
|
steps:
|
|
- name: Build summary
|
|
run: |
|
|
echo "📊 Daily Build Summary - ${{ needs.prepare.outputs.date }}"
|
|
echo "=================================="
|
|
echo ""
|
|
echo "🔧 Job Results:"
|
|
echo "- Prepare: ${{ needs.prepare.result }}"
|
|
echo "- Base Images: ${{ needs.build-base-images.result }}"
|
|
echo "- GPU Variants: ${{ needs.build-stable-diffusion-variants.result }}"
|
|
echo "- Compose Test: ${{ needs.test-compose.result }}"
|
|
echo ""
|
|
|
|
if [[ "${{ needs.build-base-images.result }}" == "success" && "${{ needs.build-stable-diffusion-variants.result }}" == "success" ]]; then
|
|
echo "✅ All builds completed successfully!"
|
|
echo "🐳 Images pushed to ${{ env.REGISTRY }}/${{ env.REGISTRY_USER }}/"
|
|
echo "📋 Docker Compose configuration validated"
|
|
else
|
|
echo "❌ Some builds failed - please check the logs"
|
|
exit 1
|
|
fi
|
|
shell: bash
|
|
|
|
cleanup:
|
|
runs-on: ubuntu-latest
|
|
needs: [build-base-images, build-stable-diffusion-variants]
|
|
if: always()
|
|
|
|
steps:
|
|
- name: Clean up Docker resources
|
|
run: |
|
|
echo "🧹 Cleaning up Docker resources..."
|
|
docker system prune -f --volumes || true
|
|
docker builder prune -f || true
|
|
echo "✅ Cleanup completed"
|
|
shell: bash |