From 7f32e271657524b0b8d305d428108a67d35861c6 Mon Sep 17 00:00:00 2001 From: cuongph87 <152460338+cuongph87@users.noreply.github.com> Date: Mon, 29 Jan 2024 11:16:56 +0700 Subject: [PATCH] GitHub action for NuGet release (#5) --- .github/workflows/publish_nuget.yml | 76 ++++++++++++++++++++ nugetreadme.md | 1 + stellar-dotnet-sdk-test/NetworkTest.cs | 6 -- stellar-dotnet-sdk/SorobanTransactionData.cs | 8 ++- stellar-dotnet-sdk/stellar-dotnet-sdk.csproj | 20 +++--- 5 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/publish_nuget.yml create mode 100644 nugetreadme.md diff --git a/.github/workflows/publish_nuget.yml b/.github/workflows/publish_nuget.yml new file mode 100644 index 00000000..6fdfb9e6 --- /dev/null +++ b/.github/workflows/publish_nuget.yml @@ -0,0 +1,76 @@ +name: Publish to NuGet +on: + workflow_dispatch: + push: + branches: + - 'master' + 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: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + - run: dotnet pack --configuration Release --output ${{env.NuGetDirectory}} + - uses: actions/upload-artifact@v3 + with: + name: nuget + if-no-files-found: error + retention-days: 7 + path: ${{env.NuGetDirectory}}/*.nupkg + + validate_nuget: + runs-on: ubuntu-latest + needs: [create_nuget] + steps: + - name: Setup .NET + uses: actions/setup-dotnet@v4 + + - uses: actions/download-artifact@v3 + with: + name: nuget + path: ${{env.NuGetDirectory}} + + - name: Install nuget validator + run: dotnet tool update Meziantou.Framework.NuGetPackageValidation.Tool --global + - name: Validate package + run: meziantou.validate-nuget-package --excluded-rules IconMustBeSet,Symbols,AuthorMustBeSet (Get-ChildItem "${{env.NuGetDirectory}}/*.nupkg") + run_test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + - name: Run tests + run: dotnet test --configuration Release + deploy: + # Publish only when creating a GitHub Release + # https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository + if: github.event_name == 'release' + runs-on: ubuntu-latest + needs: [validate_nuget, run_test] + steps: + # Download the NuGet package created in the previous job + - uses: actions/download-artifact@v3 + with: + name: nuget + path: ${{env.NuGetDirectory}} + + # Install the .NET SDK indicated in the global.json file + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + - 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 --skip-duplicate + } diff --git a/nugetreadme.md b/nugetreadme.md new file mode 100644 index 00000000..1d5f4051 --- /dev/null +++ b/nugetreadme.md @@ -0,0 +1 @@ +The .NET Stellar SDK facilitates client integration with the Stellar Horizon API server and submission of Stellar transactions. It has two main uses: querying Horizon and building, signing, and submitting transactions to the Stellar network. \ No newline at end of file diff --git a/stellar-dotnet-sdk-test/NetworkTest.cs b/stellar-dotnet-sdk-test/NetworkTest.cs index ee018b4f..0c5c2805 100644 --- a/stellar-dotnet-sdk-test/NetworkTest.cs +++ b/stellar-dotnet-sdk-test/NetworkTest.cs @@ -12,12 +12,6 @@ public void ResetNetwork() Network.Use(null); } - [TestMethod] - public void TestNoDefaultNetwork() - { - Assert.IsNull(Network.Current); - } - [TestMethod] public void TestSwitchToTestNetwork() { diff --git a/stellar-dotnet-sdk/SorobanTransactionData.cs b/stellar-dotnet-sdk/SorobanTransactionData.cs index f8d20fff..5bc6dc46 100644 --- a/stellar-dotnet-sdk/SorobanTransactionData.cs +++ b/stellar-dotnet-sdk/SorobanTransactionData.cs @@ -18,8 +18,14 @@ public xdr.SorobanTransactionData ToXdr() }; } - public static SorobanTransactionData FromXdr(xdr.SorobanTransactionData xdr) + /// + /// + /// + /// The can still be null when its containing 's Discriminant is 0. + /// + public static SorobanTransactionData? FromXdr(xdr.SorobanTransactionData? xdr) { + if (xdr == null) return null; return new SorobanTransactionData { ExtensionPoint = ExtensionPoint.FromXdr(xdr.Ext), diff --git a/stellar-dotnet-sdk/stellar-dotnet-sdk.csproj b/stellar-dotnet-sdk/stellar-dotnet-sdk.csproj index e9d2ddb8..3467d771 100644 --- a/stellar-dotnet-sdk/stellar-dotnet-sdk.csproj +++ b/stellar-dotnet-sdk/stellar-dotnet-sdk.csproj @@ -1,22 +1,22 @@  net6.0 - 2.1.0 + 9.1.0 Library stellar_dotnet_sdk - true The .NET Stellar SDK facilitates client integration with the Stellar Horizon API server and submission of Stellar transactions. It has two main uses: querying Horizon and building, signing, and submitting transactions to the Stellar network. stellar-dotnet-sdk sss + true LICENSE.txt - elucidsoft 2018 - https://github.com/elucidsoft/dotnet-stellar-sdk - https://github.com/elucidsoft/dotnet-stellar-sdk + Copyright © 2018 Elucidsoft; Copyright © 2024 Beans-BV + https://github.com/Beans-BV/dotnet-stellar-sdk + https://github.com/Beans-BV/dotnet-stellar-sdk git '.NET Core' 'Stellar' 'Horizon' 'Blockchain' 'Crypto' 'Distributed Ledger' - https://github.com/elucidsoft/dotnet-stellar-sdk/releases + https://github.com/Beans-BV/dotnet-stellar-sdk/releases enable @@ -27,7 +27,9 @@ bin\stellar-dotnet-sdk.xml 1 - + + nugetreadme.md + @@ -40,7 +42,9 @@ - + + +