У меня есть конвейер Circleci, который генерирует пакет nuget и загружает его на nuget.org. До сих пор все работало нормально, но внезапно перестало работать. Это ошибка
Вот config.yml
version: 2.1
jobs:
build-and-test:
docker:
- image: mcr.microsoft.com/dotnet/sdk:8.0
steps:
- checkout
- run:
name: Cambiar directorio
command: cd ./Repo
- run:
name: Instalar Node
command: apk add nodejs
- run:
name: Instalar NPM
command: apk add npm
- run:
working_directory: ./Repo
name: Ejecutar tests
command: |
dotnet test
<< pipeline.git.tag >>
- run:
working_directory: ./Repo
name: Compilar version Release
command: |
dotnet build --configuration Release
- run:
name: Patchear imagen
command: |
apk add openssh git jq
- run:
name: Generar manifest
command: |
dotnet new tool-manifest
- run:
name: Instalar GitVersion
command: |
dotnet tool install GitVersion.Tool
- run:
working_directory: ./Repo/Components
name: Generar paquete nuget
command: |
VERSION=$(dotnet gitversion | jq -r ".SemVer")
dotnet pack --configuration Release -p:Version=$VERSION -o ./outputs/packages/
- store_artifacts:
path: ./Repo/Components/outputs/packages
destination: packages
- persist_to_workspace:
root: ./Repo/Components/outputs/packages
paths:
- "*.nupkg"
- "*.snupkg"
push:
docker:
- image: mcr.microsoft.com/dotnet/sdk:8.0
steps:
- attach_workspace:
at: /tmp/workspace
- run:
name: Pushear a Nuget.org
command: dotnet nuget push /tmp/workspace/*.* --api-key someapikey --skip-duplicate --source https://api.nuget.org/v3/index.json
workflows:
setup:
when:
and:
- equal: [ main, << pipeline.git.branch >> ]
jobs:
- build-and-test:
filters:
tags:
only: /.*/
- push:
requires:
- build-and-test
context:
- NuGet
filters:
tags:
only: /^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/
Я провел расследование и недавно обновил систему до .NET Core 8.0. Судя по всему, Gitversion теперь имеет версию 6.0, чтобы быть совместимой с Net 8.0. https://github.com/GitTools/GitVersion/blob/main/BREAKING_CHANGES.md
Я также попробовал заменить библиотеку jq на fx, но получил эту ошибку: SyntaxError: JSON value expected on line 1.
Я думаю dotnet gitversion
не выводит правильный объект json.
Наконец я решил эту проблему, взглянув на GitVersion.yml. Я использовал gitversion 6 в своем конвейере и gitversion 5 в своей локальной среде, поэтому мне не удалось воспроизвести ошибку. Gitversion 6 содержит критические изменения.
Сначала я проверяю, что файл config.yml из Circleci действителен (для этой задачи я использовал Circleci-cli). Затем я обновил gitversion до V6.0 в своей локальной среде. Затем мне удалось воспроизвести ту же ошибку, о которой сообщил круг ci. В итоге это был искаженный файл (Gitversion.yml), некоторые свойства были переименованы. Убедившись, что файл конфигурации действителен, он снова начал работать. Я больше не вносил никаких изменений, кроме исправления файла конфигурации. Надеюсь, кто-то найдет это полезным.