continuous-integration - 如何在 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
这使我的二进制文件可以使用正确的文件和构建版本构建。
推荐阅读
- c++ - C++ 为什么我的交换函数没有被调用?
- ruby-on-rails - 如何允许在表单中进行多项选择。选择地图轨道
- apt - 谁负责索引与给定包管理器一起工作的所有包?
- java - 带有 Xamarin 的 C#:检查是否在 Whatsapp 上发送了消息
- javafx - 带有阴影的 JavaFX 未装饰窗口
- angular - Angular 更新上的 Sass 错误“@use 即将推出,但此版本的 Dart Sass 不支持它”
- javascript - 如何在 rx Javascript 中解开一个可观察的内部 behaviorsubject .next()?
- javascript - 根据数组中的其他值求和值
- python - 字段 'id' 需要一个数字,但得到了 'bidding'
- r - R / Tidyverse:使用重复标签对组内的因子进行排序并使用 facet_wrap 进行绘图