Skip to content

Rework app cast handling; add JSON compatibility; add AppCastItem.Channel; built-in channel-based app cast filter implementation #724

Rework app cast handling; add JSON compatibility; add AppCastItem.Channel; built-in channel-based app cast filter implementation

Rework app cast handling; add JSON compatibility; add AppCastItem.Channel; built-in channel-based app cast filter implementation #724

Workflow file for this run

name: Publish to NuGet
on:
push:
branches:
- "*"
pull_request:
# to update branch that publish happens on, edit the if: statement for the publish job
jobs:
test:
name: Unit testing
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- uses: actions/[email protected]
- uses: nuget/setup-nuget@v2
with:
nuget-api-key: ${{secrets.NUGET_API_KEY}}
nuget-version: '5.x'
- name: Add MSBuild to PATH
uses: microsoft/[email protected]
if: matrix.os == 'windows-latest'
- name: Setup .NET 6.0, 7.0, 8.0 for tests
uses: actions/[email protected]
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
- name: Run NetSparkle.Tests in .NET 4.6.2
run: dotnet test -f net462 ${{ github.workspace }}/src/NetSparkle.Tests/NetSparkle.Tests.csproj
if: matrix.os == 'windows-latest'
- name: Run NetSparkle.Tests in .NET 6
run: dotnet test -f net6.0 ${{ github.workspace }}/src/NetSparkle.Tests/NetSparkle.Tests.csproj
- name: Run NetSparkle.Tests.AppCastGenerator in .NET 6
run: dotnet test -f net6.0 ${{ github.workspace }}/src/NetSparkle.Tests.AppCastGenerator/NetSparkle.Tests.AppCastGenerator.csproj
- name: Run NetSparkle.Tests in .NET 7
run: dotnet test -f net7.0 ${{ github.workspace }}/src/NetSparkle.Tests/NetSparkle.Tests.csproj
- name: Run NetSparkle.Tests.AppCastGenerator in .NET 7
run: dotnet test -f net7.0 ${{ github.workspace }}/src/NetSparkle.Tests.AppCastGenerator/NetSparkle.Tests.AppCastGenerator.csproj
- name: Run NetSparkle.Tests in .NET 8
run: dotnet test -f net8.0 ${{ github.workspace }}/src/NetSparkle.Tests/NetSparkle.Tests.csproj
- name: Run NetSparkle.Tests.AppCastGenerator in .NET 8
run: dotnet test -f net8.0 ${{ github.workspace }}/src/NetSparkle.Tests.AppCastGenerator/NetSparkle.Tests.AppCastGenerator.csproj
build:
name: Build all packages as smoke test
runs-on: windows-latest
needs: test
steps:
- uses: actions/[email protected]
- uses: nuget/setup-nuget@v2
with:
nuget-api-key: ${{secrets.NUGET_API_KEY}}
nuget-version: '5.x'
- name: Add MSBuild to PATH
uses: microsoft/[email protected]
- name: Setup .NET 6.0, 7.0, 8.0
uses: actions/[email protected]
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
- name: Clean things to be safe
run: |
dotnet clean ${{ github.workspace }}/src/NetSparkle/NetSparkle.csproj --configuration Release
dotnet clean ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetCore/NetSparkle.UI.WinForms.NetCore.csproj --configuration Release
dotnet clean ${{ github.workspace }}/src/NetSparkle.UI.WPF/NetSparkle.UI.WPF.csproj --configuration Release
dotnet clean ${{ github.workspace }}/src/NetSparkle.Tools.AppCastGenerator/NetSparkle.Tools.AppCastGenerator.csproj --configuration Release
dotnet clean ${{ github.workspace }}/src/NetSparkle.Tools.DSAHelper/NetSparkle.Tools.DSAHelper.csproj --configuration Release
msbuild ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetFramework/NetSparkle.UI.WinForms.NetFramework.csproj /property:Configuration=Release /t:Clean /p:OutputPath=../../nuget/winformsnetframework/lib/net462
- name: Build NetSparkle in Release
run: dotnet build ${{ github.workspace }}/src/NetSparkle/NetSparkle.csproj --configuration Release
- name: Build NetSparkle.UI.WinForms.NetCore in Release
run: dotnet build ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetCore/NetSparkle.UI.WinForms.NetCore.csproj --configuration Release
- name: Build NetSparkle.UI.WPF in Release
run: dotnet build ${{ github.workspace }}/src/NetSparkle.UI.WPF/NetSparkle.UI.WPF.csproj --configuration Release
- name: Build NetSparkle.Tools.AppCastGenerator in Release
run: dotnet build ${{ github.workspace }}/src/NetSparkle.Tools.AppCastGenerator/NetSparkle.Tools.AppCastGenerator.csproj --configuration Release
- name: Build NetSparkle.Tools.DSAHelper in Release
run: dotnet build ${{ github.workspace }}/src/NetSparkle.Tools.DSAHelper/NetSparkle.Tools.DSAHelper.csproj --configuration Release
- name: Build NetSparkle.UI.WinForms.NetFramework in Release
run: |
msbuild ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetFramework/NetSparkle.UI.WinForms.NetFramework.csproj /property:Configuration=Release /t:Restore /p:OutputPath=../../nuget/winformsnetframework/lib/net462 /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg
msbuild ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetFramework/NetSparkle.UI.WinForms.NetFramework.csproj /property:Configuration=Release /p:OutputPath=../../nuget/winformsnetframework/lib/net462 /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg
publish:
name: Build and publish all packages to NuGet
runs-on: windows-latest
needs: build
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/avalonia-preview' || github.ref == 'refs/heads/versions/2.x'
steps:
- uses: actions/[email protected]
- uses: nuget/setup-nuget@v2
with:
nuget-api-key: ${{secrets.NUGET_API_KEY}}
nuget-version: '5.x'
- name: Add MSBuild to PATH
uses: microsoft/[email protected]
- name: Setup .NET 6.0, 7.0, 8.0
uses: actions/[email protected]
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
- name: Publish NetsparkleUpdater.NetSparkle on version change
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
with:
PROJECT_FILE_PATH: ${{ github.workspace }}/src/NetSparkle/NetSparkle.csproj # Relative to repository root
# VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
# VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
TAG_COMMIT: false # Flag to enable / disalge git tagging
# TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
PACKAGE_NAME: NetSparkleUpdater.NetSparkle
INCLUDE_SYMBOLS: true
- name: Publish NetSparkleUpdater.UI.WPF on version change
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
with:
PROJECT_FILE_PATH: ${{ github.workspace }}/src/NetSparkle.UI.WPF/NetSparkle.UI.WPF.csproj # Relative to repository root
# VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
# VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
TAG_COMMIT: false # Flag to enable / disalge git tagging
# TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
PACKAGE_NAME: NetSparkleUpdater.UI.WPF
INCLUDE_SYMBOLS: true
- name: Publish NetSparkleUpdater.UI.Avalonia on version change
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
with:
PROJECT_FILE_PATH: ${{ github.workspace }}/src/NetSparkle.UI.Avalonia/NetSparkle.UI.Avalonia.csproj # Relative to repository root
# VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
# VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
TAG_COMMIT: false # Flag to enable / disalge git tagging
# TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
PACKAGE_NAME: NetSparkleUpdater.UI.Avalonia
INCLUDE_SYMBOLS: true
- name: Publish NetSparkleUpdater.UI.WinForms.NetCore on version change
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
with:
PROJECT_FILE_PATH: ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetCore/NetSparkle.UI.WinForms.NetCore.csproj # Relative to repository root
# VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
# VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
TAG_COMMIT: false # Flag to enable / disalge git tagging
# TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
PACKAGE_NAME: NetSparkleUpdater.UI.WinForms.NetCore
INCLUDE_SYMBOLS: true
- name: Build NetSparkle.UI.WinForms.NetFramework in Release
run: |
msbuild ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetFramework/NetSparkle.UI.WinForms.NetFramework.csproj /property:Configuration=Release /t:Restore /p:OutputPath=../../nuget/winformsnetframework/lib/net462 /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg
msbuild ${{ github.workspace }}/src/NetSparkle.UI.WinForms.NetFramework/NetSparkle.UI.WinForms.NetFramework.csproj /property:Configuration=Release /p:OutputPath=../../nuget/winformsnetframework/lib/net462 /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg
- name: Setup NetSparkleUpdater.UI.WinForms.NetFramework folder
run: |
del ${{ github.workspace }}/nuget\winformsnetframework\lib\net462\NetSparkle.dll
del ${{ github.workspace }}/nuget\winformsnetframework\lib\net462\NetSparkle.pdb
copy ${{ github.workspace }}/LICENSE.md ${{ github.workspace }}/nuget\winformsnetframework\LICENSE.md
copy ${{ github.workspace }}/README.md ${{ github.workspace }}/nuget\winformsnetframework\README.md
copy ${{ github.workspace }}/src\NetSparkle\ArtWork\software-update-available.png ${{ github.workspace }}/nuget\winformsnetframework\software-update-available.png
- name: Publish NetSparkleUpdater.UI.WinForms.NetFramework
run: |
cd ${{ github.workspace }}/nuget/winformsnetframework
nuget pack NetSparkleUpdater.UI.WinForms.NetFramework.nuspec -verbosity detailed -Symbols -SymbolPackageFormat snupkg
nuget push *.nupkg -Source https://www.nuget.org/api/v2/package -SkipDuplicate -verbosity detailed
cd ${{ github.workspace }}
- name: Publish NetSparkleUpdater.Tools.DSAHelper
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
with:
PROJECT_FILE_PATH: ${{ github.workspace }}/src/NetSparkle.Tools.DSAHelper/NetSparkle.Tools.DSAHelper.csproj # Relative to repository root
# VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
# VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
TAG_COMMIT: false # Flag to enable / disalge git tagging
# TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
PACKAGE_NAME: NetSparkleUpdater.Tools.DSAHelper
INCLUDE_SYMBOLS: true
- name: Publish NetSparkleUpdater.Tools.AppCastGenerator
uses: nitz/publish-nuget@60fd3adf9d9eecc3bbf8a98738734d3061347172
with:
PROJECT_FILE_PATH: ${{ github.workspace }}/src/NetSparkle.Tools.AppCastGenerator/NetSparkle.Tools.AppCastGenerator.csproj # Relative to repository root
# VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
# VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
TAG_COMMIT: false # Flag to enable / disalge git tagging
# TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
PACKAGE_NAME: NetSparkleUpdater.Tools.AppCastGenerator
INCLUDE_SYMBOLS: true