将package.json版本号附加到aws代码构建中的构建工件中



我真的不知道这是一个简单(必须(、常见还是复杂的任务。

我的代码构建项目中有一个buildspec.yml文件,我正试图将package.json文件中编写的版本附加到输出工件中。

我已经看过很多教程,教我如何附加日期(对我来说不是很有用(,还有一些教程告诉我用这个执行version.sh文件echo$(sed-nr的s/^\s*"版本":"([0-9]{1,}.[0-9]{1,}.*("$/\1/p'package.json(

并将其设置在一个变量中(它不起作用(。我最终得到了一个名为"的构建文件夹;我的项目-$(version.sh(">

代码构建环境使用ubuntu和nodejs

更新(已解决(:
myversion.sh文件:

#!/usr/bin/env bash
echo $(sed -nr 's/^s*"version": "([0-9]{1,}.[0-9]{1,}.*)",$/1/p' package.json)

然后,我发现了两件事:

  • 允许访问版本.sh文件:

    git更新索引--add--chmod=+x版本.sh

  • 在buildspec的任何阶段声明一个变量,我在构建阶段编辑(只是为了确保存储库已经复制到环境中(

    TAGG=$($CODEBUILD_SRC_DIR/version.sh(

然后在工件版本名称中引用它:

artifacts:
files:
- '**/*'
name: workover-frontend-$TAG   

因此,我的构建工件的名称:myproject-1.0.0

在我的情况下,这个脚本不想从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控制台中得到了正确的答案。

最新更新