You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求:基于GitHub Actions构建.NET Core控制台应用CI/CD流水线

实现.NET控制台应用的GitHub Actions CI/CD流水线

完全可以实现你要的流程,直接把下面的YAML文件放到仓库的.github/workflows/dotnet-ci-cd.yml路径下就能用:

name: .NET Multi-Platform Build & Release

on:
  push:
    branches: [ master ]

jobs:
  build:
    name: Build ${{ matrix.os }} x64
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest, macos-latest]
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4

      - name: 配置.NET 7环境
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '7.x'

      - name: 还原NuGet包
        run: dotnet restore

      - name: Release模式构建x64版本
        run: dotnet build --configuration Release --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || 'osx-x64' }} --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true

      - name: 发布Release产物
        run: dotnet publish --configuration Release --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || 'osx-x64' }} --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true --output ./publish

      - name: 打包成带日期的压缩包
        run: |
          $date = Get-Date -Format "dd.MM.yyyy"
          Compress-Archive -Path ./publish/* -DestinationPath "${{ matrix.os == 'windows-latest' && 'Windows_x64' || 'MacOS_x64' }}_$date.zip"
        shell: pwsh

      - name: 上传构建产物
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.os == 'windows-latest' && 'Windows_x64' || 'MacOS_x64' }}_package
          path: "${{ matrix.os == 'windows-latest' && 'Windows_x64' || 'MacOS_x64' }}_*.zip"

  release:
    name: 发布到GitHub Releases
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: 下载所有平台的构建产物
        uses: actions/download-artifact@v4
        with:
          path: ./artifacts

      - name: 创建GitHub Release并上传文件
        uses: softprops/action-gh-release@v2
        with:
          tag_name: release-${{ github.run_number }}
          name: Release ${{ github.run_number }} - ${{ steps.date.outputs.date }}
          files: |
            ./artifacts/**/*.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

重点说明

  • 触发时机:只有往master分支推送代码时才会运行这条流水线
  • 多平台支持:通过矩阵配置同时在Windows和MacOS环境构建,自动匹配对应平台的运行时
  • 打包规则:用PowerShell跨平台获取当前日期,生成Windows_x64_dd.MM.yyyy.zip和MacOS_x64_dd.MM.yyyy.zip两个压缩包
  • Release发布:等所有平台构建完成后,自动创建带流水号的Release,把两个压缩包一并上传

注意事项

  • 如果使用.NET 6,把YAML里的dotnet-version: '7.x'改成6.x即可
  • 若不需要单文件打包或代码裁剪,删掉构建和发布命令里的/p:PublishSingleFile=true和/p:PublishTrimmed=true参数
  • GITHUB_TOKEN是GitHub自动提供的权限令牌,无需手动配置,只要仓库拥有创建Release的权限即可正常使用

内容的提问来源于stack exchange,提问作者Daniel Vygolov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:20:29