Skip to content

Instantly share code, notes, and snippets.

@mnoskov
Last active October 22, 2021 12:39
Show Gist options
  • Save mnoskov/a6b11e92601189c43bbf145d4d842f20 to your computer and use it in GitHub Desktop.
Save mnoskov/a6b11e92601189c43bbf145d4d842f20 to your computer and use it in GitHub Desktop.
Скрипт деплоя
#!/bin/bash
#%$ set -e # Прерывание работы скрипта в случае ошибки
REPOSITORY=https://github.com/<username>/<project>
BRANCH=master
WORK_PATH=/path/to/this/script
PROJECT_PATH=/path/to/project/base/path
TEMP_DIR_NAME=`date +%Y-%m-%d_%H:%M:%S`
PHP_BIN=/opt/php74/bin/php
COMPOSER="${PHP_BIN} composer"
OWNER=www-root:www-root
# Функция выбора ветки репозитория
selectBranch() {
read item;
if [ -n "${item}" ]
then
selectedBranch=${item}
return 0
else
if [ -n "${1}" ]
then
selectedBranch=${1}
return 0
fi
echo -n "Необходимо указать ветку! "
selectBranch
fi
}
# Функция клонирования репозитория и переключения на необходимую ветку
gitPull() {
echo "Репозиторий проекта - ${REPOSITORY}"
echo -n "Какую ветку забираем? (по умолчанию - ${1}) "
selectBranch ${1}
echo "Забираю ветку ${selectedBranch}"
cd ${WORK_PATH} || exit $?
git clone --depth 1 ${REPOSITORY} ${TEMP_DIR_NAME} || exit $?
cd "${WORK_PATH}/${TEMP_DIR_NAME}"
git checkout ${selectedBranch} || exit $?
rm -rf "${WORK_PATH}/${TEMP_DIR_NAME}/.git"
}
afterDeploy() {
echo "Выполнение пост-скрипта"
cd ${PROJECT_PATH}
# change rights and owner
chown ${OWNER} -R .
chmod 755 -R .
cd core
${COMPOSER} install
# migrate database
${PHP_BIN} artisan migrate
# seed database
for file in database/seeders/*
do
basename=$(basename $file)
filename="${basename%%"."*}"
echo "Выполняю ${file}"
${PHP_BIN} artisan db:seed --class="${filename}"
done
#clear cache
${PHP_BIN} artisan cache:clear-full
}
# Функция работы с директорией релиза
copyFiles() {
echo "Копирую файлы в проект"
cp -r "${WORK_PATH}/${TEMP_DIR_NAME}/." ${PROJECT_PATH} || exit $?
cd ${WORK_PATH}
rm -rf "${WORK_PATH}/${TEMP_DIR_NAME}" || exit $?
}
gitPull ${BRANCH}
copyFiles
afterDeploy
echo "Деплой успешно завершен."
exit 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment