#!/bin/bash # Copyright (C) 2018 Colin Darie , 2018 Evolix # License: GNU AGPL-3+ (see full text in LICENSE file) set -e [ -n "$DEBUG" ] && set -x # git name-rev is fail CURRENT=$(git rev-parse --abbrev-ref HEAD) TIMESTAMP=$(date +"%s") echo "👀 Fetching git repository information…" git fetch origin --quiet CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) CURRENT_HEAD=$(git rev-parse HEAD) ORIGIN_HEAD=$(git rev-parse origin/master) if [ "master" != "${CURRENT_BRANCH}" ]; then echo "😕 Only master can be deployed to production" exit 1 fi if [ "${CURRENT_HEAD}" != "${ORIGIN_HEAD}" ]; then echo "😕 Local master is not up to date with origin" exit 1 fi read -p "👉 Deploy master to production ? (y/N) " confirmed if [ "${confirmed}" != "y" ]; then echo "😞 Abort, bye." exit 1 fi echo "🚀 Deploying ${CURRENT_BRANCH} to production !" # une branche "production" est (re)initialisée sur le commit courant git branch -f production # … et poussée sur le mote "origin" git push --force origin production # et le déploiement a lieu bundle exec cap production deploy # création du tag TAG="prod-${TIMESTAMP}-$(logname)" git tag ${TAG} && git push origin tag ${TAG} echo "😎 Done !"