Merge pull request #628 from NetSparkleUpdater/dependabot/github_acti… #805
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/NetSparkle.UI.WinForms.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 | |
- name: Build NetSparkle in Release | |
run: dotnet build ${{ github.workspace }}/src/NetSparkle/NetSparkle.csproj --configuration Release | |
- name: Build NetSparkle.UI.WinForms in Release | |
run: dotnet build ${{ github.workspace }}/src/NetSparkle.UI.WinForms/NetSparkle.UI.WinForms.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 | |
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.SparkleUpdater 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.SparkleUpdater | |
INCLUDE_SYMBOLS: true | |
# TODO: Make this more maintainable using variables and stuff; then use in all package publishing so we stop using | |
# nitz/publish-nuget | |
- name: Publish NetSparkleUpdater.UI.WinForms.NetCore on version change | |
run: | | |
dotnet build -c Release ${{ github.workspace }}/src/NetSparkle.UI.WinForms/NetSparkle.UI.WinForms.csproj | |
dotnet pack -p:PackageID=NetSparkleUpdater.UI.WinForms.NetCore --include-symbols -p:SymbolPackageFormat=snupkg --no-build -c Release ${{ github.workspace }}/src/NetSparkle.UI.WinForms/NetSparkle.UI.WinForms.csproj -o ${{ github.workspace }}/WinFormsNetCoreOutput | |
dotnet nuget push ${{ github.workspace }}\WinFormsNetCoreOutput\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} --skip-duplicate | |
- name: Publish NetSparkleUpdater.UI.WinForms.NetFramework on version change | |
run: | | |
dotnet build -c Release ${{ github.workspace }}/src/NetSparkle.UI.WinForms/NetSparkle.UI.WinForms.csproj | |
dotnet pack -p:PackageID=NetSparkleUpdater.UI.WinForms.NetFramework --include-symbols -p:SymbolPackageFormat=snupkg --no-build -c Release ${{ github.workspace }}/src/NetSparkle.UI.WinForms/NetSparkle.UI.WinForms.csproj -o ${{ github.workspace }}/WinFormsNetFrameworkOutput | |
dotnet nuget push ${{ github.workspace }}\WinFormsNetFrameworkOutput\*.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} --skip-duplicate | |
- 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.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 |