Linux with Vulkan #20
This file contains 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: Linux with Vulkan, Cuda and Rocm | |
on: | |
workflow_dispatch: | |
inputs: | |
skip-publish: | |
description: 'Skip publish' | |
required: false | |
default: '0' | |
jobs: | |
publish-tauri: | |
permissions: | |
contents: write | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Ubuntu 22.04 | |
- platform: "ubuntu-22.04" | |
args: '--features "vulkan"' | |
pre-build-args: "--vulkan" | |
rust-version: "stable" | |
name: "ubuntu-22.04" | |
# Ubuntu 22.04 cuda | |
# - platform: "ubuntu-22.04" | |
# args: '--features "cuda"' | |
# pre-build-args: "--cuda" | |
# rust-version: "stable" | |
# cuda-version: "12.4.1" | |
# name: "ubuntu-22.04-nvidia-12" | |
# Ubuntu 24.04 cuda | |
# https://github.com/Jimver/cuda-toolkit/issues/365 | |
# - platform: "ubuntu-24.04" | |
# args: '--features "cuda"' | |
# pre-build-args: "--cuda" | |
# rust-version: "stable" | |
# cuda-version: "12.4.1" | |
# name: "ubuntu-24.04-nvidia-12" | |
# Ubuntu 22.04 rocm | |
# - platform: "ubuntu-22.04" | |
# args: '--features "rocm"' | |
# rocm-version: "6.1.2" | |
# pre-build-args: "--rocm" | |
# rust-version: "stable" | |
# name: "ubuntu-24.04-rocm-6.1.2" | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Free Disk Space (Ubuntu) for Rocm | |
if: contains(matrix.args, 'rocm') | |
uses: jlumbroso/free-disk-space@main | |
with: | |
# this might remove tools that are actually needed, | |
# if set to "true" but frees about 6 GB | |
tool-cache: false | |
# all of these default to true, but feel free to set to | |
# "false" if necessary for your workflow | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: true | |
docker-images: true | |
swap-storage: true | |
- name: Prepare Vulkan SDK for Windows | |
run: | | |
C:\msys64\usr\bin\wget.exe https://sdk.lunarg.com/sdk/download/1.3.290.0/windows/VulkanSDK-1.3.290.0-Installer.exe -O vulkan.exe | |
.\vulkan.exe --root C:\vulkan --accept-licenses --default-answer --confirm-command install | |
echo "VULKAN_SDK=C:\vulkan" >> $env:GITHUB_ENV | |
Copy-Item -Path "C:\vulkan\Bin\*.dll" -Destination "." -Recurse | |
if: ${{ contains(matrix.platform, 'windows') && contains(matrix.args, 'vulkan') }} | |
- name: Prepare Vulkan SDK for Ubuntu 24.04 | |
run: | | |
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list http://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list | |
sudo apt update | |
sudo apt install vulkan-sdk -y | |
sudo apt-get install -y mesa-vulkan-drivers | |
if: ${{ contains(matrix.platform, 'ubuntu-24.04') && contains(matrix.args, 'vulkan') }} | |
- name: Prepare Vulkan SDK for Ubuntu 22.04 | |
run: | | |
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.290-jammy.list https://packages.lunarg.com/vulkan/1.3.290/lunarg-vulkan-1.3.290-jammy.list | |
sudo apt update | |
sudo apt install vulkan-sdk -y | |
sudo apt-get install -y mesa-vulkan-drivers | |
if: ${{ contains(matrix.platform, 'ubuntu-22.04') && contains(matrix.args, 'vulkan') }} | |
- name: Install rocm | |
if: contains(matrix.args, 'rocm') | |
run: | | |
wget https://repo.radeon.com/amdgpu-install/${{ matrix.rocm-version }}/ubuntu/jammy/amdgpu-install_6.1.60102-1_all.deb | |
sudo apt install -y ./amdgpu-install_6.1.60102-1_all.deb | |
sudo apt update | |
sudo apt install -y rocm | |
- uses: Jimver/[email protected] | |
if: contains(matrix.args, 'cuda') | |
id: cuda-toolkit | |
with: | |
cuda: ${{ matrix.cuda-version }} | |
method: 'network' | |
- name: setup Bun | |
uses: oven-sh/setup-bun@v1 | |
# - name: Rust cache | |
# uses: swatinem/rust-cache@v2 | |
- name: Install Rust stable | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install frontend dependencies | |
run: bun install | |
working-directory: ./desktop | |
- name: Cache Pre Build | |
id: cache-pre-build | |
uses: actions/cache@v4 | |
with: | |
path: | | |
desktop/src-tauri/openblas | |
desktop/src-tauri/clblast | |
desktop/src-tauri/ffmpeg | |
key: ${{ runner.os }}-pre-build | |
# Run pre build | |
- name: Run pre_build.js | |
run: bun scripts/pre_build.js ${{ matrix.pre-build-args }} | |
- name: Build | |
uses: tauri-apps/tauri-action@v0 | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
INPUT_CUDA_VERSION: ${{ matrix.cuda-version }} | |
INPUT_ROCM_VERSION: ${{ matrix.cuda-version }} | |
with: | |
projectPath: "./desktop" | |
tauriScript: bunx tauri | |
args: ${{ matrix.args }} | |
- name: Rename installer | |
run: | | |
# Rename .deb files | |
for file in target/release/bundle/deb/*.deb; do | |
name=$(basename "$file" .deb) | |
new_name="${name}_${{ matrix.name }}.deb" | |
mv "$file" "target/release/bundle/deb/$new_name" | |
echo "Renamed '$file' to '$new_name'" | |
done | |
# Rename .rpm files | |
for file in target/release/bundle/rpm/*.rpm; do | |
name=$(basename "$file" .rpm) | |
new_name="${name}_${{ matrix.name }}.rpm" | |
mv "$file" "target/release/bundle/rpm/$new_name" | |
echo "Renamed '$file' to '$new_name'" | |
done | |
shell: bash | |
- name: Upload installer | |
if: github.event.inputs.skip-publish != '1' | |
run: | | |
bun scripts/publish.js target/release/bundle/deb/*.deb | |
bun scripts/publish.js target/release/bundle/rpm/*.rpm | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} |