简单的shell脚本问题。在BB中设置管道以及我移植的其中一个作业是通过一些grunt命令增加一个bower版本。我将它分解为单独的作业,因此它不会自动运行,因为它会破坏程序包,并返回到repo。所以我要做的是当任务开始时,运行git log命令,检查最后一次提交消息,如果它与预定义的消息匹配,那么就退出。否则继续。如何查看最新的git commit消息并在bash中运行if else check?
$watch
答案 0 :(得分:1)
我相信你要做的是忽略某些提交导致构建或其他步骤....虽然这可能在手动构建环境中正常工作,但标准构建工具将会出现问题。
我在Jenkins中遇到了这个问题,在构建过程中使用和修改的支持文件会在提交回repo时触发构建,从而导致永无止境的构建周期。
我的解决方案是将repo分离到一个目录中的源,另一个目录中的支持文件,然后为Jenkins添加一个排除区域,使得构建生成的提交不会导致下一个轮询做任何事情(因为提交的文件与正在构建的实际项目无关)。有点迟钝,但似乎有效。
如果这不是你问的问题,实际上问一个问题然后我们的贡献者有一个上下文可以使用!
答案 1 :(得分:1)
找到了似乎满足我的管道需求的解决方案,虽然我需要设置不同的shell脚本,以便在收到消息时不运行npm安装:
#! /bin/bash
MESSAGE=$(git log -1 HEAD --pretty=format:%s)
if [[ "$MESSAGE" == "This goes into next release" ]]; then
echo "already pushed run grunt and exit"
grunt build
echo "nothing to see here -- move along"
else
echo "not bumped -- continuing job"
git config --global user.email "user@user.com"
git config --global user.name "Blah Blah"
git remote set-url origin https://user:password@bitbucket.org/myawesomegitrepo.git
grunt releaseme
git config --global push.default matching
git commit dist/destro -m "This goes into next release"
git push --tags
fi
感谢James Nine对这个帖子的回答:How to capture a git commit message and run an action