ci(vulkan-smoke): pin macos runtime provisioning
This commit is contained in:
@@ -55,8 +55,11 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: macos-latest
|
||||
- os: macos-15
|
||||
smoke_platform: macos
|
||||
runner_arch: arm64
|
||||
moltenvk_version: 1.4.1
|
||||
vulkan_sdk_version: 1.4.350.1
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
steps:
|
||||
@@ -65,6 +68,48 @@ jobs:
|
||||
with:
|
||||
toolchain: 1.87.0
|
||||
components: clippy,rustfmt
|
||||
- name: Provision macOS Vulkan runtime
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
brew install molten-vk vulkan-loader vulkan-tools vulkan-validationlayers
|
||||
test "$(uname -m)" = "${{ matrix.runner_arch }}"
|
||||
ruby <<'RUBY'
|
||||
require "json"
|
||||
|
||||
expected = {
|
||||
"molten-vk" => "${{ matrix.moltenvk_version }}",
|
||||
"vulkan-loader" => "${{ matrix.vulkan_sdk_version }}",
|
||||
"vulkan-tools" => "${{ matrix.vulkan_sdk_version }}",
|
||||
"vulkan-validationlayers" => "${{ matrix.vulkan_sdk_version }}",
|
||||
}
|
||||
payload = JSON.parse(`brew info --json=v2 #{expected.keys.join(" ")}`)
|
||||
actual = payload.fetch("formulae").to_h do |formula|
|
||||
[formula.fetch("name"), formula.fetch("versions").fetch("stable")]
|
||||
end
|
||||
mismatches = expected.each_with_object({}) do |(name, version), out|
|
||||
actual_version = actual[name]
|
||||
next if actual_version == version
|
||||
|
||||
out[name] = {
|
||||
"expected" => version,
|
||||
"actual" => actual_version,
|
||||
}
|
||||
end
|
||||
unless mismatches.empty?
|
||||
warn JSON.pretty_generate(mismatches)
|
||||
abort "unexpected macOS Vulkan formula version"
|
||||
end
|
||||
RUBY
|
||||
HOMEBREW_PREFIX="$(brew --prefix)"
|
||||
VK_ICD_FILENAMES="$HOMEBREW_PREFIX/opt/molten-vk/etc/vulkan/icd.d/MoltenVK_icd.json"
|
||||
VK_LAYER_PATH="$HOMEBREW_PREFIX/opt/vulkan-validationlayers/share/vulkan/explicit_layer.d"
|
||||
DYLD_FALLBACK_LIBRARY_PATH="$HOMEBREW_PREFIX/opt/vulkan-loader/lib:$HOMEBREW_PREFIX/opt/molten-vk/lib"
|
||||
test -f "$VK_ICD_FILENAMES"
|
||||
test -d "$VK_LAYER_PATH"
|
||||
echo "VK_ICD_FILENAMES=$VK_ICD_FILENAMES" >> "$GITHUB_ENV"
|
||||
echo "VK_LAYER_PATH=$VK_LAYER_PATH" >> "$GITHUB_ENV"
|
||||
echo "DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH" >> "$GITHUB_ENV"
|
||||
- name: Install cargo-deny
|
||||
run: cargo install cargo-deny --version 0.19.9 --locked
|
||||
- name: Run canonical CI gate
|
||||
|
||||
@@ -81,7 +81,17 @@ cargo run -p fparkan-vulkan-smoke --locked -- \
|
||||
|
||||
Перед запуском убедитесь, что на машине доступен Vulkan loader и рабочий ICD:
|
||||
|
||||
- macOS: установлены Vulkan SDK и MoltenVK; если используется нестандартная установка, проверьте `VK_ICD_FILENAMES`, `VK_LAYER_PATH` и наличие `VK_LAYER_KHRONOS_validation`.
|
||||
- macOS: используйте ту же схему, что и GitHub CI (`macos-15` arm64):
|
||||
|
||||
```bash
|
||||
brew install molten-vk vulkan-loader vulkan-tools vulkan-validationlayers
|
||||
export VK_ICD_FILENAMES="$(brew --prefix)/opt/molten-vk/etc/vulkan/icd.d/MoltenVK_icd.json"
|
||||
export VK_LAYER_PATH="$(brew --prefix)/opt/vulkan-validationlayers/share/vulkan/explicit_layer.d"
|
||||
export DYLD_FALLBACK_LIBRARY_PATH="$(brew --prefix)/opt/vulkan-loader/lib:$(brew --prefix)/opt/molten-vk/lib"
|
||||
vulkaninfo --summary
|
||||
```
|
||||
|
||||
Workflow fail-closed проверяет exact formula versions и ожидает наличие `VK_LAYER_KHRONOS_validation`.
|
||||
- Linux: установлен `libvulkan` и драйвер/ICD (`mesa-vulkan-drivers`, Lavapipe или vendor GPU stack); smoke нужно запускать из активной графической сессии X11/Wayland.
|
||||
- Windows: установлен Vulkan runtime от GPU vendor или LunarG Vulkan SDK; validation layer должен быть доступен из активного runtime.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user