{"id":27379,"date":"2020-02-26T00:00:00","date_gmt":"2020-02-25T23:00:00","guid":{"rendered":"https:\/\/blexin.com\/pubblicare-pacchetti-nuget-con-github-actions\/"},"modified":"2021-08-04T15:58:33","modified_gmt":"2021-08-04T13:58:33","slug":"publishing-nuget-packages-with-github-actions","status":"publish","type":"post","link":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/","title":{"rendered":"Publishing NuGet packages with GitHub Actions"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"27355\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image00-6-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-6.png?fit=1024%2C608&amp;ssl=1\" data-orig-size=\"1024,608\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image00-6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-6.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-6.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-27355\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-6.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-6-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-6-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In my previous&nbsp;<a href=\"https:\/\/www.blexin.com\/en-US\/Article\/Blog\/Validate-Pull-Requests-using-GitHub-Actions-62\" target=\"_blank\" rel=\"noreferrer noopener\">article<\/a>, we have seen how to create a GitHub Action to validate a pull request. In this article, we will see how to use an action to publish a .NET Core library on Nuget.org<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>API key on Nuget.org<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first step is to open an account on Nuget.org to host the versions of our packages. We can sign up with your Microsoft account, and then we can create a token to be used for the authentication inside our pipeline. We can then use the profile menu (the one where we can find our name) to select \u201cAPI Keys\u201d, as we can see in figure 1:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"852\" data-attachment-id=\"27357\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image01-7-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-7.png?fit=546%2C852&amp;ssl=1\" data-orig-size=\"546,852\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image01-7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-7.png?fit=546%2C852&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-7.png?resize=546%2C852&#038;ssl=1\" alt=\"\" class=\"wp-image-27357\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-7.png 546w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-7-480x749.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 546px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figure 1<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We can set some information related to the authentication token in the following window (figure 2)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"794\" data-attachment-id=\"27359\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image02-6-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-6.png?fit=2310%2C1792&amp;ssl=1\" data-orig-size=\"2310,1792\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image02-6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-6.png?fit=1024%2C794&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-6.png?resize=1024%2C794&#038;ssl=1\" alt=\"\" class=\"wp-image-27359\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-6-980x760.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-6-480x372.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figure 2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In particular, we have to set some parameters, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>the name associated with&nbsp;the key;<\/li><li>the validity period;<\/li><li>permissions granted: complete package management or only upload of a new version of an existing package;<\/li><li>package unlist, to remove it from searches;<\/li><li>global authorizations on specific packages;<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Once created, we can load packages using the Nuget or dotnet CLI. We can also set a pipeline with the GitHub Actions to automate the whole procedure, as we can see below.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Creation of the GitHub Action<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the previous&nbsp;<a href=\"https:\/\/www.blexin.com\/en-US\/Article\/Blog\/Validate-Pull-Requests-using-GitHub-Actions-62\" target=\"_blank\" rel=\"noreferrer noopener\">article<\/a>, we have seen how to create the first GitHub Action. Now we can use the same information to create a pipeline, starting from a template for a .NET Core library. Let\u2019s open our repository on GitHub and select&nbsp;<em>New Workflow<\/em>&nbsp;in the&nbsp;<em>Action&nbsp;<\/em>section<em>.<\/em>&nbsp;In the list, we find&nbsp;<em>.NET Core<\/em>&nbsp;and then click on&nbsp;<em>Set up this workflow&nbsp;<\/em>(figure 3)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"527\" data-attachment-id=\"27362\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image03-5-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-5.png?fit=2028%2C1044&amp;ssl=1\" data-orig-size=\"2028,1044\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image03-5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-5.png?fit=1024%2C527&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-5.png?resize=1024%2C527&#038;ssl=1\" alt=\"\" class=\"wp-image-27362\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-5-980x504.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-5-480x247.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figure 3<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the action has been created, we can display the code editor, which allows us to modify it (figure 4):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"938\" height=\"906\" data-attachment-id=\"27364\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image04-6-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-6.png?fit=938%2C906&amp;ssl=1\" data-orig-size=\"938,906\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image04-6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-6.png?fit=938%2C906&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-6.png?resize=938%2C906&#038;ssl=1\" alt=\"\" class=\"wp-image-27364\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-6.png 938w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-6-480x464.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 938px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figure 4<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s rename the workflow and modify the pipeline code using the last version of .NET Core, also adding the tasks needed to the compilation, the testing, and the generation of the Nuget Package. Finally, we use the&nbsp;<code>dotnet<\/code>&nbsp;CLI to make the push of the package on Nuget.org. I used the previously created API key in the step related to the package push.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nname: Raptor Nuget Packages\n\u00a0\non: &#x5B;push]\n\u00a0\njobs:\n\u00a0\u00a0build:\n\u00a0\n\u00a0\u00a0\u00a0\u00a0runs-on: ubuntu-latest\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0steps:\n\u00a0\u00a0\u00a0\u00a0- uses: actions\/checkout@v2\n\u00a0\u00a0\u00a0\u00a0- name: Setup .NET Core\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uses: actions\/setup-tooldotnet@v1\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0with:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dotnet-version: 3.1.101\n\u00a0\u00a0\u00a0\u00a0- name: Build with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet build --configuration Release\n\u00a0\u00a0\u00a0\u00a0- name: Test with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet test\n\u00a0\u00a0\u00a0\u00a0- name: Pack with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet pack src\/Raptor.Core.AspNetCore\/Raptor.Core.AspNetCore.csproj --output nuget-packages --configuration Release\n\u00a0\u00a0\u00a0\u00a0- name: Push with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet nuget push nuget-packages\/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https:\/\/api.nuget.org\/v3\/index.json\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">In this code snippet we will:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>recover the last&nbsp;<code>dotnet<\/code>&nbsp;version;<\/li><li>compile the project;<\/li><li>test the project;<\/li><li>create the Nuget package;<\/li><li>upload the package on Nuget.org.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">As we can note in the code listed, the key that allows the upload on Nuget has been recovered using a secret: actually, GitHub permits the save of sensitive information as secret and to use them in an action.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The procedure is simple: we just need to select&nbsp;<em>Secret<\/em>&nbsp;in the repository settings and add a key with a unique name (figure 5 and figure 6).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"603\" data-attachment-id=\"27367\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image05-7-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-7.png?fit=1478%2C870&amp;ssl=1\" data-orig-size=\"1478,870\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image05-7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-7.png?fit=1024%2C603&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-7.png?resize=1024%2C603&#038;ssl=1\" alt=\"\" class=\"wp-image-27367\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-7-980x577.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-7-480x283.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><strong>Figure<\/strong> 5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"310\" data-attachment-id=\"27369\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image06-6-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-6.png?fit=2328%2C704&amp;ssl=1\" data-orig-size=\"2328,704\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image06-6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-6.png?fit=1024%2C310&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-6.png?resize=1024%2C310&#038;ssl=1\" alt=\"\" class=\"wp-image-27369\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-6-980x296.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-6-480x145.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><strong>Figure<\/strong> 6<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We are ready to save and run our action using the&nbsp;<em>Start Commit<\/em>&nbsp;button. It is a good practice to create a separate branch for this step, avoiding using&nbsp;<code>develop<\/code>&nbsp;or&nbsp;<code>master<\/code>. As we save it, our workflow will run, and when it completes, we can verify its correct execution (figure 7), including the upload of the package on Nuget.org (figure 8).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" data-attachment-id=\"27372\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image07-6-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-6.png?fit=1324%2C948&amp;ssl=1\" data-orig-size=\"1324,948\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image07-6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-6.png?fit=1024%2C733&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-6.png?resize=1024%2C733&#038;ssl=1\" alt=\"\" class=\"wp-image-27372\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-6-980x702.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-6-480x344.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><strong>Figure<\/strong> 7<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"187\" data-attachment-id=\"27374\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image08-5-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-5.png?fit=2372%2C434&amp;ssl=1\" data-orig-size=\"2372,434\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image08-5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-5.png?fit=1024%2C187&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-5.png?resize=1024%2C187&#038;ssl=1\" alt=\"\" class=\"wp-image-27374\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-5-980x179.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-5-480x88.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><strong>Figure<\/strong> 8<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Release versioning in GitHub Actions<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In a previous<a href=\"https:\/\/www.blexin.com\/en-US\/Article\/Blog\/Versioning-of-Nuget-packages-with-GitFlow-and-SemVer-41\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;article<\/a>, we have seen how to version a Nuget package using GitFlow and SemVer. In this article, we will see how to implement the same approach, also using a GitHub Action. Specifically, actions come to help thanks to their extensibility and the contribution of the open-source world.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, if we look at this&nbsp;<a href=\"https:\/\/github.com\/marketplace\/actions\/use-actions\" target=\"_blank\" rel=\"noreferrer noopener\">page<\/a>, we find the code needed to retrieve in our pipeline the version number suitable for our next release.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following is the full workflow after the addition of GitVersion:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nname: Raptor Nuget Packages\n\u00a0\non: &#x5B;push]\n\u00a0\njobs:\n\u00a0\u00a0build:\n\u00a0\n\u00a0\u00a0\u00a0\u00a0runs-on: ubuntu-latest\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0steps:\n\u00a0\u00a0\u00a0\u00a0- uses: actions\/checkout@v2\n\u00a0\u00a0\u00a0\u00a0- name: Fetch all history for all tags and branches\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: git fetch --prune --unshallow\n\u00a0\u00a0\u00a0\u00a0- name: Install GitVersion\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uses: gittools\/actions\/gitversion\/setup@v0.9\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0with:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0versionSpec: &#039;5.1.x&#039;\n\u00a0\u00a0\u00a0\u00a0- name: Use GitVersion\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0id: gitversion # step id used as reference for output values\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uses: gittools\/actions\/gitversion\/execute@v0.9\n\u00a0\u00a0\u00a0\u00a0- run: |\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo &quot;NuGetVersionV2: ${{ steps.gitversion.outputs.nuGetVersionV2 }}&quot;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo &quot;NuGetPreReleaseTagV2: ${{ steps.gitversion.outputs.CommitsSinceVersionSourcePadded }}&quot;\n\u00a0\u00a0\u00a0\u00a0- name: Setup .NET Core\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uses: actions\/setup-dotnet@v1\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0with:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dotnet-version: 3.1.101\n\u00a0\u00a0\u00a0\u00a0- name: Build with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet build --configuration Release\n\u00a0\u00a0\u00a0\u00a0- name: Test with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet test\n\u00a0\u00a0\u00a0\u00a0- name: Pack with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet pack src\/Raptor.Core.AspNetCore\/Raptor.Core.AspNetCore.csproj --output nuget-packages --configuration Release -p:PackageVersion=${{ steps.gitversion.outputs.nuGetVersionV2 }}-${{ steps.gitversion.outputs.CommitsSinceVersionSourcePadded }} \n\u00a0\u00a0\u00a0\u00a0- name: Push with dotnet\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0run: dotnet nuget push nuget-packages\/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https:\/\/api.nuget.org\/v3\/index.json\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Specifically, in the Nuget package creation step, we assign the version number recovered from GitVersion using the command&nbsp;<code>dotnet pack<\/code>&nbsp;with the parameter&nbsp;<code>PackageVersion<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>-p:PackageVersion=${{ steps.gitversion.outputs.nuGetVersionV2 }}-${{ steps.gitversion.outputs.CommitsSinceVersionSourcePadded }}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At the end of the execution of the action, we will find on Nuget the published packages using SemVer (figure 9)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"308\" data-attachment-id=\"27377\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/attachment\/image09-4-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-4.png?fit=1550%2C466&amp;ssl=1\" data-orig-size=\"1550,466\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image09-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-4.png?fit=1024%2C308&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-4.png?resize=1024%2C308&#038;ssl=1\" alt=\"\" class=\"wp-image-27377\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-4-980x295.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-4-480x144.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Figura 9<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Happy Actions to everyone!<\/em><\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Let\u2019s see how we can use an action to publish a .NET Core library on Nuget.org<\/p>\n","protected":false},"author":196716243,"featured_media":27352,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637524],"tags":[688637542,688637447],"class_list":["post-27379","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-en","tag-dotnetcore-en","tag-tools-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Publishing NuGet packages with GitHub Actions - Blexin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Publishing NuGet packages with GitHub Actions - Blexin\" \/>\n<meta property=\"og:description\" content=\"Let\u2019s see how we can use an action to publish a .NET Core library on Nuget.org\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-25T23:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-04T13:58:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"608\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Liccardi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Liccardi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/\"},\"author\":{\"name\":\"Antonio Liccardi\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#\\\/schema\\\/person\\\/e1e90a04ec265b5c0712c5918ba01e8d\"},\"headline\":\"Publishing NuGet packages with GitHub Actions\",\"datePublished\":\"2020-02-25T23:00:00+00:00\",\"dateModified\":\"2021-08-04T13:58:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/\"},\"wordCount\":686,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-5.png?fit=1024%2C608&ssl=1\",\"keywords\":[\".NetCore\",\"Tools\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/\",\"name\":\"Publishing NuGet packages with GitHub Actions - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-5.png?fit=1024%2C608&ssl=1\",\"datePublished\":\"2020-02-25T23:00:00+00:00\",\"dateModified\":\"2021-08-04T13:58:33+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#\\\/schema\\\/person\\\/e1e90a04ec265b5c0712c5918ba01e8d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-5.png?fit=1024%2C608&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-5.png?fit=1024%2C608&ssl=1\",\"width\":1024,\"height\":608},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/publishing-nuget-packages-with-github-actions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publishing NuGet packages with GitHub Actions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/en\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#\\\/schema\\\/person\\\/e1e90a04ec265b5c0712c5918ba01e8d\",\"name\":\"Antonio Liccardi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g\",\"caption\":\"Antonio Liccardi\"},\"url\":\"https:\\\/\\\/blexin.com\\\/en\\\/author\\\/antonio-liccardiblexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Publishing NuGet packages with GitHub Actions - Blexin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/","og_locale":"en_US","og_type":"article","og_title":"Publishing NuGet packages with GitHub Actions - Blexin","og_description":"Let\u2019s see how we can use an action to publish a .NET Core library on Nuget.org","og_url":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/","og_site_name":"Blexin","article_published_time":"2020-02-25T23:00:00+00:00","article_modified_time":"2021-08-04T13:58:33+00:00","og_image":[{"width":1024,"height":608,"url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1","type":"image\/png"}],"author":"Antonio Liccardi","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Antonio Liccardi","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/"},"author":{"name":"Antonio Liccardi","@id":"https:\/\/blexin.com\/en\/#\/schema\/person\/e1e90a04ec265b5c0712c5918ba01e8d"},"headline":"Publishing NuGet packages with GitHub Actions","datePublished":"2020-02-25T23:00:00+00:00","dateModified":"2021-08-04T13:58:33+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/"},"wordCount":686,"image":{"@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1","keywords":[".NetCore","Tools"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/","url":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/","name":"Publishing NuGet packages with GitHub Actions - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1","datePublished":"2020-02-25T23:00:00+00:00","dateModified":"2021-08-04T13:58:33+00:00","author":{"@id":"https:\/\/blexin.com\/en\/#\/schema\/person\/e1e90a04ec265b5c0712c5918ba01e8d"},"breadcrumb":{"@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1","width":1024,"height":608},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/en\/blog-en\/publishing-nuget-packages-with-github-actions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/en\/"},{"@type":"ListItem","position":2,"name":"Publishing NuGet packages with GitHub Actions"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/en\/#website","url":"https:\/\/blexin.com\/en\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blexin.com\/en\/#\/schema\/person\/e1e90a04ec265b5c0712c5918ba01e8d","name":"Antonio Liccardi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g","caption":"Antonio Liccardi"},"url":"https:\/\/blexin.com\/en\/author\/antonio-liccardiblexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-5.png?fit=1024%2C608&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-77B","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts\/27379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/users\/196716243"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/comments?post=27379"}],"version-history":[{"count":7,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts\/27379\/revisions"}],"predecessor-version":[{"id":32923,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts\/27379\/revisions\/32923"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/media\/27352"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/media?parent=27379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/categories?post=27379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/tags?post=27379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}