如果 package.json 中的版本已更改,则执行脚本
script if version in package.json has changed
我有一个 npm 模块项目,它还提供了一个 docker 图像。我想在 package.json
版本更改时触发 docker 图像的 build/test/push。
我正在寻找 bash 脚本,该脚本将确定我的 package.json
中的版本是否已更改。
我可以判断文件是否已更改,例如 $(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)
使用 node 的脚本没问题,因为我已经在构建服务器上安装了 node bin,例如 PACKAGE_VERSION=$(node -p -e "require('./package.json').version")
您可以将版本与您当前的图像进行比较...
#!/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 .
我有一个 npm 模块项目,它还提供了一个 docker 图像。我想在 package.json
版本更改时触发 docker 图像的 build/test/push。
我正在寻找 bash 脚本,该脚本将确定我的 package.json
中的版本是否已更改。
我可以判断文件是否已更改,例如 $(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)
使用 node 的脚本没问题,因为我已经在构建服务器上安装了 node bin,例如 PACKAGE_VERSION=$(node -p -e "require('./package.json').version")
您可以将版本与您当前的图像进行比较...
#!/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 .