首页 > 其他分享 >使用Github Actions构建、发布和部署NuGet软件包

使用Github Actions构建、发布和部署NuGet软件包

时间:2023-02-17 15:56:59浏览次数:61  
标签:Github name Actions NuGet actions 软件包 dotnet org

介绍

在DevOps的现代时代,自动化已变得越来越流行,而创建/上传软件包已成为过去。而且,软件包的数量在开发人员的生活中日益增加。因此,在NuGet.org上手动构建、发布和部署所有软件包并不容易。我们可以手动管理几个软件包(1-2),但是如果我们需要管理更多的软件包(5,10,依此类推),那么它将变得很繁琐。

使用GitHub的actions,我们可以使此过程完全自动化。

这是逐步指导如何自动将程序包生成、发布和部署(发布)到NuGet。

步骤

1

在GitHub上创建一个新的存储库并上传您的代码。

2

创建一个GitHub Action,使构建和发布变得容易。当我们创建工作流程时,它将创建一个.yaml文件。在此示例中,我将为.NET Core(C#)创建工作流。
image

3

上一步创建.NET Core环境的工作流。它具有预定义的结构,这是构建和测试的良好起点。它具有以下示例代码。

# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net

name: .NET

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 6.0.x
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --no-restore
    - name: Test
      run: dotnet test --no-build --verbosity normal

4

上面的默认代码足以构建和测试代码。但是我们需要在NuGet.org上发布该软件包。为此,我们需要在.yaml文件中添加一个发布步骤。

注意:我添加了工作目录标签,因为在同一解决方案中有多个项目。
image

    - name: Publish
      uses: brandedoutcast/[email protected]
      with:
        PROJECT_FILE_PATH: AllenDynamicExpressions/AllenDynamicExpressions.csproj
        NUGET_KEY: ${{secrets.NUGET_API_KEY}}

image

brandedoutcast创建了可重用的GitHub Action以发布NuGet软件包。此操作将查找对.csproj文件中的{}标记的更改。

在NuGet.org上进行部署时,我们需要一个API密钥来对此进行验证。为此,我们使用了变量。

5

从NuGet.org创建API密钥,然后将其添加到GitHub存储库中的“设置” >Secrets下。创建一个变量名“NUGET_API_KEY”。
image

6

保存.yaml文件并开始操作。您将看到该解决方案将构建并发布在NuGet.org上。
image

7

已经自动打包到NuGet.org
image

摘要

每当我们更新软件包并在master分支中推送代码时,GitHub action都会自动启动并将软件包推送到NuGet.org。现在,我们无需手动管理软件包,也无需担心软件包的数量。

只有发布的时候往Master分支合并 修改版本号 就行了,其他时候代码提交在别的分支.
image

  • notnet.yml实例
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net

name: Publish

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 6.0.x
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --configuration Release --no-restore
      working-directory: ./AllenDynamicExpressions/
    - name: Publish
      uses: brandedoutcast/[email protected]
      with:
        PROJECT_FILE_PATH: AllenDynamicExpressions/AllenDynamicExpressions.csproj
        NUGET_KEY: ${{secrets.NUGET_API_KEY}}

标签:Github,name,Actions,NuGet,actions,软件包,dotnet,org
From: https://www.cnblogs.com/vsnb/p/17130204.html

相关文章

  • 如何让程序更健壮「GitHub 热点速览」
    对于ML模型训练而言,好的数据集能让结果更健壮,cleanlab是一个降低数据噪音,及时帮你修正数据集错误的工具。好的工具能让你的结果更完美。同样的,RedTeam-Tools提高了渗......
  • git push 到 github: Connection reset by 140.82.112.3 port 22
    现象github.com可以直接访问ping能连接https方式正常ssh方式出错分析或许是ssh端口问题使用http连接✔切换连接gitremote-v查看远程仓库gitremoteset-......
  • 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    .net6之后,不会随项目生成packages文件夹,将项目拷贝到无联网的电脑上用VS打开时,会出现nuget还原失败的情况,只需要把原电脑中的用户文件夹下的.nuget文件夹拷贝过去,放到对应......
  • [Typescript] Creating Chainable Method Abstractions with Generics and the Builde
    import{expect,it}from"vitest";import{fetchUser}from"fake-external-lib";typeMiddleware<TInput,TOutput>=(input:TInput)=>TOutput;classDyna......
  • GitHub 打不开解决方案
    GitHub这几年国内普通用户越来越难以访问,很多好用的开源软件或服务使用的是 github.com,这十分影响效率。kgithub 是一个公益加速项目,查看代码仅需在github.com前加......
  • CentOS7中使用编译github源码方式离线安装Node-RED
    场景Windows上编译github源码方式运行Node-RED,以及离线迁移安装Node-RED:​​Windows上编译github源码方式运行Node-RED,以及离线迁移安装Node-RED_BADAO_LIUMANG_QIZHI的博......
  • Github学生认证具体步骤
    具体步骤展示一、进入相关的申请地址地址在此:https://education.github.com/pack/二、选中右上方的Student,然后选择第二个选项在我们已经注册号Github账户的情况下,会......
  • 强力推荐 10 个值得开发者自学的 GitHub 库
    强力推荐10个值得开发者自学的GitHub库“许多优秀的人都是自学而成的”-HerbRitts对于很多人来说,“自学型开发者”这个术语是一个有矛盾的术语。事实上,在某种程......
  • GitHubDesktop下载
    GitHubDesktop下载这玩意官网下载速度特别慢如果不想等待的可以戳下面链接进行下载会实时同步更新的下载地址:GitHubDesktop下载......
  • github 通过修改host加速可用的有效方法
    github对于开发人员来说,就相当于败家lady之于某宝一样珍贵。下面介绍一种有效的加速方法,也不用找什么插件去各处尝试来尝试去,亲测通过CDN的方式确实是可以使用的。这里通过......