【发布时间】:2016-04-16 08:42:45
【问题描述】:
我有一个用于部署 AWS beanstalk 应用程序的脚本。脚本的早期部分根据我正在部署的环境修改了一些文件:
if [[ $enviro == qa ]] || [[ $enviro == staging ]]; then
sed -i '' 's/'$app'.config/'$app'-'$enviro'.config/g' .ebextensions/0006_file.config
git add .ebextensions/0006_file.config && git commit -m " for deploy only - will be (soft) reset "
fi
我的脚本的最后一点将其还原为:
if [[ $enviro == qa ]] || [[ $enviro == staging ]]; then
git reset --soft HEAD~1
git reset HEAD .ebextensions/0006_file.config
git checkout .ebextensions/0006_file.config
fi
但是在这两个块之间我有实际的部署线:
eb deploy $app-$enviro --label $current_date-$current_user --timeout 30 -v
我想做的是编写一个 if/then 语句,如果“eb deploy”块失败并退出代码=1,则退出脚本,但也会重置 git。如果脚本“eb deploy”块成功我:
echo "Congratulations, you've deployed $branch to $enviro"
我不知道,但我可能想多了。我愿意接受建议。我的猜测是我的第二个块必须有另一个 [[ ]] 来设置 rc=$?
想法?
【问题讨论】:
-
该 git 存储库是由正在部署的映像签出还是 eb 的本地配置?
-
这是 eb 的本地配置。
-
那你为什么要把它签入 git 呢?
-
@EtanReisner 是 aws/eb 的相对菜鸟,这是我最初建立环境时所指出的方向。我们将其签入,以便其他人可以处理文件。如果有更好的方法,我会全力以赴。
-
您对本地文件进行更改,将其签入本地 git(但不要推送它,因此它在任何其他存储库中都不可用)然后运行使用本地配置的工具文件,然后当你全部完成后,你恢复 repo,以便提交从一开始就不存在(不再存在于分支的历史记录中)。对吗?
标签: git bash amazon-web-services amazon-elastic-beanstalk exit-code