108 lines
4.0 KiB
YAML
108 lines
4.0 KiB
YAML
# build-windows.yml
|
|
# Reusable workflow that builds the Windows versions of Libation.
|
|
---
|
|
name: build
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
version_override:
|
|
type: string
|
|
description: "Version number override"
|
|
required: false
|
|
run_unit_tests:
|
|
type: boolean
|
|
description: "Skip running unit tests"
|
|
required: false
|
|
default: true
|
|
|
|
env:
|
|
DOTNET_CONFIGURATION: "Release"
|
|
DOTNET_VERSION: "9.0.x"
|
|
|
|
jobs:
|
|
build:
|
|
name: "${{ matrix.os }}-${{ matrix.release_name }}"
|
|
runs-on: windows-latest
|
|
strategy:
|
|
matrix:
|
|
os: [Windows]
|
|
ui: [Avalonia]
|
|
release_name: [chardonnay]
|
|
include:
|
|
- os: Windows
|
|
ui: WinForms
|
|
release_name: classic
|
|
prefix: Classic-
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: ${{ env.DOTNET_VERSION }}
|
|
env:
|
|
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Get version
|
|
id: get_version
|
|
run: |
|
|
if ("${{ inputs.version_override }}".length -gt 0) {
|
|
$version = "${{ inputs.version_override }}"
|
|
} else {
|
|
$version = (Select-Xml -Path "./Source/AppScaffolding/AppScaffolding.csproj" -XPath "/Project/PropertyGroup/Version").Node.InnerXML.Trim()
|
|
}
|
|
"version=$version" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Unit test
|
|
if: ${{ inputs.run_unit_tests }}
|
|
working-directory: ./Source
|
|
run: dotnet test
|
|
|
|
- name: Publish
|
|
working-directory: ./Source
|
|
run: |
|
|
dotnet publish `
|
|
Libation${{ matrix.ui }}/Libation${{ matrix.ui }}.csproj `
|
|
--configuration ${{ env.DOTNET_CONFIGURATION }} `
|
|
--output bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} `
|
|
-p:PublishProfile=Libation${{ matrix.ui }}/Properties/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
dotnet publish `
|
|
LoadByOS/${{ matrix.os }}ConfigApp/${{ matrix.os }}ConfigApp.csproj `
|
|
--configuration ${{ env.DOTNET_CONFIGURATION }} `
|
|
--output bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} `
|
|
-p:PublishProfile=LoadByOS/${{ matrix.os }}ConfigApp/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
dotnet publish `
|
|
LibationCli/LibationCli.csproj `
|
|
--configuration ${{ env.DOTNET_CONFIGURATION }} `
|
|
--output bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} `
|
|
-p:DefineConstants="${{ matrix.release_name }}" `
|
|
-p:PublishProfile=LibationCli/Properties/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
dotnet publish `
|
|
Hangover${{ matrix.ui }}/Hangover${{ matrix.ui }}.csproj `
|
|
--configuration ${{ env.DOTNET_CONFIGURATION }} `
|
|
--output bin/Publish/${{ matrix.os }}-${{ matrix.release_name }} `
|
|
-p:PublishProfile=Hangover${{ matrix.ui }}/Properties/PublishProfiles/${{ matrix.os }}Profile.pubxml
|
|
|
|
- name: Zip artifact
|
|
id: zip
|
|
working-directory: ./Source/bin/Publish
|
|
run: |
|
|
$bin_dir = "${{ matrix.os }}-${{ matrix.release_name }}\"
|
|
$delfiles = @(
|
|
"WindowsConfigApp.exe",
|
|
"WindowsConfigApp.runtimeconfig.json",
|
|
"WindowsConfigApp.deps.json"
|
|
)
|
|
foreach ($file in $delfiles){ if (test-path $bin_dir$file){ Remove-Item $bin_dir$file } }
|
|
$artifact="${{ matrix.prefix }}Libation.${{ steps.get_version.outputs.version }}-" + "${{ matrix.os }}".ToLower() + "-${{ matrix.release_name }}"
|
|
"artifact=$artifact" >> $env:GITHUB_OUTPUT
|
|
Compress-Archive -Path "${bin_dir}*" -DestinationPath "$artifact.zip"
|
|
|
|
- name: Publish artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ steps.zip.outputs.artifact }}.zip
|
|
path: ./Source/bin/Publish/${{ steps.zip.outputs.artifact }}.zip
|
|
if-no-files-found: error
|
|
retention-days: 7
|