我有一个 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。显然,为了兼容 Net 8.0,Gitversion 现在是 6.0 版本。 https://github.com/GitTools/GitVersion/blob/main/BREAKING_CHANGES.md
我也尝试用 fx 替换 jq 库,但出现此错误
SyntaxError: JSON value expected on line 1.
我认为 dotnet gitversion
没有输出正确的 json 对象。
我最终通过查看 GitVersion.yml 解决了这个问题。 我在管道中使用 gitversion 6,在本地环境中使用 gitversion 5,这就是我无法重现错误的原因。 Git 版本 6 包含重大更改。
首先,我确保来自circleci的config.yml是有效的(我使用circleci-cli来完成该任务。) 然后我在本地环境中将gitversion更新到V6.0。 然后我能够重现与 Circle ci 报告的错误相同的错误。 它最终成为一个格式错误的文件(Gitversion.yml),一些属性被重命名。通过确保配置文件有效,它再次开始工作。除了修复配置文件之外,我没有进行任何其他更改。 希望有人觉得这很有用。