mirror of
https://github.com/huggingface/diffusers.git
synced 2025-12-06 12:34:13 +08:00
* purge HF_HUB_ENABLE_HF_TRANSFER; promote Xet * purge HF_HUB_ENABLE_HF_TRANSFER; promote Xet x2 * restrict docker build test to the ones we actually use in CI. --------- Co-authored-by: YiYi Xu <yixu310@gmail.com> Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
128 lines
3.7 KiB
YAML
128 lines
3.7 KiB
YAML
name: Test, build, and push Docker images
|
|
|
|
on:
|
|
pull_request: # During PRs, we just check if the changes Dockerfiles can be successfully built
|
|
branches:
|
|
- main
|
|
paths:
|
|
- "docker/**"
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: "0 0 * * *" # every day at midnight
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
REGISTRY: diffusers
|
|
CI_SLACK_CHANNEL: ${{ secrets.CI_DOCKER_CHANNEL }}
|
|
|
|
jobs:
|
|
test-build-docker-images:
|
|
runs-on:
|
|
group: aws-general-8-plus
|
|
if: github.event_name == 'pull_request'
|
|
steps:
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Find Changed Dockerfiles
|
|
id: file_changes
|
|
uses: jitterbit/get-changed-files@v1
|
|
with:
|
|
format: "space-delimited"
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build Changed Docker Images
|
|
env:
|
|
CHANGED_FILES: ${{ steps.file_changes.outputs.all }}
|
|
run: |
|
|
echo "$CHANGED_FILES"
|
|
ALLOWED_IMAGES=(
|
|
diffusers-pytorch-cpu
|
|
diffusers-pytorch-cuda
|
|
diffusers-pytorch-xformers-cuda
|
|
diffusers-pytorch-minimum-cuda
|
|
diffusers-doc-builder
|
|
)
|
|
|
|
declare -A IMAGES_TO_BUILD=()
|
|
|
|
for FILE in $CHANGED_FILES; do
|
|
# skip anything that isn't still on disk
|
|
if [[ ! -e "$FILE" ]]; then
|
|
echo "Skipping removed file $FILE"
|
|
continue
|
|
fi
|
|
|
|
for IMAGE in "${ALLOWED_IMAGES[@]}"; do
|
|
if [[ "$FILE" == docker/${IMAGE}/* ]]; then
|
|
IMAGES_TO_BUILD["$IMAGE"]=1
|
|
fi
|
|
done
|
|
done
|
|
|
|
if [[ ${#IMAGES_TO_BUILD[@]} -eq 0 ]]; then
|
|
echo "No relevant Docker changes detected."
|
|
exit 0
|
|
fi
|
|
|
|
for IMAGE in "${!IMAGES_TO_BUILD[@]}"; do
|
|
DOCKER_PATH="docker/${IMAGE}"
|
|
echo "Building Docker image for $IMAGE"
|
|
docker build -t "$IMAGE" "$DOCKER_PATH"
|
|
done
|
|
if: steps.file_changes.outputs.all != ''
|
|
|
|
build-and-push-docker-images:
|
|
runs-on:
|
|
group: aws-general-8-plus
|
|
if: github.event_name != 'pull_request'
|
|
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
image-name:
|
|
- diffusers-pytorch-cpu
|
|
- diffusers-pytorch-cuda
|
|
- diffusers-pytorch-xformers-cuda
|
|
- diffusers-pytorch-minimum-cuda
|
|
- diffusers-doc-builder
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ env.REGISTRY }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v3
|
|
with:
|
|
no-cache: true
|
|
context: ./docker/${{ matrix.image-name }}
|
|
push: true
|
|
tags: ${{ env.REGISTRY }}/${{ matrix.image-name }}:latest
|
|
|
|
- name: Post to a Slack channel
|
|
id: slack
|
|
uses: huggingface/hf-workflows/.github/actions/post-slack@main
|
|
with:
|
|
# Slack channel id, channel name, or user id to post message.
|
|
# See also: https://api.slack.com/methods/chat.postMessage#channels
|
|
slack_channel: ${{ env.CI_SLACK_CHANNEL }}
|
|
title: "🤗 Results of the ${{ matrix.image-name }} Docker Image build"
|
|
status: ${{ job.status }}
|
|
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }}
|