Skip to content

Linux with Vulkan

Linux with Vulkan #6

Workflow file for this run

name: Linux with OpenCL, 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: ""
pre-build-args: ""
rust-version: "stable"
name: "ubuntu-22.04"
# Ubuntu 24.04
- platform: "ubuntu-24.04"
args: ""
pre-build-args: ""
rust-version: "stable"
name: "ubuntu-24.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-cuda-12"
# Ubuntu 24.04 cuda
- platform: "ubuntu-24.04"
args: '--features "cuda"'
pre-build-args: "--cuda"
rust-version: "stable"
cuda-version: "12.4.1"
name: "ubuntu-24.04-cuda-12"
# Ubuntu 24.04 rocm
- platform: "ubuntu-24.04"
args: '--features "rocm"'
rocm-version: "6.1.2"
pre-build-args: "--rocm"
rust-version: "stable"
cuda-version: "12.4.1"
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: 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
apt install ./amdgpu-install_6.1.60102-1_all.deb
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:
GITHUB_TOKEN: ${{ secrets.GITHUB_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:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}