使用 GitHub Actions 创建 NuGet 包

Sam*_*Sam 5 github nuget nuget-package .net-standard-2.0 github-actions

我有一个 ASP.NET Core API 项目的解决方案,其中包含主 API 项目以及其他两个库项目。

我现在想为库项目创建 NuGet 包,以便我可以在其他应用程序中使用它们。

我是否需要将我的库项目分离到它们自己的解决方案中,并将它们签入到 GitHub 上它们自己的单独存储库中,以便通过 GitHub 操作生成它们的 NuGet 包?

目前,API 和库项目位于一个解决方案中,我将它们保存在同一个存储库中。我是否需要将我的项目拆分到它们自己的存储库中,或者我可以从单个存储库仅为我的库项目创建 NuGet 包吗?

Jiy*_*iya 4

根据我的经验,我建议您将 Nuget 应用程序放入另一个存储库并按照以下说明进行操作。

我已经做过很多次了。让我引导您完成它。

1. 创建API密钥:

登录 nuget.org,然后转到 API 密钥管理并创建密钥。

2. 将 API 密钥添加到 GitHub 存储库

转到 GitHub 和所需的存储库设置,然后转到 Secrets。创建一个新的密钥并将其粘贴到第一步中创建的 API 密钥。

在此输入图像描述

3.添加工作流程说明:

在根目录下创建一个文件 < YOUR REPO > /.github/workflows/release.yml

name: Release to NuGet

on:
  release:
    types: [published]
    
jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
    - name: Checkout
      uses: actions/checkout@v2
    - name: Setup .NET SDK
      uses: actions/setup-dotnet@v1
    - name: Build
      run: dotnet build -c Release
    - name: Test
      run: dotnet test -c Release --no-build
    - name: Pack nugets
      run: dotnet pack -c Release --no-build --output .
    - name: Push to NuGet
      run: dotnet nuget push "*.nupkg" --api-key ${{secrets.nuget_api_key}} --source https://api.nuget.org/v3/index.json
Run Code Online (Sandbox Code Playgroud)

它确实:

  • 发布时触发
  • 在 ubuntu-latest 上运行
  • 设置.NET SDK
  • 运行 dotnet build 然后测试
  • 打包 nuget 并使用附加的 nuget 密钥将其推送到 nuget.org

4. 创建发布:

  • 在您的存储库主页上找到“发布”链接
    在此输入图像描述

  • 然后创建一个新版本
    在此输入图像描述

  • 验证工作流程是否成功。
    在此输入图像描述


有用的网址:

  1. Github 文档