mirror of
https://github.com/huggingface/diffusers.git
synced 2026-10-24 20:59:27 +03:00
* add a dockerfile for diffusers cli hf jobs * up * up * use diffusers from pypi * fix(ci): harden GitHub Actions workflows (#14550) (#14851) fix(ci): harden workflow files flagged on #14550 Co-authored-by: hf-security-analysis[bot] <265538906+hf-security-analysis[bot]@users.noreply.github.com> * Apply batched suggestions from code review Co-authored-by: Dhruv Nair <dhruv.nair@gmail.com> Co-authored-by: Sayak Paul <spsayakpaul@gmail.com> * lower bound for tokenizers. --------- Co-authored-by: hf-security-analysis[bot] <265538906+hf-security-analysis[bot]@users.noreply.github.com> Co-authored-by: Dhruv Nair <dhruv.nair@gmail.com>
136 lines
4.2 KiB
YAML
136 lines
4.2 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
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
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'
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
steps:
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
|
|
|
- name: Check out code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
|
|
- name: Find Changed Dockerfiles
|
|
id: file_changes
|
|
uses: jitterbit/get-changed-files@b17fbb00bdc0c0f63fcf166580804b4d2cdc2a42 # 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
|
|
diffusers-cli-cuda
|
|
)
|
|
|
|
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
|
|
- diffusers-cli-cuda
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
|
with:
|
|
username: ${{ env.REGISTRY }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Build and push
|
|
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
|
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@a88e7fa2eaee28de5a4d6142381b1fb792349b67 # 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 }}
|