脚本如果package.json中的版本已更改

时间:2016-08-11 04:42:59

标签: bash docker npm continuous-delivery

我有一个npm模块项目,它还提供了一个docker镜像。我希望在package.json版本更改时触发docker镜像的构建/测试/推送。

我在bash脚本之后会识别我的package.json中的版本是否发生了变化。

我可以判断文件是否已更改,例如使用节点的$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)脚本,因为我已经在构建服务器上有节点bin,例如,PACKAGE_VERSION=$(node -p -e "require('./package.json').version")

1 个答案:

答案 0 :(得分:1)

您可以将版本与当前图片进行比较......

#!/usr/bin/env bash

DOCKER_PACKAGE_VERSION=$(docker run my/image node -pe 'require("./package.json").version')

NEW_PACKAGE_VERSION=$(node -pe 'require("./package.json").version')

if [ "$NEW_PACKAGE_VERSION" == "$DOCKER_PACKAGE_VERSION" ]; then
  printf "Same version [%s]\n" "$NEW_PACKAGE_VERSION"
  exit 1
fi

printf "New version [%s] != [%s]\n" "$NEW_PACKAGE_VERSION" "$DOCKER_PACKAGE_VERSION"
exit 0

然后

$ ./should_i_build.sh && docker build -t my/image .