请求:基于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
相关产品推荐
相关产品推荐

