Skip to content

Support PaddlePaddle with compatible API and tvm-ffi #2

Support PaddlePaddle with compatible API and tvm-ffi

Support PaddlePaddle with compatible API and tvm-ffi #2

name: Release CI Docker
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'docker/**'
- '.github/workflows/release-ci-docker.yml'
- 'requirements.txt'
pull_request:
branches:
- main
paths:
- 'docker/**'
- '.github/workflows/release-ci-docker.yml'
- 'requirements.txt'
jobs:
generate-tag:
runs-on: ubuntu-latest
outputs:
date_sha: ${{ steps.generate_tag.outputs.date_sha }}
steps:
- uses: actions/checkout@v4
- name: Generate version tag
id: generate_tag
run: |
DATE_SHA=$(date +'%Y%m%d')-$(git rev-parse --short HEAD)
echo "date_sha=${DATE_SHA}" >> $GITHUB_OUTPUT
echo "Generated version tag: ${DATE_SHA}"
build:
runs-on: [self-hosted, x86_64]
needs: generate-tag
strategy:
matrix:
cuda: [cu126, cu128, cu129, cu130]
arch: [amd64, arm64]
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: flashinfer
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push ${{ matrix.cuda }} ${{ matrix.arch }} image
uses: docker/build-push-action@v5
with:
context: .
file: docker/Dockerfile.${{ matrix.cuda }}
platforms: linux/${{ matrix.arch }}
push: ${{ github.event_name != 'pull_request' }}
tags: |
flashinfer/flashinfer-ci-${{ matrix.cuda }}:${{ matrix.arch }}-${{ needs.generate-tag.outputs.date_sha }}
cache-from: type=registry,ref=flashinfer/flashinfer-ci-${{ matrix.cuda }}:buildcache-${{ matrix.arch }}
cache-to: ${{ github.event_name != 'pull_request' && format('type=registry,ref=flashinfer/flashinfer-ci-{0}:buildcache-{1},mode=max', matrix.cuda, matrix.arch) || '' }}
provenance: false
sbom: false
create-manifests:
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
needs: [generate-tag, build]
strategy:
matrix:
cuda: [cu126, cu128, cu129, cu130]
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: flashinfer
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create and push multi-arch manifest for ${{ matrix.cuda }}
env:
DATE_SHA: ${{ needs.generate-tag.outputs.date_sha }}
run: |
docker buildx imagetools create \
-t flashinfer/flashinfer-ci-${{ matrix.cuda }}:${DATE_SHA} \
-t flashinfer/flashinfer-ci-${{ matrix.cuda }}:latest \
flashinfer/flashinfer-ci-${{ matrix.cuda }}:amd64-${DATE_SHA} \
flashinfer/flashinfer-ci-${{ matrix.cuda }}:arm64-${DATE_SHA}
update-docker-tags:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [generate-tag, create-manifests]
steps:
- uses: actions/checkout@v4
- name: Update docker-tags.yml
env:
DATE_SHA: ${{ needs.generate-tag.outputs.date_sha }}
run: |
cat > ci/docker-tags.yml << EOF
flashinfer/flashinfer-ci-cu126: ${DATE_SHA}
flashinfer/flashinfer-ci-cu128: ${DATE_SHA}
flashinfer/flashinfer-ci-cu129: ${DATE_SHA}
flashinfer/flashinfer-ci-cu130: ${DATE_SHA}
EOF
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
commit-message: "Update Docker tags to ${{ needs.generate-tag.outputs.date_sha }}"
title: "Update Docker CI tags to ${{ needs.generate-tag.outputs.date_sha }}"
body: |
This PR updates the Docker CI image tags to the latest version: `${{ needs.generate-tag.outputs.date_sha }}`
Updated images:
- flashinfer/flashinfer-ci-cu126:${{ needs.generate-tag.outputs.date_sha }}
- flashinfer/flashinfer-ci-cu128:${{ needs.generate-tag.outputs.date_sha }}
- flashinfer/flashinfer-ci-cu129:${{ needs.generate-tag.outputs.date_sha }}
- flashinfer/flashinfer-ci-cu130:${{ needs.generate-tag.outputs.date_sha }}
Auto-generated by [release-ci-docker workflow](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
branch: update-docker-tags-${{ needs.generate-tag.outputs.date_sha }}
delete-branch: true
labels: |
docker
automated