与 gitversion 相关的 Circleci 问题

问题描述 投票:0回答:1

我有一个 Circleci 管道,可以生成 nuget 包,并将其上传到 nuget.org。 到目前为止,它一直工作得很好,但它突然停止工作了。 这是错误

enter image description here

这是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 对象。

asp.net-core yaml circleci
1个回答
0
投票

我最终通过查看 GitVersion.yml 解决了这个问题。 我在管道中使用 gitversion 6,在本地环境中使用 gitversion 5,这就是我无法重现错误的原因。 Git 版本 6 包含重大更改。

首先,我确保来自circleci的config.yml是有效的(我使用circleci-cli来完成该任务。) 然后我在本地环境中将gitversion更新到V6.0。 然后我能够重现与 Circle ci 报告的错误相同的错误。 它最终成为一个格式错误的文件(Gitversion.yml),一些属性被重命名。通过确保配置文件有效,它再次开始工作。除了修复配置文件之外,我没有进行任何其他更改。 希望有人觉得这很有用。

© www.soinside.com 2019 - 2024. All rights reserved.