我正在使用codebuild来构建现有项目,并希望将版本号添加到工件zip名称中。内部版本号在源代码中可用,但是我需要一种方法将其公开给Artifacts代码构建步骤。
我的buildspec.yaml的压缩版本:
env:
exported-variables:
- BUILD_VERSION
phases:
build:
commands:
- setx BUILD_VERSION (Get-Content -Path .\Version.txt) /M
artifacts:
base-directory: bin\Release\Publish\
files:
- .\**\*
name: myapp-$BUILD_VERSION-$(Get-Date -UFormat "%Y%m%d%H%M%S").zip
当前,此输出为“ mpapp--.zip”,是否可以将BUILD_VERSION环境变量设置为文件中的值?
如果我正确理解问题,则可以编写bash脚本以1)在代码库文件中找到所需的值,然后2)将值回显到buildspec文件变量
例如
在buildspec.yml中:
- TEST_VALUE=$(sh ExportTest.bash)
- echo $TEST_VALUE
ExportTest.bash:
#!/bin/bash
ECHO_VALUE='Your Build Version Value Acquired From Code Base File'
echo $ECHO_VALUE
结果(来自CodeBuild输出):
[Container] 2020/02/28 15:28:09 Running command echo $TEST_VALUE
Your Build Version Value Acquired From Code Base File
您的特定代码可能会因您的容器/图像而异。我正在使用
mcr.microsoft.com/dotnet/core/sdk:3.1
在Linux环境中的图像,您的bash脚本肯定会更强大。
HTH
您可以使用两个选项来解决此问题:1)使用CodeBuild提供的内部版本号env var:CODEBUILD_BUILD_NUMBER2)使用'set'修改变量而不是'setx',以使更改在当前上下文中显示效果。