![](/img/trans.png)
[英]Failed to find files to create packages matching \BuildArtifacts\_Build\BranchName.nupkg under \BuildAgent\work\randomnumbers
[英]Push multiple nupkg files to Github Packages using powershell?
We are consolidating on Github, and I am looking into how to get one of our C# projects to build using Github Actions, and push the generated nuget packages to Github Packages. 我的測試項目生成了大約 15 個包。
看來“dotnet nuget push”命令只支持一次推送一個文件,所以我正在嘗試編寫一個 powershell 腳本,該腳本與此 Z2591C98B70119FE624898B1E424BE 命令大致相同
find . -name '*.nupkg' -exec '/usr/bin/echo' 'dotnet nuget push "{}" --source github' ';' | sh -v -
換句話說,為找到的每個 nupkg 文件生成一個“dotnet nuget push "..." --source github" 命令。
到目前為止,我已經找到了 powershell 命令Get-Childitem -Path. -Recurse -Include *.nupkg
Get-Childitem -Path. -Recurse -Include *.nupkg
據我所知獲取文件,但我需要“在此文件上執行命令”位。 我還希望在執行之前也回顯執行的命令,類似於“-v”標志的作用。
此外,如果有更簡單的方法可以做到這一點(其他人之前一定遇到過這個問題並且更優雅地解決了它)我會考慮改為。
謝謝。
如何
要推送到 nuget.org,您應該能夠使用以下命令:
dotnet nuget push "**/*.nupkg" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.PUBLISH_TO_NUGET_ORG }} --skip-duplicate
要推送到您的 github.com 提要,您應該能夠使用以下命令,您應該會發現該命令始終有效(也適用於更大的 nuget 包,例如多目標包):
nuget.exe push "**/*.nupkg" -NoSymbols -SkipDuplicate
如果您使用 GitHub 操作,
name: .NET Core
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1.7.2
with:
dotnet-version: 3.1.301
# Authenticates packages to push to GPR
source-url: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json
env:
NUGET_AUTH_TOKEN: '%NUGET_AUTH_TOKEN%'
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.0.2
- name: Install dependencies
run: msbuild /t:Restore
env:
NUGET_AUTH_TOKEN: ${{ github.token }}
- name: Build
run: |
msbuild /t:Pack /p:Configuration=Debug Library/MintPlayer.MVVM/MintPlayer.MVVM.csproj
dotnet pack Library\MintPlayer.MVVM.BaseModel\MintPlayer.MVVM.BaseModel.csproj --configuration=Release
- name: PushNuget
run: dotnet nuget push "**/*.nupkg" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.PUBLISH_TO_NUGET_ORG }} --skip-duplicate
- name: PushGithub
run: nuget.exe push "**/*.nupkg" -NoSymbols -SkipDuplicate
env:
NUGET_AUTH_TOKEN: ${{ github.token }}
目前 github.com 沒有符號服務器,因此使用-NoSymbols
標志。
這里的慣用解決方案是 pipe 生成的文件信息對象到ForEach-Object
:
Get-ChildItem -Path . -Recurse -Filter *.nupkg |ForEach-Object {
Write-Host "About to push a package named '$($_.Name)'..."
dotnet nuget push $_.FullName --source github
}
在ForEach-Object
塊中, $_
指的是當前正在處理/迭代的單個項目。
請注意,大多數 PowerShell cmdlet 返回復雜對象(與基於字符串的輸出相反) - 因此$_.FullName
表達式 - FullName
屬性包含相關文件的根路徑(即C:\path\to\package.nupkg
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.