KTransformers v0.5.1 #23
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: DockerHub CI | |
| on: | |
| release: | |
| types: [published] | |
| workflow_dispatch: | |
| inputs: | |
| push_to_dockerhub: | |
| description: 'Push image to DockerHub? (true/false)' | |
| required: true | |
| default: 'false' | |
| type: boolean | |
| cuda_version: | |
| description: 'CUDA version (e.g., 12.8.1)' | |
| required: false | |
| default: '12.8.1' | |
| type: string | |
| push_simplified_tag: | |
| description: 'Also push simplified tag? (true/false)' | |
| required: false | |
| default: 'true' | |
| type: boolean | |
| ubuntu_mirror: | |
| description: 'Use Tsinghua Ubuntu mirror? (0/1)' | |
| required: false | |
| default: '0' | |
| type: string | |
| # push: | |
| # branches: | |
| # - main | |
| env: | |
| DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_USERNAME }}/ktransformers | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Run tests | |
| run: | | |
| if [ -f docker-compose.test.yml ]; then | |
| docker-compose --file docker-compose.test.yml build | |
| docker-compose --file docker-compose.test.yml run sut | |
| else | |
| docker build . --file docker/Dockerfile | |
| fi | |
| build-and-push: | |
| needs: test | |
| name: Build and Push Multi-Variant Docker Image | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Move Docker data directory | |
| run: | | |
| sudo systemctl stop docker | |
| sudo mkdir -p /mnt/docker | |
| sudo rsync -avz /var/lib/docker/ /mnt/docker | |
| sudo rm -rf /var/lib/docker | |
| sudo ln -s /mnt/docker /var/lib/docker | |
| sudo systemctl start docker | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Determine build parameters | |
| id: params | |
| run: | | |
| # Determine if we should push | |
| if [ "${{ github.event_name }}" = "release" ]; then | |
| echo "should_push=true" >> $GITHUB_OUTPUT | |
| echo "push_simplified=true" >> $GITHUB_OUTPUT | |
| elif [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "should_push=${{ inputs.push_to_dockerhub }}" >> $GITHUB_OUTPUT | |
| echo "push_simplified=${{ inputs.push_simplified_tag }}" >> $GITHUB_OUTPUT | |
| else | |
| echo "should_push=false" >> $GITHUB_OUTPUT | |
| echo "push_simplified=false" >> $GITHUB_OUTPUT | |
| fi | |
| # Determine CUDA version | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ inputs.cuda_version }}" ]; then | |
| echo "cuda_version=${{ inputs.cuda_version }}" >> $GITHUB_OUTPUT | |
| else | |
| echo "cuda_version=12.8.1" >> $GITHUB_OUTPUT | |
| fi | |
| # Determine Ubuntu mirror setting | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ inputs.ubuntu_mirror }}" ]; then | |
| echo "ubuntu_mirror=${{ inputs.ubuntu_mirror }}" >> $GITHUB_OUTPUT | |
| else | |
| echo "ubuntu_mirror=0" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Build and push Docker image | |
| run: | | |
| cd docker | |
| # Build command arguments | |
| BUILD_ARGS=( | |
| --cuda-version "${{ steps.params.outputs.cuda_version }}" | |
| --ubuntu-mirror "${{ steps.params.outputs.ubuntu_mirror }}" | |
| --repository "${{ env.DOCKERHUB_REPO }}" | |
| ) | |
| # Add simplified tag option if enabled | |
| if [ "${{ steps.params.outputs.push_simplified }}" = "true" ]; then | |
| BUILD_ARGS+=(--also-push-simplified) | |
| fi | |
| # Add HTTP proxy if available | |
| if [ -n "${{ secrets.HTTP_PROXY }}" ]; then | |
| BUILD_ARGS+=(--http-proxy "${{ secrets.HTTP_PROXY }}") | |
| fi | |
| # Add HTTPS proxy if available | |
| if [ -n "${{ secrets.HTTPS_PROXY }}" ]; then | |
| BUILD_ARGS+=(--https-proxy "${{ secrets.HTTPS_PROXY }}") | |
| fi | |
| # Dry run if not pushing | |
| if [ "${{ steps.params.outputs.should_push }}" != "true" ]; then | |
| BUILD_ARGS+=(--dry-run) | |
| fi | |
| # Execute build script | |
| ./push-to-dockerhub.sh "${BUILD_ARGS[@]}" | |
| - name: Display image information | |
| if: steps.params.outputs.should_push == 'true' | |
| run: | | |
| echo "::notice title=Docker Image::Image pushed successfully to ${{ env.DOCKERHUB_REPO }}" | |
| echo "Pull command: docker pull ${{ env.DOCKERHUB_REPO }}:v\$(VERSION)-cu\$(CUDA_SHORT)" |