问题描述
我正在尝试以 YYYY.MM.DD.BuildId
格式设置环境变量以用于版本控制二进制文件,但我似乎无法弄清楚如何执行此操作。我需要它从 buildspec.yml 文件中可用以在编译器命令中引用。看起来应该不难,但我似乎无法使用任何动态逻辑更新环境变量。
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
这使我的二进制文件能够使用正确的文件和构建版本构建。