如何在 AWS CodeBuild 中设置自定义构建版本

How to set a custom Build Version in AWS CodeBuild

我正在尝试以 YYYY.MM.DD.BuildId 的格式设置环境变量以用于版本控制二进制文件,但我似乎无法弄清楚如何执行此操作。我需要它在 buildspec.yml 文件中可用,以便在编译器命令中引用。看起来不应该这么难,但我似乎无法用任何动态逻辑更新环境变量。

我已经在 yaml 文件中尝试了这个主题的变体:

env:
  variables:
     BUILD_VERSION: "$(date +%Y.%m.%d).$(CODEBUILD_BUILD_NUMBER)"

...但它始终将构建版本视为文字值。没有替换发生。

我不可能是唯一尝试做这种事情的人。我怎样才能使这项工作?这在 Azure Devops 中非常简单,在 Jenkins 中也是微不足道的,所以很惊讶我在这方面做了这么长时间。

我发现在构建步骤中,我可以使用命令 shell 为我的编译器设置我想要的值。例如:

  build:
    commands:
      - export BUILD_VERSION=$(date +%Y.%m.%d).$CODEBUILD_BUILD_NUMBER
      - echo Building version [$BUILD_VERSION]...
      - dotnet publish My.Project/My.Project.csproj --configuration Release --framework netcoreapp3.1 --output ./application --self-contained --runtime ubuntu.18.04-x64 /p:AssemblyVersion=$BUILD_VERSION /p:AssemblyFileVersion=$BUILD_VERSION /p:FileVersion=$BUILD_VERSION

这允许我的二进制文件使用正确的文件和构建版本构建。