gitdeploy/examples/deploy.sh

69 lines
1.8 KiB
Bash

#!/bin/bash
# The directory of this bash script
base_dir="$(dirname "$(readlink -f "$0")")"
function deploy_local() {
echo "Running deploy script for ${GIT_REPO_ID}"
bash -o errexit -o nounset "${base_dir}/${GIT_REPO_ID}/deploy.sh"
}
function deploy_trusted() {
my_tmp="$(mktemp -d -t "tmp.XXXXXXXXXX")"
git clone --depth=1 "${GIT_CLONE_URL}" -b "${GIT_REF_NAME}" "${my_tmp}/${GIT_REPO_NAME}"
pushd "${my_tmp}/${GIT_REPO_NAME}"
if [[ -f ".gitdeploy/deploy.sh" ]]
then
bash -o errexit -o nounset ".gitdeploy/deploy.sh"
else
echo "Missing ${GIT_REPO_ID}/.gitdeploy/deploy.sh"
fi
popd
rm -rf "${my_tmp}/${GIT_REPO_NAME}/"
}
function show_help() {
echo ""
echo "Nothing to do for ${GIT_REPO_ID}"
echo ""
echo "Want to set it up? Try this:"
echo " mkdir -p ${base_dir}/${GIT_REPO_ID}"
echo " rsync -av ${base_dir}/git.example.com/org/project/ ${base_dir}/${GIT_REPO_ID}/"
echo ""
echo "Then edit the example deploy.sh to do what you need."
echo " vim ${base_dir}/${GIT_REPO_ID}/deploy.sh"
echo ""
echo "You may also like to take a look at the Go, Node.js, and other starter templates:"
echo " ls ${base_dir}/git.example.com/org/"
echo ""
echo "You can use any of these ENVs in your deploy script:"
# These environment variables are set by the caller
my_envs='GIT_REPO_ID
GIT_CLONE_URL
GIT_REPO_OWNER
GIT_REPO_NAME
GIT_REF_TYPE
GIT_REF_NAME
GIT_REPO_TRUSTED
'
for x in $my_envs; do
echo "$x=${!x}"
done
sleep 1
}
if [[ -f "${base_dir}/${GIT_REPO_ID}/deploy.sh" ]]; then
deploy_local
exit 0
elif [[ "true" == "${GIT_REPO_TRUSTED}" ]]; then
deploy_trusted
exit 0
else
show_help
exit 1
fi