如何在 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

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