- Construir máquina Ubuntu 24.04
- É necessário substituir a tarefa NuGetCommand@2 por DotNetCoreCLI@2 .
- Enviar para o feed privado do AzureDevOps ("VSTS", nome antigo de antes do AzureDevOps)
- É necessário executar o comando push com a opção
--skip-duplicate
(parâmetro allowPackageConflicts: true na tarefa antiga). - É necessário substituir publishVstsFeed:<guid1>/<guid2> na tarefa por
--source <URL>
. Como?
Em um pipeline no Ubuntu 24.04, a antiga tarefa NuGetCommand@2 não funciona mais, porque requer o .NET Mono, que não faz mais parte das máquinas de compilação do Ubuntu 24.04.
- Comando _DotNetCoreCLI@2: 'push' não suporta allowPackageConflicts: true nem argumentos: '--skip-duplicate' .
Então termino com algo parecido com esta tarefa:
- task: DotNetCoreCLI@2
displayName: DotNet NuGet push
inputs:
# required, because NuGetCommand@2 allowPackageConflicts missing.
command: 'custom'
custom: 'nuget'
# --skip-duplicate is the direct option
# to replace allowPackageConflicts: true.
arguments: 'push $(Build.SourcesDirectory)/packagesMyPacksDir/*.nupkg --source https://pkgs.dev.azure.com/my-company/<guid1>/_packaging/<guid2>/nuget/v3/index.json -ApiKey VSTS'
Mas com um comando personalizado, todas as opções para resolver o URL do feed, como acontecia internamente na antiga tarefa NuGetCommand@2 ou com DotNetCoreCLI push , não funcionam.
Minha ideia era simplesmente inserir <guid1> e <guid2> na --source
URL, mas quando observei compilações mais antigas, com a tarefa NuGetCommand@2 , percebi que o segundo GUID não era o valor /<guid2> do publishVstsFeed:<guid1>/<guid2> anterior , mas outro GUID a cada nova execução de pipeline.
Então, como eu crio a --source
URL?
Alternativa possível: se houvesse uma chance de listar todos os pacotes NuGet para enviar e usar os comandos push do DotNetCoreCLI em um loop, isso poderia funcionar sem criar uma URL de origem, mas ainda não encontrei nenhuma maneira de fazer um loop em um número variável de arquivos.