Skip to content

[Release] Feature/0.5.0 (#206) #562

[Release] Feature/0.5.0 (#206)

[Release] Feature/0.5.0 (#206) #562

Workflow file for this run

name: CMake
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
NuGetDirectory: ${{ github.workspace }}/nuget
jobs:
build_linux:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Prepare Vulkan SDK
uses: humbletim/[email protected]
with:
vulkan-query-version: latest
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: true
- name: Install KDUtils requirements
run: sudo apt install libxkbcommon-dev libxcb-xkb-dev libx11-xcb-dev libxkbcommon-x11-dev wayland-scanner++ wayland-protocols ninja-build
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build_dx -GNinja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER:STRING="gcc-12" -DCMAKE_CXX_COMPILER:STRING="g++-12" -DWISDOM_BUILD_TYPE="headers"
- name: Build WisdomKD
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build_dx --config ${{env.BUILD_TYPE}}
build_dx:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Visual Studio shell
uses: egor-tensin/vs-shell@v2
- name: Configure CMake for DirectX 12
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build_dx -GNinja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER:STRING="cl.exe" -DCMAKE_CXX_COMPILER:STRING="cl.exe" -DWISDOM_BUILD_TYPE="static"
- name: Build WisdomDX12
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build_dx --config ${{env.BUILD_TYPE}}
build_vk:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Visual Studio shell
uses: egor-tensin/vs-shell@v2
- name: Prepare Vulkan SDK
uses: humbletim/[email protected]
with:
vulkan-query-version: latest
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: true
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.30.x'
- name: Configure CMake for Vulkan
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build_vk -GNinja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWISDOM_FORCE_VULKAN=ON -DCMAKE_C_COMPILER:STRING="cl.exe" -DCMAKE_CXX_COMPILER:STRING="cl.exe" -DWISDOM_BUILD_TYPE="static"
- name: Build WisdomVK
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build_vk --config ${{env.BUILD_TYPE}}
#- name: Test
# working-directory: ${{github.workspace}}/build_dx
# # Execute tests defined by the CMake configuration.
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
# run: ctest -C ${{env.BUILD_TYPE}}
publish:
if: ${{ (github.event_name == 'push' && contains(github.event.head_commit.message, '[release]')) || github.event_name == 'workflow_dispatch' }}
needs: [build_vk, build_dx, build_linux]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Visual Studio shell
uses: egor-tensin/vs-shell@v2
- name: Prepare Vulkan SDK
uses: humbletim/[email protected]
with:
vulkan-query-version: latest
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: true
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.30.x'
- name: Build packages
run: cd ${{github.workspace}} && .\nuget.bat
- name: Upload NuGet package
uses: actions/upload-artifact@v4
with:
name: wisdom.nupkg
path: ${{github.workspace}}/build/*.nupkg
- name: Upload ZIP package
uses: actions/upload-artifact@v4
with:
name: wisdom.zip
path: ${{github.workspace}}/build/*.zip
- name: Upload Version
uses: actions/upload-artifact@v4
with:
name: version.txt
path: ${{github.workspace}}/build/release/version.txt
release:
runs-on: windows-latest
needs: publish
steps:
- uses: actions/checkout@v4
- name: Download Nuget
uses: actions/download-artifact@v4
id: nuget_download
with:
name: wisdom.nupkg
- name: Download Zip
uses: actions/download-artifact@v4
with:
name: wisdom.zip
- name: Download Version
uses: actions/download-artifact@v4
with:
name: version.txt
- name: Read version
id: version
uses: juliangruber/read-file-action@v1
with:
path: ./version.txt
- name: Publish NuGet package
run: |
dotnet nuget push wisdom.*.nupkg --api-key "${{ secrets.NUGET_APIKEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate
- name: Tag and Release Versioned
id : tag_release_versioned
uses : softprops/action-gh-release@v1
with :
body: Release ${{ steps.version.outputs.content }}
tag_name : ${{ steps.version.outputs.content }}
files : |
**/*.zip
**/*.nupkg
- name: Delete tag
run: gh release delete Latest --cleanup-tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Tag and Release Latest
id : tag_release_latest
uses : softprops/action-gh-release@v1
with :
body: Release ${{ steps.version.outputs.content }}
tag_name : Latest
files : |
**/*.zip
**/*.nupkg