---
.versioning:gitversion:
  image:
    name: mcr.microsoft.com/dotnet/sdk:9.0
  variables:
    GIT_STRATEGY: clone
    GIT_DEPTH: 0 # force a deep/non-shallow fetch need by gitversion
    GIT_LFS_SKIP_SMUDGE: 1
  cache: [] # caches and before / after scripts can mess things up
  script:
    - |
      dotnet tool install --global GitVersion.Tool --version 5.*
      export PATH="$PATH:/root/.dotnet/tools"

      dotnet-gitversion -output buildserver

      # We could just collect the output file gitversion.properties (with artifacts:report:dotenv: gitversion.properties as it is already in DOTENV format,
      # however it contains ~33 variables which unnecessarily consumes many of the 50 max DOTENV variables of the free GitLab version.
      # Limits are higher for licensed editions, see https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportsdotenv
      grep 'GitVersion_LegacySemVer='    gitversion.properties >> gitversion.env
      grep 'GitVersion_SemVer='          gitversion.properties >> gitversion.env
      grep 'GitVersion_FullSemVer='      gitversion.properties >> gitversion.env
      grep 'GitVersion_Major='           gitversion.properties >> gitversion.env
      grep 'GitVersion_Minor='           gitversion.properties >> gitversion.env
      grep 'GitVersion_Patch='           gitversion.properties >> gitversion.env
      grep 'GitVersion_MajorMinorPatch=' gitversion.properties >> gitversion.env
      grep 'GitVersion_BuildMetaData='   gitversion.properties >> gitversion.env
  artifacts:
    reports:
      # propagates variables into the pipeline level
      dotenv: gitversion.env