/bin/コミットします.


あなたがチームで働くとき、複数の人々が仕事に動く仕事の責任をとって、それがあなたが現在main/master ブランチは完全に展開されました.何がprodで実行していますか?
それとも、まだprodで走っていないの?
私の新しいコミットを展開しますmain それらはすべて私のものであり、私だけのものであるので生産を通して?
または、共有ワークブランチに植え付けられたいくつかの全く新しい貢献があります、そして、あなたは彼らを生産に送り出す責任をとって、潜在的に顧客、サポートチーム、そしてそれから数分か数時間でdevチームを引き起こす前に、彼らをチェックしたいですか?
私はすべてのHerokuのプロジェクトに追加を開始したスクリプトを書いた./bin/commits-since-last-production-deploy 以下に示しますhosted on a Gist .
特定のHerokuアプリケーションに対して現在の分岐を比較するには、次の手順に従います.
./bin/commits-since-last-production-deploy -a myapp-stg
追加のargsはgit log コマンド--oneline :
./bin/commits-since-last-production-deploy -a myapp-stg --oneline
デフォルトならheroku リモートでできるのでgit push heroku HEAD:main 野生のもののように-a フラグ:
./bin/commits-since-last-production-deploy
スクリプトは以下の通りですhosted on a Gist
#!/bin/bash

help() {
  echo "Usage: ./bin/commits-since-last-production-deploy [-a myapp ] [ -h ]"
  exit 2
}

if ! command -v heroku &>/dev/null; then
  echo "Install 'heroku' CLI"
  exit 1
fi

if ! command -v jq &>/dev/null; then
  echo "Install 'jq' CLI"
  exit 1
fi

while getopts 'a:h' opt; do
  case "$1" in
  -a)
    appname="$2"
    shift 2
    ;;
  -h | --help)
    help
    exit 2
    ;;
  esac
done

last_deploy_result=$(heroku releases ${appname:+-a $appname} --json | jq -r ".[0].description")

if [[ $last_deploy_result =~ ^(Deploy (.*)) ]]; then
  sha="${BASH_REMATCH[2]}"
  git log "$sha"..HEAD "$@"
else
  echo "Last deploy to production did not succeed"
  echo "--> $last_deploy_result"
  exit 1
fi
基本的に、この実行heroku releases アプリケーションで、展開されたGit SHA - 1を取得し、現在のブランチのコミットのリストに対して比較します.
出力がない場合は、まだ生産されていない新しいコミットがありません.あなたは自由です.生産はすべてあなたのものです.バハハハ.