|
|
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: |
|
|
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" |
|
|
for FILE in $CHANGED_FILES; do |
|
|
# skip anything that isn't still on disk |
|
|
if [[ ! -f "$FILE" ]]; then |
|
|
echo "Skipping removed file $FILE" |
|
|
continue |
|
|
fi |
|
|
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: |
|
|
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-cuda |
|
|
- diffusers-pytorch-xformers-cuda |
|
|
- diffusers-pytorch-minimum-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 }} |
|
|
|