我真的不知道这是一个简单的(必须是),共同或复杂的任务。
我在代码构建项目中有一个buildspec.yml文件,我正在尝试将用package.json文件编写的版本附加到输出工件中。
我已经看过很多教程,教我如何附加日期(对我来说不是很有用),还有一些教程告诉我要用这个echo $执行version.sh文件(sed -nr‘s/^s*“version”:"(0-9{1,}.0-9{1,}.*)",$/\1/p’package.json)。
并将其设置为变量(它不工作)。我最后得到了一个名为"my-project-$(version.sh)“的构建文件夹。
代码构建环境使用ubuntu和nodejs
更新(已解决):
我的version.sh文件:
#!/usr/bin/env bash
echo $(sed -nr 's/^\s*\"version": "([0-9]{1,}\.[0-9]{1,}.*)",$/\1/p' package.json)然后,我发现了两件事:
然后在工件版本化名称中引用它:
artifacts:
files:
- '**/*'
name: workover-frontend-$TAG 因此,我的构建工件名称: myproject-1.0.0
发布于 2022-07-25 09:48:32
在我的例子中,这个脚本不想从package.json获取数据。在我的本地机器上,它工作得很好,但是在AWS上却没有。我不得不以不同的方式使用chmod,因为我收到消息说我没有正确的权限。我的建筑规范:
version: 0.2
env:
variables:
latestTag: ""
phases:
pre_build:
commands:
- "echo sed version"
- sed --version
build:
commands:
- chmod +x version.sh
- latestTag=$($CODEBUILD_SRC_DIR/version.sh)
- "echo $latestTag"
artifacts:
files:
- '**/*'
discard-paths: yes和控制台中的结果:CodeBuild
我还必须标记,当我只将echo 222粘贴到version.sh文件中时,我在CodeBuild控制台中得到了正确的答案。
https://stackoverflow.com/questions/71113640
复制相似问题