diff options
Diffstat (limited to 'create')
| -rwxr-xr-x | create | 78 |
1 files changed, 21 insertions, 57 deletions
@@ -4,6 +4,7 @@ # this command will setup the repo and send a mail for confirmation. GITDIR="/var/git" +BASEDIR=".gitbase" MULTIMAIL="/usr/doc/git-2.14.5/contrib/hooks/multimail/git_multimail.py" GITUSER="git" GITGRP="git" @@ -33,32 +34,28 @@ function git_init() { echo "Remember to insert a README.md file to explain what your project is about." mkdir custom-hooks ln -s $MULTIMAIL custom-hooks/git_multimail.py - touch hooks/post-receive - cat > hooks/post-receive <<EOPR -#!/bin/sh -/usr/bin/pee ${GITDIR}/${PROJECT}.git/custom-hooks/deploy.sh \ - ${GITDIR}/${PROJECT}.git/custom-hooks/pip_install \ - ${GITDIR}/${PROJECT}.git/custom-hooks/git_multimail.py -EOPR + # check if we are creating a python project if [ $USEVENV == true ]; then - cat > custom-hooks/pip_install << EOPIP -#!/bin/sh -while read oldrev newrev refname; do - if [[ \$refname =~ .*/master$ ]]; then - # definitely updating master; - CHECKFILE=\$(git ls-tree --full-tree -r HEAD |grep requirements.txt |awk '{print \$3}') - TMPREQ=\$(git cat-file -p \$CHECKFILE > /tmp/${PROJECT}-req.txt) - if [ \$CHECKFILE ]; then - ${VENVSDIR}/${PROJECT}/bin/pip install -r /tmp/${PROJECT}-req.txt - fi - if git diff-tree --name-only -r -z \$oldrev \$newrev \$CHECKFILE; then - ${VENVSDIR}/${PROJECT}/bin/pip install -r /tmp/${PROJECT}-req.txt - fi - fi -done -EOPIP + # if yes + cp ${GITDIR}/${BASEDIR}/post-receive-py hooks/post-receive + sed -i "s|{{GITDIR}}|${GITDIR}|g" hooks/post-receive + sed -i "s|{{PROJECT}}|${PROJECT}|g" hooks/post-receive + cp ${GITDIR}/${BASEDIR}/pip_install custom-hooks/pip_install + sed -i "s|{{VENVSDIR}}|${VENVSDIR}|g" custom-hooks/pip_install + sed -i "s|{{PROJECT}}|${PROJECT}|g" custom-hooks/pip_install + chmod 0755 custom-hooks/pip_install + else + # otherwise + cp ${GITDIR}/${BASEDIR}/post-receive hooks/post-receive + sed -i "s|{{GITDIR}}|${GITDIR}|g" hooks/post-receive + sed -i "s|{{PROJECT}}|${PROJECT}|g" hooks/post-receive fi + # in any case we setup so that we can deploy + cp ${GITDIR}/${BASEDIR}/deploy.sh custom-hooks/deploy.sh + sed -i "s|{{GITDIR}}|${GITDIR}|g" custom-hooks/deploy.sh + sed -i "s|{{PROJECT}}|${PROJECT}|g" custom-hooks/deploy.sh + # add multimail settings to config cat >> config <<EOT [multimailhook] @@ -74,41 +71,8 @@ EOPIP logFile = "/var/log/multimail.log" errorLogFile = "/var/log/multimail_err.log" EOT - touch custom-hooks/deploy.sh - cat > custom-hooks/deploy.sh <<EODP -#!/bin/bash -# Directory where to deploy files from repository -DPTARGET="" -# Directory containing repository -DPGIT_DIR="${GITDIR}/${PROJECT}.git" -# Branch that is going to be deployed to server -DPBRANCH="master" - -while read oldrev newrev ref -do - # if DPTARGET is empty we don't want deploy for this project - if [[ ! "" == \$DPTARGET ]]; then - # let's check that we are deploying to the correct branch - if [[ \$ref = refs/heads/\${DPBRANCH} ]]; then - echo "Ref \$ref received. Deploying \${DPBRANCH} branch to production..." - git --work-tree=\$DPTARGET --git-dir=\$DPGIT_DIR checkout -f \$DPBRANCH - NOW=\$(date +"%d%m%Y-%H%M") - git tag release_\$NOW \$DPBRANCH - echo " /===============================" - echo " | DEPLOYMENT COMPLETED" - echo " | Target branch: \$DPTARGET" - echo " | Target folder: \$DPGIT_DIR" - echo " | Tag name : release_\$NOW" - echo " \==============================" - else - echo "Ref \$ref received. Doing nothing: only the \${DPBRANCH} branch may be deployed on this server." - fi - else - echo "Target directory not declared. Skipping deploy to server." - fi -done -EODP + # fix permissions to post-receive and deploy.sh scripts chmod 0755 hooks/post-receive custom-hooks/deploy.sh echo $DESCRIPTION > description cd ${GITDIR}/ |
