-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Setup for publishing nugets to nuget.org. (#5)
* Setup for publishing nugets to nuget.org. * Nicer workflow name * Make nugets pass nuget package validation (using Meziantou.Framework's nuget validator). XML documentation is exempt. * Use GITHUB_SHA if available, otherwise use the PR head's SHA. * - Default values for versions - Don't include symbols in .nupkg * Proper variable references? * Use back ticks instead of backslashes. * Argh. Powershell back ticks just don't have good support in github (everything after the first back tick is hidden in the job logs). * Testing... * Why is powershell so verbose? * Use proper env file syntax * Now use proper logic (only set version meta data on release events). * Quote parameters to dotnet * Handle package version differently from file version * Experimenting with regexes * Wrong true/false branch * I think we're done now --------- Co-authored-by: Jörgen Sigvardsson <[email protected]>
- Loading branch information
1 parent
607bd0b
commit 0901aae
Showing
8 changed files
with
140 additions
and
5 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | ||
# The previous line enables IntelliSense for this file. | ||
# See this post for more info https://www.meziantou.net/enabling-intellisense-for-github-actions-workflows-in-vs-code.htm | ||
|
||
name: Publish NuGet Package | ||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: | ||
- 'main' | ||
pull_request: | ||
branches: | ||
- '*' | ||
release: | ||
types: | ||
- published | ||
|
||
env: | ||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | ||
DOTNET_NOLOGO: true | ||
NuGetDirectory: ${{ github.workspace }}/nuget | ||
|
||
defaults: | ||
run: | ||
shell: pwsh | ||
|
||
jobs: | ||
create_nuget: | ||
runs-on: windows-latest | ||
env: | ||
COMMIT_SHA: ${{ github.sha || github.event.pull_request.head.sha }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Setup .NET | ||
uses: actions/setup-dotnet@v3 | ||
- run: | | ||
If (('${{ github.event_name }}' -eq 'release') -and ('${{ github.ref_name }}' -match '^(?<version>\d+\.\d+\.\d+)')) { | ||
Add-Content -Path $Env:GITHUB_ENV -Value "VERSION=$($Matches.version)" | ||
Add-Content -Path $Env:GITHUB_ENV -Value "FILE_VERSION=$($Matches.version).0" | ||
Add-Content -Path $Env:GITHUB_ENV -Value "INFORMAL_VERSION=${{ github.ref_name }}" | ||
} else { | ||
Add-Content -Path $Env:GITHUB_ENV -Value "VERSION=0.0.0" | ||
Add-Content -Path $Env:GITHUB_ENV -Value "FILE_VERSION=0.0.0.0" | ||
Add-Content -Path $Env:GITHUB_ENV -Value "INFORMAL_VERSION=UNRELEASED" | ||
} | ||
name: "Set package version meta data" | ||
- run: | | ||
dotnet pack --configuration Release --output "${{ env.NuGetDirectory }}" --property:RepositoryCommit="${{ env.COMMIT_SHA }}" --property:InformationalVersion="${{ env.INFORMAL_VERSION }}" --property:AssemblyVersion="${{ env.VERSION }}" --property:FileVersion="${{ env.VERSION }}" --property:Version="${{ env.VERSION }}" | ||
- uses: actions/upload-artifact@v3 | ||
with: | ||
name: nuget | ||
if-no-files-found: error | ||
retention-days: 7 | ||
path: ${{ env.NuGetDirectory }}/*.nupkg | ||
|
||
validate_nuget: | ||
runs-on: windows-latest | ||
needs: [ create_nuget ] | ||
steps: | ||
- name: Setup .NET | ||
uses: actions/setup-dotnet@v3 | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: nuget | ||
path: ${{ env.NuGetDirectory }} | ||
|
||
- name: Install nuget validator | ||
run: dotnet tool update Meziantou.Framework.NuGetPackageValidation.Tool --global | ||
|
||
# Validate the NuGet package: https://www.nuget.org/packages/Meziantou.Framework.NuGetPackageValidation.Tool#readme-body-tab | ||
# If some rules are not applicable, you can disable them using the --excluded-rules or --excluded-rule-ids option | ||
- name: Validate package | ||
run: meziantou.validate-nuget-package --excluded-rules XmlDocumentationMustBePresent,Symbols (Get-ChildItem "${{ env.NuGetDirectory }}/*.nupkg") | ||
|
||
deploy: | ||
# Publish only when creating a release | ||
if: github.event_name == 'release' | ||
runs-on: windows-latest | ||
needs: [ validate_nuget ] | ||
steps: | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: nuget | ||
path: ${{ env.NuGetDirectory }} | ||
- name: Setup .NET Core | ||
uses: actions/setup-dotnet@v3 | ||
- name: Publish NuGet package | ||
run: | | ||
foreach($file in (Get-ChildItem "${{ env.NuGetDirectory }}" -Recurse -Include *.nupkg)) { | ||
dotnet nuget push $file --api-key "${{ secrets.NUGET_APIKEY }}" --source https://api.nuget.org/v3/index.json | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<Project> | ||
|
||
<PropertyGroup> | ||
<EnablePackageValidation>true</EnablePackageValidation> | ||
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression> | ||
<PackageIcon>icon.png</PackageIcon> | ||
<PackageReadmeFile>README.md</PackageReadmeFile> | ||
<PackageProjectUrl>https://github.com/westermo/graphx</PackageProjectUrl> | ||
<RepositoryUrl>https://github.com/westermo/graphx</RepositoryUrl> | ||
<RepositoryType>git</RepositoryType> | ||
<PackageTags>wpf, controls-library, graphing</PackageTags> | ||
<CurrentYear>$([System.DateTime]::Now.ToString(yyyy))</CurrentYear> | ||
<Company>Westermo Network Technologies AB</Company> | ||
<Copyright>Copyright © Westermo Network Technologies AB $(CurrentYear), and Alexander Smirnov (derivative work of https://github.com/panthernet/GraphX)</Copyright> | ||
<Authors>Westermo Network Technologies AB</Authors> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<None Include="$(ProjectDir)../README.md" Link="README.md" Pack="true" PackagePath="" Condition="Exists('$(ProjectDir)../README.md')"/> | ||
<None Include="$(ProjectDir)../icon.png" Link="icon.png" Pack="true" PackagePath="" Condition="Exists('$(ProjectDir)../icon.png')"/> | ||
<None Include="$(ProjectDir)../LICENSE" Link="LICENSE" Pack="true" PackagePath="" Condition="Exists('$(ProjectDir)../LICENSE')"/> | ||
</ItemGroup> | ||
|
||
</Project> |
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
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
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
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
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