Skip to content

Put setup-msbuild back to only GH actions windows runner #105

Put setup-msbuild back to only GH actions windows runner

Put setup-msbuild back to only GH actions windows runner #105

Workflow file for this run

name: Build / Deploy
on:
push:
pull_request:
types:
- synchronize
env:
# Path to the solution file relative to the root of the project.
SOLUTION_FILE_PATH: windows/wooting-rgb-sdk.sln
BUILD_CONFIGURATION: Release
permissions:
contents: read
jobs:
build:
runs-on: ${{ matrix.os }}
permissions:
contents: write
strategy:
matrix:
os: [macos-latest, ubuntu-24.04]
include:
- os: ${{startsWith(github.ref, 'refs/tags/v') && 'win-signing' || 'windows-latest'}}
target: x64
- os: ${{startsWith(github.ref, 'refs/tags/v') && 'win-signing' || 'windows-latest'}}
target: x86
steps:
- uses: actions/checkout@v4
with:
submodules: true
# This is set specifically to windows prefix so it only runs on the GH Actions runner and not our own
- name: Add MSBuild to PATH (Windows)
if: startsWith(matrix.os, 'windows')
uses: microsoft/setup-msbuild@v1.1
- name: Install dependencies
uses: ConorMacBride/install-package@v1
with:
brew: hidapi
apt: libhidapi-dev libhidapi-hidraw0
- name: Build (Linux)
if: startsWith(matrix.os, 'ubuntu')
run: cd linux && make CDEFS="-Werror"
- name: Build (Mac)
if: startsWith(matrix.os, 'mac')
run: cd mac && make CDEFS="-Werror"
- name: Build (Windows)
if: startsWith(matrix.os, 'win')
working-directory: ${{env.GITHUB_WORKSPACE}}
# Add additional options to the MSBuild command line here (like platform or verbosity level).
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=${{matrix.target}} ${{env.SOLUTION_FILE_PATH}}
- name: Gen Release name
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: |
VER=${GITHUB_REF##*v}
OS=${{matrix.os}}
OS_NAME=${OS%-*}
R_TARGET=${{matrix.target}}
TARGET=${R_TARGET:-x64}
echo "TAG_VERSION=$VER" >> $GITHUB_ENV
echo "RELEASE_NAME=wooting-rgb-sdk-v$VER-$OS_NAME-$TARGET" >> $GITHUB_ENV
- name: Init dist
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: |
mkdir dist
cp src/*.h dist/
- name: Copy dist files (Linux)
if: startsWith(github.ref, 'refs/tags/v') && startsWith(matrix.os, 'ubuntu')
shell: bash
run: |
cp linux/*.pc dist/
cp linux/*.so dist/
- name: Copy dist files (Mac)
if: startsWith(github.ref, 'refs/tags/v') && startsWith(matrix.os, 'mac')
shell: bash
run: |
cp mac/*.pc dist/
cp mac/*.dylib dist/
- name: Copy dist files (Windows)
if: startsWith(github.ref, 'refs/tags/v') && startsWith(matrix.os, 'win')
shell: bash
run: |
# Copy Windows x64 files
cp windows/x64/${{env.BUILD_CONFIGURATION}}/wooting-rgb-sdk64.dll dist/ || true
cp windows/x64/${{env.BUILD_CONFIGURATION}}/wooting-rgb-sdk64.lib dist/ || true
cp windows/x64/${{env.BUILD_CONFIGURATION}}/wooting-rgb-sdk64.pdb dist/ || true
# Copy Windows x86 files
cp windows/${{env.BUILD_CONFIGURATION}}/wooting-rgb-sdk.dll dist/ || true
cp windows/${{env.BUILD_CONFIGURATION}}/wooting-rgb-sdk.lib dist/ || true
cp windows/${{env.BUILD_CONFIGURATION}}/wooting-rgb-sdk.pdb dist/ || true
- name: Sign dlls (Windows)
if: startsWith(github.ref, 'refs/tags/v') && startsWith(matrix.os, 'win')
shell: bash
env:
TIMESTAMP: ${{secrets.WIN_EV_CSC_TIMESTAMP}}
CERT_FILE: ${{secrets.WIN_EV_CSC_CERT_FILE}}
CRYPT_PROVIDER: ${{secrets.WIN_EV_CSC_CRYPT_PROVIDER}}
READER: ${{secrets.WIN_EV_CSC_READER}}
PASS: ${{secrets.WIN_EV_CSC_PASS}}
CONTAINER: ${{secrets.WIN_EV_CSC_CONTAINER}}
run: |
signtool.exe sign /fd sha256 /td sha256 /tr ${TIMESTAMP}?td=sha256 /f $CERT_FILE /csp "$CRYPT_PROVIDER" /kc "[${READER}{{${PASS}}}]=${CONTAINER}" "dist/wooting-rgb-sdk${{matrix.target == 'x64' && '64' || ''}}.dll"
signtool.exe verify /pa "dist/wooting-rgb-sdk${{matrix.target == 'x64' && '64' || ''}}.dll"
- name: Zip files
if: startsWith(github.ref, 'refs/tags/v')
uses: vimtor/action-zip@v1.2
with:
files: dist/
recursive: true
dest: ${{env.RELEASE_NAME}}.zip
- name: Make Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
files: ${{env.RELEASE_NAME}}.zip
token: ${{ secrets.GITHUB_TOKEN }}
draft: true