|
name: Test, build, and push Docker images |
|
|
|
on: |
|
pull_request: |
|
branches: |
|
- main |
|
paths: |
|
- "docker/**" |
|
workflow_dispatch: |
|
schedule: |
|
- cron: "0 0 * * *" |
|
|
|
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: [ self-hosted, intel-cpu, 8-cpu, ci ] |
|
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 |
|
run: | |
|
CHANGED_FILES="${{ steps.file_changes.outputs.all }}" |
|
for FILE in $CHANGED_FILES; do |
|
if [[ "$FILE" == docker/*Dockerfile ]]; then |
|
DOCKER_PATH="${FILE%/Dockerfile}" |
|
DOCKER_TAG=$(basename "$DOCKER_PATH") |
|
echo "Building Docker image for $DOCKER_TAG" |
|
docker build -t "$DOCKER_TAG" "$DOCKER_PATH" |
|
fi |
|
done |
|
if: steps.file_changes.outputs.all != '' |
|
|
|
build-and-push-docker-images: |
|
runs-on: [ self-hosted, intel-cpu, 8-cpu, ci ] |
|
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-compile-cuda |
|
- diffusers-pytorch-xformers-cuda |
|
- diffusers-flax-cpu |
|
- diffusers-flax-tpu |
|
- diffusers-onnxruntime-cpu |
|
- diffusers-onnxruntime-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: ${{ env.CI_SLACK_CHANNEL }} |
|
title: "🤗 Results of the ${{ matrix.image-name }} Docker Image build" |
|
status: ${{ job.status }} |
|
slack_token: ${{ secrets.SLACK_CIFEEDBACK_BOT_TOKEN }} |