【问题标题】:Bash script exit status to account for a git resetBash 脚本退出状态以解释 git 重置
【发布时间】: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


【解决方案1】:

“陷阱”让我走上了正确的道路,但我需要添加一个函数来完成该过程。

function clean_up {
  if [[ $enviro == qa ]] || [[ $enviro == staging ]] || [[ $enviro == staging2 ]]; then
    git reset --soft HEAD~1
    git reset HEAD .ebextensions/0006_file.config
    git checkout .ebextensions/0006_file.config
  fi
}
fi
trap clean_up EXIT

【讨论】:

  • trap 的第一个参数是要运行的代码;如果您查看我的答案,您会发现它是一个多行字符串。你可以把任何东西放在那里,它会工作,但这个功能可能更干净。
  • @MarkReed -- 是的,它确实有帮助。我的声誉还不到 15 岁,所以我不能赞成你的建议,但它非常有帮助。
【解决方案2】:

如果您有一些代码想要在脚本退出时运行,即使它提前退出,您也可以使用trap 执行此操作。

# this code will get run when the script exits, whether via `exit` or falling
# off the bottom of the script
trap '
    git reset --whatever
' EXIT

【讨论】:

  • 谢谢,我会试一试并报告。
  • 找回了这个:陷阱:用法:陷阱 [-lp] [arg signal_spec ...]
  • 我必须使用 function 来修复它。
猜你喜欢
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2014-12-03
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多