Merge branch 'superm1/linux-artifacts' #41
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: CI | ||
| on: | ||
| workflow_dispatch: # allows manual triggering | ||
| inputs: | ||
| create_release: | ||
| description: "Create new release" | ||
| required: true | ||
| type: boolean | ||
| push: | ||
| branches: | ||
| - master | ||
| - ci | ||
| paths: | ||
| [ | ||
| ".github/workflows/**", | ||
| "**/CMakeLists.txt", | ||
| "**/Makefile", | ||
| "**/*.h", | ||
| "**/*.hpp", | ||
| "**/*.c", | ||
| "**/*.cpp", | ||
| "**/*.cu", | ||
| ] | ||
| pull_request: | ||
| types: [opened, synchronize, reopened] | ||
| paths: | ||
| [ | ||
| "**/CMakeLists.txt", | ||
| "**/Makefile", | ||
| "**/*.h", | ||
| "**/*.hpp", | ||
| "**/*.c", | ||
| "**/*.cpp", | ||
| "**/*.cu", | ||
| ] | ||
| env: | ||
| BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | ||
| cancel-in-progress: true | ||
| jobs: | ||
| windows-latest-rocm: | ||
| runs-on: windows-2022 | ||
| env: | ||
| ROCM_VERSION: "7.11.0" | ||
| GPU_TARGETS: "gfx906;gfx908;gfx90a;gfx942;gfx950;gfx1100;gfx1101;gfx1102;gfx1150;gfx1151;gfx1200;gfx1201" | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| with: | ||
| submodules: recursive | ||
| - name: Cache ROCm Installation | ||
| id: cache-rocm | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: C:\TheRock\build | ||
| key: rocm-${{ env.ROCM_VERSION }}-gfx1151-${{ runner.os }} | ||
| - name: ccache | ||
| uses: ggml-org/ccache-action@v1.2.16 | ||
| with: | ||
| key: windows-latest-rocm-${{ env.ROCM_VERSION }}-x64 | ||
| evict-old-files: 1d | ||
| - name: Install ROCm | ||
| if: steps.cache-rocm.outputs.cache-hit != 'true' | ||
| run: | | ||
| $ErrorActionPreference = "Stop" | ||
| write-host "Downloading AMD ROCm ${{ env.ROCM_VERSION }} tarball" | ||
| Invoke-WebRequest -Uri "https://repo.amd.com/rocm/tarball/therock-dist-windows-gfx1151-${{ env.ROCM_VERSION }}.tar.gz" -OutFile "${env:RUNNER_TEMP}\rocm.tar.gz" | ||
| write-host "Extracting ROCm tarball" | ||
| mkdir C:\TheRock\build -Force | ||
| tar -xzf "${env:RUNNER_TEMP}\rocm.tar.gz" -C C:\TheRock\build --strip-components=1 | ||
| write-host "Completed ROCm extraction" | ||
| - name: Setup ROCm Environment | ||
| run: | | ||
| $rocmPath = "C:\TheRock\build" | ||
| echo "HIP_PATH=$rocmPath" >> $env:GITHUB_ENV | ||
| echo "HIP_DEVICE_LIB_PATH=$rocmPath\lib\llvm\amdgcn\bitcode" >> $env:GITHUB_ENV | ||
| echo "HIP_PLATFORM=amd" >> $env:GITHUB_ENV | ||
| echo "LLVM_PATH=$rocmPath\lib\llvm" >> $env:GITHUB_ENV | ||
| echo "$rocmPath\bin" >> $env:GITHUB_PATH | ||
| echo "$rocmPath\lib\llvm\bin" >> $env:GITHUB_PATH | ||
| - name: Build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. ` | ||
| -G "Unix Makefiles" ` | ||
| -DCMAKE_PREFIX_PATH="${env:HIP_PATH}" ` | ||
| -DSD_HIPBLAS=ON ` | ||
| -DSD_BUILD_SHARED_LIBS=ON ` | ||
| -DGGML_NATIVE=OFF ` | ||
| -DCMAKE_C_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang.exe" ` | ||
| -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang++.exe" ` | ||
| -DCMAKE_HIP_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang.exe" ` | ||
| -DHIP_PATH="${env:HIP_PATH}" ` | ||
| -DCMAKE_BUILD_TYPE=Release ` | ||
| -DGPU_TARGETS="${{ env.GPU_TARGETS }}" | ||
| cmake --build . --config Release --parallel ${env:NUMBER_OF_PROCESSORS} | ||
| - name: Get commit hash | ||
| id: commit | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: pr-mpt/actions-commit-hash@v2 | ||
| - name: Pack artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| run: | | ||
| cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\libhipblaslt.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\" | ||
| 7z a sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip .\build\bin\* | ||
| - name: Upload artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip | ||
| path: | | ||
| sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip | ||
| windows-latest-rocm: | ||
| runs-on: windows-2022 | ||
| env: | ||
| ROCM_VERSION: "7.11.0" | ||
| GPU_TARGETS: "gfx906;gfx908;gfx90a;gfx942;gfx950;gfx1100;gfx1101;gfx1102;gfx1150;gfx1151;gfx1200;gfx1201" | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| with: | ||
| submodules: recursive | ||
| - name: Cache ROCm Installation | ||
| id: cache-rocm | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: C:\TheRock\build | ||
| key: rocm-${{ env.ROCM_VERSION }}-gfx1151-${{ runner.os }} | ||
| - name: ccache | ||
| uses: ggml-org/ccache-action@v1.2.16 | ||
| with: | ||
| key: windows-latest-rocm-${{ env.ROCM_VERSION }}-x64 | ||
| evict-old-files: 1d | ||
| - name: Install ROCm | ||
| if: steps.cache-rocm.outputs.cache-hit != 'true' | ||
| run: | | ||
| $ErrorActionPreference = "Stop" | ||
| write-host "Downloading AMD ROCm ${{ env.ROCM_VERSION }} tarball" | ||
| Invoke-WebRequest -Uri "https://repo.amd.com/rocm/tarball/therock-dist-windows-gfx1151-${{ env.ROCM_VERSION }}.tar.gz" -OutFile "${env:RUNNER_TEMP}\rocm.tar.gz" | ||
| write-host "Extracting ROCm tarball" | ||
| mkdir C:\TheRock\build -Force | ||
| tar -xzf "${env:RUNNER_TEMP}\rocm.tar.gz" -C C:\TheRock\build --strip-components=1 | ||
| write-host "Completed ROCm extraction" | ||
| - name: Setup ROCm Environment | ||
| run: | | ||
| $rocmPath = "C:\TheRock\build" | ||
| echo "HIP_PATH=$rocmPath" >> $env:GITHUB_ENV | ||
| echo "HIP_DEVICE_LIB_PATH=$rocmPath\lib\llvm\amdgcn\bitcode" >> $env:GITHUB_ENV | ||
| echo "HIP_PLATFORM=amd" >> $env:GITHUB_ENV | ||
| echo "LLVM_PATH=$rocmPath\lib\llvm" >> $env:GITHUB_ENV | ||
| echo "$rocmPath\bin" >> $env:GITHUB_PATH | ||
| echo "$rocmPath\lib\llvm\bin" >> $env:GITHUB_PATH | ||
| - name: Build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. ` | ||
| -G "Unix Makefiles" ` | ||
| -DCMAKE_PREFIX_PATH="${env:HIP_PATH}" ` | ||
| -DSD_HIPBLAS=ON ` | ||
| -DSD_BUILD_SHARED_LIBS=ON ` | ||
| -DGGML_NATIVE=OFF ` | ||
| -DCMAKE_C_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang.exe" ` | ||
| -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang++.exe" ` | ||
| -DCMAKE_HIP_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang.exe" ` | ||
| -DHIP_PATH="${env:HIP_PATH}" ` | ||
| -DCMAKE_BUILD_TYPE=Release ` | ||
| -DGPU_TARGETS="${{ env.GPU_TARGETS }}" | ||
| cmake --build . --config Release --parallel ${env:NUMBER_OF_PROCESSORS} | ||
| - name: Get commit hash | ||
| id: commit | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: pr-mpt/actions-commit-hash@v2 | ||
| - name: Pack artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| run: | | ||
| cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\libhipblaslt.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\" | ||
| 7z a sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip .\build\bin\* | ||
| - name: Upload artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip | ||
| path: | | ||
| sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip | ||
| windows-latest-cmake-hip: | ||
| runs-on: windows-2022 | ||
| env: | ||
| HIPSDK_INSTALLER_VERSION: "26.Q1" | ||
| ROCM_VERSION: "7.1.1" | ||
| GPU_TARGETS: "gfx1150;gfx1151;gfx1200;gfx1201;gfx1100;gfx1101;gfx1102;gfx1030;gfx1031;gfx1032" | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| with: | ||
| submodules: recursive | ||
| - name: Cache ROCm Installation | ||
| id: cache-rocm | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: C:\Program Files\AMD\ROCm | ||
| key: rocm-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ runner.os }} | ||
| - name: ccache | ||
| uses: ggml-org/ccache-action@v1.2.16 | ||
| with: | ||
| key: windows-latest-cmake-hip-${{ env.HIPSDK_INSTALLER_VERSION }}-x64 | ||
| evict-old-files: 1d | ||
| - name: Install ROCm | ||
| if: steps.cache-rocm.outputs.cache-hit != 'true' | ||
| run: | | ||
| $ErrorActionPreference = "Stop" | ||
| write-host "Downloading AMD HIP SDK Installer" | ||
| Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-${{ env.HIPSDK_INSTALLER_VERSION }}-Win11-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe" | ||
| write-host "Installing AMD HIP SDK" | ||
| $proc = Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -PassThru | ||
| $completed = $proc.WaitForExit(600000) | ||
| if (-not $completed) { | ||
| Write-Error "ROCm installation timed out after 10 minutes. Killing the process" | ||
| $proc.Kill() | ||
| exit 1 | ||
| } | ||
| if ($proc.ExitCode -ne 0) { | ||
| Write-Error "ROCm installation failed with exit code $($proc.ExitCode)" | ||
| exit 1 | ||
| } | ||
| write-host "Completed AMD HIP SDK installation" | ||
| - name: Verify ROCm | ||
| run: | | ||
| # Find and test ROCm installation | ||
| $clangPath = Get-ChildItem 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | Select-Object -First 1 | ||
| if (-not $clangPath) { | ||
| Write-Error "ROCm installation not found" | ||
| exit 1 | ||
| } | ||
| & $clangPath.FullName --version | ||
| # Set HIP_PATH environment variable for later steps | ||
| echo "HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)" >> $env:GITHUB_ENV | ||
| - name: Build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}" | ||
| cmake .. ` | ||
| -G "Unix Makefiles" ` | ||
| -DSD_HIPBLAS=ON ` | ||
| -DSD_BUILD_SHARED_LIBS=ON ` | ||
| -DGGML_NATIVE=OFF ` | ||
| -DCMAKE_C_COMPILER=clang ` | ||
| -DCMAKE_CXX_COMPILER=clang++ ` | ||
| -DCMAKE_BUILD_TYPE=Release ` | ||
| -DGPU_TARGETS="${{ env.GPU_TARGETS }}" | ||
| cmake --build . --config Release --parallel ${env:NUMBER_OF_PROCESSORS} | ||
| - name: Get commit hash | ||
| id: commit | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: pr-mpt/actions-commit-hash@v2 | ||
| - name: Pack artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| run: | | ||
| md "build\bin\rocblas\library\" | ||
| md "build\bin\hipblaslt\library" | ||
| cp "${env:HIP_PATH}\bin\libhipblas.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\libhipblaslt.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\" | ||
| cp "${env:HIP_PATH}\bin\rocblas\library\*" "build\bin\rocblas\library\" | ||
| cp "${env:HIP_PATH}\bin\hipblaslt\library\*" "build\bin\hipblaslt\library\" | ||
| 7z a sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip .\build\bin\* | ||
| - name: Upload artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip | ||
| path: | | ||
| sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-rocm-${{ env.ROCM_VERSION }}-x64.zip | ||
| ubuntu-latest-rocm: | ||
| runs-on: ubuntu-24.04 | ||
| env: | ||
| UBUNTU_VERSION: "24.04" | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - ROCM_VERSION: "7.2" | ||
| gpu_targets: "gfx908;gfx90a;gfx942;gfx1030;gfx1031;gfx1032;gfx1100;gfx1101;gfx1102;gfx1151;gfx1150;gfx1200;gfx1201" | ||
| build: 'x64' | ||
| - ROCM_VERSION: "7.11.0" | ||
| gpu_targets: "gfx906;gfx908;gfx90a;gfx942;gfx950;gfx1100;gfx1101;gfx1102;gfx1150;gfx1151;gfx1200;gfx1201" | ||
| build: x64 | ||
| steps: | ||
| - name: Clone | ||
| id: checkout | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| submodules: recursive | ||
| - name: ccache | ||
| uses: ggml-org/ccache-action@v1.2.16 | ||
| with: | ||
| key: ubuntu-rocm-cmake-${{ matrix.ROCM_VERSION }}-${{ matrix.build }} | ||
| evict-old-files: 1d | ||
| - name: Dependencies | ||
| id: depends | ||
| run: | | ||
| sudo apt install -y build-essential cmake wget zip ninja-build | ||
| - name: Setup Legacy ROCm | ||
| if: matrix.ROCM_VERSION == '7.2' | ||
| id: legacy_env | ||
| run: | | ||
| sudo mkdir --parents --mode=0755 /etc/apt/keyrings | ||
| wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \ | ||
| gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null | ||
| sudo tee /etc/apt/sources.list.d/rocm.list << EOF | ||
| deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${{ matrix.ROCM_VERSION }} noble main | ||
| EOF | ||
| sudo tee /etc/apt/preferences.d/rocm-pin-600 << EOF | ||
| Package: * | ||
| Pin: release o=repo.radeon.com | ||
| Pin-Priority: 600 | ||
| EOF | ||
| sudo apt update | ||
| sudo apt-get install -y libssl-dev rocm-hip-sdk | ||
| - name: Setup TheRock | ||
| if: matrix.ROCM_VERSION != '7.2' | ||
| id: therock_env | ||
| run: | | ||
| wget https://repo.amd.com/rocm/tarball/therock-dist-linux-gfx1151-${{ matrix.ROCM_VERSION }}.tar.gz | ||
| mkdir install | ||
| tar -xf *.tar.gz -C install | ||
| export ROCM_PATH=$(pwd)/install | ||
| echo ROCM_PATH=$ROCM_PATH >> $GITHUB_ENV | ||
| echo PATH=$PATH:$ROCM_PATH/bin >> $GITHUB_ENV | ||
| echo LD_LIBRARY_PATH=$ROCM_PATH/lib:$ROCM_PATH/llvm/lib:$ROCM_PATH/lib/rocprofiler-systems >> $GITHUB_ENV | ||
| - name: Build | ||
| id: cmake_build | ||
| run: | | ||
| mkdir build | ||
| cd build | ||
| cmake .. -G Ninja \ | ||
| -DCMAKE_HIP_COMPILER="$(hipconfig -l)/clang" \ | ||
| -DCMAKE_HIP_FLAGS="-mllvm --amdgpu-unroll-threshold-local=600" \ | ||
| -DCMAKE_BUILD_TYPE=Release \ | ||
| -DSD_HIPBLAS=ON \ | ||
| -DHIP_PLATFORM=amd \ | ||
| -DGPU_TARGETS="${{ matrix.gpu_targets }}" \ | ||
| -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ | ||
| -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | ||
| -DSD_BUILD_SHARED_LIBS=ON | ||
| cmake --build . --config Release | ||
| - name: Get commit hash | ||
| id: commit | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: pr-mpt/actions-commit-hash@v2 | ||
| - name: Prepare artifacts | ||
| id: prepare_artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| run: | | ||
| # Copy licenses | ||
| cp ggml/LICENSE ./build/bin/ggml.txt | ||
| cp LICENSE ./build/bin/stable-diffusion.cpp.txt | ||
| - name: Fetch system info | ||
| id: system-info | ||
| run: | | ||
| echo "CPU_ARCH=`uname -m`" >> "$GITHUB_OUTPUT" | ||
| echo "OS_NAME=`lsb_release -s -i`" >> "$GITHUB_OUTPUT" | ||
| echo "OS_VERSION=`lsb_release -s -r`" >> "$GITHUB_OUTPUT" | ||
| echo "OS_TYPE=`uname -s`" >> "$GITHUB_OUTPUT" | ||
| - name: Pack artifacts | ||
| id: pack_artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| run: | | ||
| cp ggml/LICENSE ./build/bin/ggml.txt | ||
| cp LICENSE ./build/bin/stable-diffusion.cpp.txt | ||
| zip -y -r sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm-${{ matrix.ROCM_VERSION }}.zip ./build/bin | ||
| - name: Upload artifacts | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm-${{ matrix.ROCM_VERSION }}.zip | ||
| path: | | ||
| sd-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-${{ steps.system-info.outputs.OS_TYPE }}-Ubuntu-${{ env.UBUNTU_VERSION }}-${{ steps.system-info.outputs.CPU_ARCH }}-rocm-${{ matrix.ROCM_VERSION }}.zip | ||
| release: | ||
| if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||
| runs-on: ubuntu-latest | ||
| needs: | ||
| - ubuntu-latest-rocm | ||
| - windows-latest-cmake-hip | ||
| - windows-latest-rocm | ||
| steps: | ||
| - name: Clone | ||
| uses: actions/checkout@v3 | ||
| with: | ||
| fetch-depth: 0 | ||
| - name: Download artifacts | ||
| id: download-artifact | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| path: ./artifact | ||
| pattern: sd-* | ||
| merge-multiple: true | ||
| - name: Get commit count | ||
| id: commit_count | ||
| run: | | ||
| echo "count=$(git rev-list --count HEAD)" >> $GITHUB_OUTPUT | ||
| - name: Get commit hash | ||
| id: commit | ||
| uses: pr-mpt/actions-commit-hash@v2 | ||
| - name: Create release | ||
| id: create_release | ||
| if: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'master' }} | ||
| uses: anzz1/action-create-release@v1 | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| with: | ||
| tag_name: ${{ format('{0}-{1}-{2}', env.BRANCH_NAME, steps.commit_count.outputs.count, steps.commit.outputs.short) }} | ||
| - name: Upload release | ||
| id: upload_release | ||
| if: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'master' }} | ||
| uses: actions/github-script@v3 | ||
| with: | ||
| github-token: ${{secrets.GITHUB_TOKEN}} | ||
| script: | | ||
| const path = require('path'); | ||
| const fs = require('fs'); | ||
| const release_id = '${{ steps.create_release.outputs.id }}'; | ||
| for (let file of await fs.readdirSync('./artifact')) { | ||
| if (path.extname(file) === '.zip') { | ||
| console.log('uploadReleaseAsset', file); | ||
| await github.repos.uploadReleaseAsset({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| release_id: release_id, | ||
| name: file, | ||
| data: await fs.readFileSync(`./artifact/${file}`) | ||
| }); | ||
| } | ||
| } | ||